Linux内核中的设施模型及SCSI示例解析

  • 电脑网络维修
  • 2024-11-14

关于配件架构

想要了解Linux操作系统的内核设施和驱动模型,***先了解一下如今计算机配件的架构。对计算机配件有必定了解之后,对了解Linux内核中的设施和驱动模型十分有协助。如图1是惯例计算机的配件架构简图。

图1 计算机配件架构简图

这外面须要重点了解的概念包括:总线、PCI桥和设施三个概念。咱们上方大略引见一下这几个概念的含意:

总线:咱们知道计算机通常包括几大件,CPU、内存、输入设施和输入设施等。这些设施之间启动通讯须要依赖一种通道,这个通道就是总线。说的直白写,总线就是传输数据的通道,可以类比日常生存中的马路,各个不同的市区经过马路来替换物资。总线有很多种,比如经常出现的PCI总线,ISA总线和I2C总线等等,咱们这里就不置信引见。

PCI桥:PCI桥是衔接PCI总线的纽带,其作用与网络畛域的网桥相似。其实咱们往常说的北桥,就蕴含PCI桥。PCI桥关键分3种,3种桥的详细含意如下:

HOST/PCI桥:提供CPU和PCI设施相互访问的通道,成功CPU空间和PCI空间的映射。

PCI-PCI桥:成功PCI设施的级联。

PCI/ISA或LPC桥:成功对ISA设施的兼容。

设施:设施就是详细的设施了,比如网卡、键盘和鼠标等等。

Linux中的设施软件模型

为了降落设施多样性带来的Linux驱动开发的复杂度,以及设施热拔插处置、电源治理等,Linux内核提出了设施模型(也称作DriverModel)的概念。设施模型将配件设施演绎、分类,而后形象出一套规范的数据结构和接口。驱动的开发,就简化为对内核所规则的数据结构的填充和成功。Linux中的软件概念与实践物理的概念有一个大抵的对应相关,在内核中相关的概念关键包括Bus、Device、DeviceDriver和Class等。上方是Linux对上述概念的引见:

Bus(总线):Linux以为(可以参考include/linux/device.h中structbus_type的注释)总线是CPU和一个或多个设施之间消息交互的通道。而为了繁难设施模型的形象,一切的设施都应衔接到总线上。Linux总线是在上述物理总线基础上做的形象,它可以对应物理总线,也可以没有对应物理总线。

Device(设施):形象系统中一切的配件设施,形容它的名字、属性、附属的Bus、附属的Class等消息。

DeviceDriver(驱动):Linux设施模型用Driver形象配件设施的驱动程序,它蕴含设施初始化、电源治理相关的接口成功。而Linux内核中的驱动开发,基本都围绕该形象启动(成功所规则的接口函数)。

Class(分类):在Linux设施模型中,Class的概念十分相似面向对象程序设计中的Class(类),它关键是汇合具有相似配置或属性的设施,这样就可以形象出一套可以在多个设施之间共用的数据结构和接口函数。因此附属于相反Class的设施的驱动程序,就不再须要重复定义这些公共资源,间接从Class中承袭即可。

设施模型的外围现实

前面引见了Linux的设施软件模型相关的概念,上方引见一下各种概念间的相关。关于Linux来说,其软件层面的模型与配件基本是分歧的。由图1,假设把CPU和内存开成一个树根的话,整个计算机的设施间的相关其实相似一个树,总线相似于树枝。Linux内核在详细成功的时刻也是依照此法令启动的,***层的是根总线(bus),而后是各种详细类型的总线(bus_type),而其下则是设施(device)。

图2 Linux内核驱动关键数据结构

如图2所示,Linux内核针对上方引见的概念,成功了详细的数据结构。数据结构的称号基本与配件类型称号分歧。比如bus_type示意某种类型的总线,device示意一个物理设施等。

设施和驱动: 用Device(struct device)和Device Driver(structdevice_driver)两个数据结构,区分从“有什么用”和“怎样用”两个角度形容配件设施。这样就一致了编写设施驱动的格局,使驱动开发从论述题变为填空体,从而简化了设施驱动的开发。

总线与设施: 经过"Bus-->Device”类型的树状结构处置设施之间的依赖,而这种依赖在开关机、电源治理等环节中尤为关键。

试想,一个设施挂载在一条总线上,要启动这个设施,必定先启动它所挂载的总线。很显然,假设系统中设施十分多、依赖相关十分复杂的时刻,无论是内核还是驱动的开发人员,都有力保养这种相关。

而设施模型中的这种树状结构,可以智能处置这种依赖相关。启动某一个设施前,内核会审核该设施能否依赖其它设施或许总线,假设依赖,则审核所依赖的对象能否曾经启动,假设没有,则会先启动它们,直到启动该设施的条件具有为止。而驱动开发人员须要做的,就是在编写设施驱动时,告知内核该设施的依赖相关即可。

类:经常使用Class结构,在设施模型中引入面向对象的概念,这样可以***限制地形象特性,缩小驱动开发环节中的重复休息,降落上班量。在Linux内核驱动中,类是对具有特性的设施的形象,比如显示设施类,音频设施类和SCSI设施类等等。比如SCSI设施类包括磁盘设施、光驱设施和USB设施等。

即插即用:在现代操作系统中即插即用成为常态,咱们个别PC的U盘、光驱等都是即插即用的。而关于企业级的主机甚至要求CPU和内存等组件都是可以即插即用的。

即插即用的成功雷同借用Device和Device Driver两个数据结构。在Linux内核中,只需任何Device和DeviceDriver具有相反的名字,内核就会口头Device Driver结构中的初始化函数(probe),该函数会初始化设施,使其为可用形态。

而对大少数热拔插设施而言,它们的DeviceDriver不时存在内核中。当设施没有拔出时,其Device结构不存在,因此其Driver也就不口头初始化操作。当设施拔出时,内核会创立一个Device结构(称号和Driver相反),此时就会触发Driver的口头。这就是即插即用的概念。

SCSI设施示例

SCSI设施是Linux内核中允许的泛滥设施中的一种。SCSI设施也遵照上方引见的设施、驱动和总线的结构,但略有不同。Linux内核中形象了一个称呼SCSI总线的虚构总线。而在SCSI总线上又蕴含SCSI的驱动和设施。

图3 SCSI体系结构

SCSI整个架构分为3层,其中两边是两边层,用于成功SCSI的公共配置,比如失误处置等。而上方一层称呼高层,它代表各种scsi设施类型的驱动,如scsi磁盘驱动,scsi磁带驱动,高层驱动认领低层驱动发现的scsi设施,为这些设施调配称号,将对设施的IO转换为scsi命令,交由低层驱动处置。而最上方的称呼底层,它代表与SCSI的物理接口的实践驱动器,关键为各个厂商为其特定的主机适配器(HostBus Adapter, HBA)驱动,例如: FC卡驱动、SAS卡驱动和iSCSI(iSCSI可以使配件HBA卡或许基于个别网卡的软件成功)等。

在图3中,DiskDriver就是一个SCSI磁盘驱动,经过该驱动对用户出现一个个别的磁盘。两边层的驱动是必定***个被内核加载的,假设编译成内核模块的话,该内核模块为scsi_mod。而后是下层的驱动和底层的驱动。以SCSI磁盘为例,加载的模块是sd_mod。

在SCSI中成功对应上述概念的结构体包括scsi_driver、scsi_device和SCSI类型的总线(bus)。其中SCSI类型的总线并没有定义一个特意的数据结构体,而是对bus_type数据结构的实例化。

须要说明的是关于SCSI设施,其成功又是比拟复杂的。咱们以光纤适配卡为例,其中一个适配卡又蕴含多个通路,而每个通路同网络的模式可以跟多个存储设施衔接。因此,关于SCSI设施来说,成功上要复杂很多。

图4 光纤适配卡

在内核中经过Scsi_Host、scsi_target等结构体示意上述概念。详细细节本文不再详述,前面咱们再详细引见SCSI体系架构、FC相关流程和iSCSI相关流程。

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/4392.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号