J9集团

  • Modelb@nk5.0未来银行架构
  • “乾坤”企业级数智底座
  • 平台级产品
  • AI+金融解决规划
  • 银行行业解决规划
  • 其它沉要行业解决规划
银行行业解决规划
  • 主题利用产品族

    聚焦主题业务系统建设 ,支持数字化转型

  • 云推算产品族

    提供云原生架构解决规划

  • 数据智能产品族

    以数据中台为主题的数据全性命周期产品

  • 智能银行(网点)产品族

    覆盖智能风控、远程视频银行等场景化产品

  • 数字金融产品族

    通过盛开银行等延长互联网金融产品

  • 信贷治理产品族

    覆盖信贷全流程 ,助力普惠金融

  • 风险治理产品族

    提供信誉风险与本钱计量产品

  • 科技监管产品族

    聚焦监管合规 ,强化金融系统安全性

其它沉要行业解决规划
  • 金融信创

    散布式主题系统国产适配 ,构建金融安全底座

  • 行业信创

    全栈式信创云平台 ,驱动多行业自主可控

  • 基于云原生的智能服务

    云原生+AI驱动 ,全栈式火速部署与智能运维

  • 量子通讯

    量子密钥分发技术 ,构建金融级安全通讯网络

  • 农业村落场景金融

    数字技术赋能农业产融 ,构建智慧村落生态

  • 中幼微场景金融

    大数据风控+线上化服务 ,破解幼微融资难题

  • 数字供给链金融

    区块链+AIoT技术整合 ,优化产融协同效能

  • 数字人民币场景利用

    智能合约+多载体支付 ,拓展消费场景

  • 征询规划
  • 行业数字化转型
  • 软件及服务
征询规划
  • 金融征询服务

    面向银行11大领域32个征询产品

  • 业务征询

    数字化战术、经营造模、零售与绿色信贷征询

  • 数字化征询

    科技战术与系统群架构及治理研发规划等

  • 数据治理征询

    企业整体战术导向全局数据治理与利用规划

  • PMO治理征询

    萦绕项目进行全性命周期管控与专家赋能

  • 金融信创征询

    3-5年信创工作整体规划造订

行业数字化转型
  • 企业AI利用场景解决规划(建设中)

    泛行业AI数智化解决规划

  • 企业IT治理服务产品族

    散布式架构+智能运维平台 ,全性命周期IT治理

  • 企业IT治理服务解决规划

    丰硕的IT治理解决规划 ,保险业务陆续性

  • 企业数字化转型服务

    科研知识产权规划 ,提升全性命周期治理能力

  • 工业数字化转型服务

    工业智能体+物联网优化出产 ,打造数智工厂

软件及服务
  • 研发治理及DevOps

    云原生+DevOps全性命周期平台

  • 自动化产品

    自动化建模、执杏注测试、业务流程自动化

  • 测试解决规划

    AI+TMMi赋能全性命周期测试 ,智能天生用例

  • 征询及表包

    全性命周期IT服务 ,PMO征询与行业级交付

首页- J9集团国际站官网入口
数字中国·星火文集 | Linux 内核深度分解——以Hello, world 为例
颁布功夫:2022-06-01

news_20220601_13_01

Linux 内核深度分解

——以Hello, world 为例

J9集团信息 工程院

刘清华

news_20220601_13_02

武侠的世界和法式员的世界是相通的 ,楚留香在对阵无花和尚时 ,无花和尚用了少林神拳 ,弹指神通等好几种威名赫赫的武功 ,而楚留香所用的招式却是江湖中最通常 ,最平庸的 ,江湖中也不知有几千几万人能施展这种招式。乔峰在聚贤庄只身战群雄 ,也是以太祖长拳这种武林中最通常的功夫对敌 ?杉Ψ蛑挥猩钋 ,却无高下。

由武侠的江湖转身回到二进造世界。在法式员的圈子 ,若说最常见、最风杏注所有人城市的法式 ,莫过于“Hello, world”了。

这个法式最初的版本呈此刻C Bible(The C Programming Language)中

法式很短 ,内容如下:

news_20220601_13_03

图一:Hello, world

通常所有的法式员都是从Hello, world 起头进建编程的 ,区别在于推算机说话分歧 ,

打印函数名称分歧。该法式的职能就是挪用打印函数在屏幕打印一行话“Hello, world”。

若是再深刻一点 ,printf是怎么实现的 ?为什么在terminal运行这个法式 ,就会在屏幕上打出Hello, world ?我们今天就聊聊若是我们自己写 ,该怎么做。

首先 ,我们分析printf函数 ,尝试着抽丝剥茧。

1. printf先整顿数据体式 ,最终形成一个蕴含打印数据的数组 ,并把指针传递到节造台法式。字符串我们依然能够以为是一个数组。这件事重要是通过挪用vsprintf函数来实现。例如参数传入的数字是不是要推算 ,推算后要转换成对应该实现的字符串。譬如若是是16进造暗示 ,那么16正本用十进造显示的是2个字符“16” ,换成16进造 ,就要显示4个字符“0x10” ,由于今上帝要思考是Hello, world。所以这个部门我们先跳过。

2. 在整顿完应该输出的字符串之后 ,printf就要挪用console_print函数了 ,这个是节造台函数 ,重要就是在屏幕上输出字符串 ,蕴含换杏注光标移动和定位等。这里console_print嵌入了一段涉及显示的汇编:

news_20220601_13_04

这段汇编重要职能就是把一个字符在指定的屏幕地位显示。这个指定的地位涉及到当前光标地点地位。而console_print使用while循环 ,将整个Hello, world显示出来。

3. 这段汇编为什么能够在屏幕上显示呢 ?这里就必要相识显示的驱动道理 ,单一的说 ,显示一个字符 ,必要显卡对于屏幕进行驱动 ,就是显卡通知屏幕该显示啥。但是显卡无从得知该在第几行第几列显示什么字符;蛘咚迪钥ㄕ媸档墓ぷ鞯览硎墙谠煸诘诩感械诩噶械哪歉鱿袼氐愀貌桓玫懔 ,若是是是非屏 ,那么就是0 ,1的区别 ,如第6行 ,第6列这个像素点重点亮 ,0是熄灭 ,1是点亮。那么显卡就必要三个参数(行数 ,列数 ,灭还是亮(0 ,1))。若是是彩色屏 ,再加上RGB的参数。

4. PC的编程 ,即便是linux系统的boot法式 ,也已经是相对进行了驱动简化 ,我们先从简化版起头说起 ,以上的汇编 ,其实是奉告了显示参数 ,具体要显示 ,还要挪用BIOS中断0x10 ,职能号ah = 0x13 ,显示字符串;al = 搁置光标的方式及属性。当把参数都配置好后 ,BIOS被挪用

int 0x10

OK, BIOS内嵌的法式把我们传递给它的参数:“Hello, world”在屏幕上显示了。

5. 这是PC的法式 ,BIOS就是内嵌在主板的通用驱动。如果我们自己设计了主板 ,使用的CPU是ARM ,也没有BIOS法式 ,必要我们自己写显卡驱动 ,怎么办 ?刚才我们已经单一介绍了LCD屏幕的显卡驱动道理 ,事实上 ,LCD的数据线就蕴含了杏注列地址线 ,节造线 ,数据线等。我们通过CPU的I/O口 ,输出地址给LCD模组 ,通知模组行 ,列别离是几多 ,输出数据 ,通知模组显示的是0 or 1(代表熄灭还是点亮)。这个时辰 ,我们就能够成功节造LCD 的 1个像素点 =谠1个像素点 ,输出不了Hello ,world啊。这里我们还必要字符的点阵库。下面是一个示意图:

news_20220601_13_05

图二:字符“A”点阵图

通过这个图 ,我们能够看到第三行0x10(0b00010000) ,其实就逐一对应着右侧第三行的LCD显示 ,一共8个点 ,每个点用1个bit暗示(0是熄灭 ,1是点亮)。这里就是A的最高的那个点。左侧的这组数据 ,就暗示A的16*8体式下的点阵字符。

6. 那么显示Hello ,world的第一个字符H ,就是先通知LCD模组 ,我要从第几行第几列起头显示 ,即显示肇始点 ,就是图二右侧的LCD的左上角那个点的地位。显示共16行8列 ,把这一块的LCD的哪些点给点亮 ,就能得到H了。以此类推 ,显示全数字符串。

7. 怎么通知LCD模组呢 ?PC用的是BIOS ,自己写驱动 ,就先写一个输出字符串的函数printk ,挪用一个自己写的LCD函数LCD_print ,给出字符串“Hello ,world”。LCD_print函数就从系统调取此刻的光标地位 ,得到显示字符的肇始点 ,而后凭据字符串 ,转换成ASIC II的编码 ,而后凭据码表数值 ,从点阵字库中获取到该字符所对应的点阵数组 ,有了地位 ,有了显示内容 ,逐行驱动 ,最终就在LCD上获得了“Hello, world”。

以上 ,概要论述了Hello, world法式的运行过程。涉及到的知识点如下:操作系统 kernel ,ASM汇编 ,C说话 , BIOS ,CPU架构及中断 ,LCD驱动 ,基础硬件设计。往深了说 ,还有过程切换实现方式 ,linux的多工作和;つJ。内核态和用户态的切换 ,等等。

若是持续引申 ,譬如从一个手机发送“hello ,world”到另表一台设备的屏幕进行显示。这就涉及到通讯和谈 ,若是数据是经过运营商网络的互联网数据 ,那么就会涉及到TCP/IP和谈的解析 ,TCP数据包的内容里还有私有和谈的解析。通讯链路还蕴含基站注册 ,心跳监测 ,长链接的保险 ,域名解析、IP地址及端标语。若是涉及到后盾云端部署 ,又涉及到云平台以及云存储。若是是内表网的隔离 ,那么还涉及到防火墙的成立 ,以及若何预防IP嗅探和DDOS攻击。若是是超过10万台手机同时发送 ,那就涉及到大数据及高并发处置 ,思考若何做负载平衡。若是超过1000万台手机 ,就涉及到CDN架构。若是手机发送的是一张手写的“Hello, world”的jpg图片 ,那么又涉及到OCR图像识此外人为智能技术。若是手机的图片必要存储 ,又涉及到散布式文件系统。若是显示终端不是直连运营商大网 ,而是和边缘网关短距无线或者有线直连 ,那么又涉及到边缘推算。

我们如果这么一个场景:手机APP发送一张图片到云端 ,云平台利用AI ?榧鸪鐾计谌菸“Hello ,world” ,而后在云端别离存储原始图片数据到HDFS ,存储字符串到MysqL。并且做好1主2备的Hadoop备份 ,同时思考服务器节点的主备切换。做完存储后云平台通过运营商网络 ,将字符串加密后发送到指定边缘网关 ,边缘网关解析完数据内容后 ,再经过防火墙 ,通过有线RS485的私有和谈 ,发送到指定的终端 ,最后 ,终端屏幕闪动着“Hello ,world”。这就是尺度的云管边端四层技术架构的物联网了。

所以 ,我们能够看到Hello, world是一个很值得深刻理解的法式 ,从月薪5000的应届毕业生 ,到年薪百万的架构师 ,我们都能够很愉快的聊一聊这个法式。若是有人对以上内容都很相识并纯熟利用 ,欢迎来到工程院物联网研发中心 ,我们这里一堆技术极客等待你的参与。

news_20220601_13_06

news_20220601_13_07

【网站地图】