如何查询网站所有人,嘉兴做营销型网站,卖代码建设网站,广西公路建设协会网站IO体系结构 与外设通信通常称为输入输出#xff0c;一般缩写为I/O。在实现外设IO的时候#xff0c;内核必须处理三个可能出现的问题#xff1a;
必须根据具体的设备类型和模型#xff0c;使用各种方法对硬件寻址。内核必须向用户应用程序和系统工具提供访问各种设备的方法…IO体系结构 与外设通信通常称为输入输出一般缩写为I/O。在实现外设IO的时候内核必须处理三个可能出现的问题
必须根据具体的设备类型和模型使用各种方法对硬件寻址。内核必须向用户应用程序和系统工具提供访问各种设备的方法。但凡有可能都应当采用统一的方案确保程序设计的工作量不会过多同时保证应用程序能够在不考虑特定硬件方法的情况下进行互操作。用户空间需要知道内核中有哪些设备可用。
硬件设备可以以多种方式连接到主板上主板上的扩展槽或者外部连接器最常见的方法当然扩展硬件也可以直接集成到主板上。
系统总线 尽管外设的范围看上去是无线的但是他们不直接连接到CPU而是通过总线连接起来。总线负责设备与CPU之间及各个设备之间的通信。有代表性的总线有
PCIPeripheral Component InterconnectISAIndustrial Standard ArchitecutureSBusIEEE 1394SCSISmall Computer System InterfaceUSBUniversal Serial Bus并口与串口Parallel and Sreial Interface
与外设交互
与外设通信方法有几种方法可以与连接到系统的硬件通信
IO端口使用IA-32和很多其他体系结构都有IO端口在这种情况下内核发送数据给IO控制器。数据的目标设备通过唯一的端口号标识数据被传输到设备进行处理。处理器管理一个独立的虚拟地址空间可能用于管理所有IO地址。IO地址空间不关联到普通的系统内核。因为端口也可以映射到内存中这样会引起混淆。在IA-32体系结构上端口地址空间由2的16次方个不同的8位地址组成通过0x0到0xFFFF之间的数字唯一标识。IO内存映射程序员必须寻址很多设备与内存的处理方式类似。因此现在处理器提供对IO端口进行内存地址映射将特殊外设的端口地址映射到普通内存中。轮询和中断 轮询polling策略比较健达只需要重复询问设备数据是否可用如果可以则处理器取回数据中断策略比较好每个CPU都提供中断线可由各个系统设备共享每个中断通过唯一号码识别内核对使用每个中断提供一个服务例程。
通过总线控制设备
并非所有设备都是直接通过I/O语句寻址也有通过总线系统访问的。具体的方式与所使用的总线和设备相关。并非所有设备类别都可以连接到所有总线系统。比如将硬盘和CD记录机连接到SCSI接口但图形卡就行。
访问设备
设备特殊文件设备文件用于访问扩展设备。这些文件并不关联到硬盘或其他任何存储介质上的数据段而是建立了与某个设备驱动程勋的连接以支持与扩展设备的通信。
就应用程序而言普通文件和设备文件的处理有一定差别。二者都是可以通过同样的库函数处理。/dev目录下的一些成员特别在访问权限上访问之前的字母是b或c分别代表块设备和字符设备设备文件没有文件长度而是增加另外两个值分别是主设备号和次设备号。/dev/hda/dev/hdb/dev/sda/dev/sdbhda一般是IDE接口的硬盘sda一般是指sata接口的硬盘。热插拔消息每当内核检测到一个设备时都会创建一个内核对象kobject。该对象借助于sysfs文件系统导出用户到用户层内核还像用户空间发送一条热插拔消息。网卡和其他设备字符设备和块设备不是内核管理的全部设备类别。网卡在内核重具有特殊地位它无法融入到分类方案当中事实很明显网卡没有设备文件。相反用户程序必须使用套接字与网卡通信。套接字是一个抽象层对所有网卡提供抽象视图。标准库的网络相关函数调用socketcall系统调用与内核通信交互。进而访问网卡。 字符设备、块设备和其他设备
根据外设与系统之间交换数据的方法可以将设备分为几种类别。有些设备非常适合于面向字符的数据交换因为数据传输量很低。其他的设备则更适合于处理包含固定数目字节 的数据块。内核会区分字符设备和块设备。
字符设备与块设备
字符设备提供连续的数据流应用程序可以顺序读取通常不支持随机存取相反此类设备支持按字节/字符读取。比如调度解调器就是典型的字符设备。块设备应用可以随机访问设备数据程序自行确定数据的位置。比如硬盘就是块设备应用程序可以寻址磁盘上的任何位置并由此读取数据。
设备驱动程序
用于系统连接的输入/输出装置通信如硬盘软驱各种接口、声卡等。设备驱动程序的任务在于支持应用程序由设备文件与设备通讯是的能够按照适当方式在设备上读取/写入数据。
设备号
设备号就是系统分配一个编号设备号是一个无符号32位整数包括主设备号次设备号主设备号位高12位次设备号位低20位。
设备文件需要设备号才能创建设备驱动也需要设备号才能装载设备文件是通过主设备号找到它的驱动设备驱动利用次设备号才知道他要操作的是具体哪个设备。
设备文件查询
标识设备文件查询
ls -l /dev查询/dev目录中与sda硬盘相关的其他设备文件
ls -l /dev/sda*动态创建设备文件
/dev中的设备结点一般是在基于磁盘的文件系统中静态创建的。随着支持设备越来越多必须安置和管理越来越多的项典型发布版大约包含20000项。几乎所有的发布版都将 /dev内容的管理工作切换到udevd这是一个守护进程允许从用户层动态创建设备文件。 udevd基本思想即使从用户层管理设备文件内核的支持也是对必须的否则就 无法判断系统上有哪些设备可用。
字符设备