OS X与iOS内核编程1.7 硬件和驱动程序_OS X与iOS内核编程1.7 硬件和驱动程序试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 算法 > OS X与iOS内核编程 > 1.7 硬件和驱动程序

OS X与iOS内核编程——1.7 硬件和驱动程序

除了管理基本的硬件资源(如CPU和内存),操作系统还负责管理系统上添加的硬件外设,包括键盘和鼠标、USB闪存驱动器、显卡等。尽管操作系统负责管理这些设备,但需要借助驱动程序才能实现。可将驱动程序看做运行在操作系统内核中的插件,它可以使系统与硬件设备进行交互。 支持硬件设备的代码位于设备自身(称为固件)和计算机(称为驱动程序)这两个位置。驱动程序的作用是代表操作系统控制硬件设备。驱动程序代码载入操作系统内核之后,会与内核的其他部分享有相同的权限,如直接访问硬件。 驱动程序在设备插入计算机(或计算机启动)时负责对硬件进行初始化,将操作系统的请求转换为一系列硬件特有的操作,然后由硬件执行这些操作以完成操作系统的请求。 驱动程序会接收到来自操作系统的请求,请求的类型取决于驱动程序执行的功能。对某些驱动程序,操作系统会为其开发者提供一个框架。例如,需要为声卡编写一个音频驱动程序。音频驱动程序接收操作系统特定于音频领域的请求,如创建一个48 kHz音频输出流,以及输出分好组的音频包。 驱动程序还可以构建在其他驱动程序上,并请求它们提供的服务。例如,USB音频输入设备的驱动程序使用底层通用USB驱动程序提供的服务访问其硬件。这样开发者就无须深入了解USB协议,从而可以专注于自己设备的特性。如在上面的例子中,音频驱动程序接收到来自操作系统的音频流操作请求之后,会针对这些请求创建自己的请求,然后传递给底层的USB驱动程序。这使每个驱动程序的责任相当明确:音频驱动程序只需关注音频请求的处理和音频设备的配置,USB驱动程序只需关注USB协议和USB总线上的数据传输。驱动程序的分层示例,如图1-7所示。 然而,操作系统不可能支持所有硬件设备。专用设备(如3D打印机)很可能得不到操作系统的支持。因此,硬件厂商需要为他们的硬件编写通用驱动程序。由于是通用驱动程序,操作系统不会将该设备看做打印机,也不会向其发送打印请求,而是由专门的应用软件对该驱动程序进行控制,直接与打印机驱动程序通信。操作系统提供了一个专门的系统调用,使用户应用程序可以向驱动程序发送操作请求,我们称之为“I/O控制”请求,通常缩写为“ioctl”。ioctl指定要执行的操作,并为驱动程序提供操作所需的参数,其中包含一个保存操作结果的缓冲区。尽管ioctl请求作为操作系统的系统调用来实现,但实际上此类请求直接传至驱动程序。

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《OS X与iOS内核编程》其他试读目录

• 第一章:操作系统原理
• 1.1 操作系统的作用
• 1.2 进程管理
• 1.3 进程地址空间
• 1.4 操作系统服务
• 1.5 虚拟内存
• 1.6 调度
• 1.7 硬件和驱动程序 [当前]
• 1.8 小结