设备驱动

  • 操作系统作为硬件层的上层,它是对硬件的管理和抽象。对于操作系统上面的运行库和应用程序来说,它们希望看到的是一个统一的硬件访问模式。
  • 作为应用程序的开发者,我们不希望在开发应用程序的时候直接读写硬件端口、处理硬件中断等这些繁琐的事情。
  • 由于硬件之间千差万别,它们的操作方式和访问方式都有区别。
    1. 比如我们希望在显示器上面画一条直线,对于程序员来说,最好的方式是不管计算机使用什么显卡、什么显示器,多少大小、多少分辨率,我们都只要调用一个统一的LineTo()函数,具体的实现方式由OS来完成。
    2. 试想一下如果程序员需要关心具体的硬件,那么结果会是这样:
      1. 对于A型号的显卡来说,要往IO端口0x1001写一个命令0x1111,然后从端口0x1002中读取一个4byte的显存地址,然后使用DDA(一种画直线的图形算法)逐个地在显卡上画点....
      2. 对于B型号的显卡,可能完全是另外一种方式。这简直就是灾难。不过在操作系统成熟之前,的确存在这样的情况,就是应用程序的程序员需要直接跟硬件打交道。
  • 当成熟的OS出现以后,硬件逐渐被抽象成了一系列概念。
    • 在Unix中,硬件设备的访问形式跟访问普通文件形式一样;
    • 在Windows系统中,图形硬件被抽象为了GDI,声音和多媒体设备被抽象成了DirectX对象;磁盘被抽象成了普通文件系统,等等。
  • 程序员都逐渐从硬件细节中解放出来,可以更多地关注应用程序本身的开发。这些繁琐的硬件细节全都交给了OS,具体的讲是OS中的 硬件驱动程序(Device Driver)来完成。
  • 驱动程序可以看作是操作系统的一部分,它往往跟OS kernel 一起运行在特权级,但它又与OS kernel之间有一定的独立性,使得驱动程序有比较好的灵活性。
  • 因为PC的硬件多如牛毛,OS开发者不可能为每个硬件开发一个驱动程序,这些驱动程序的开发工作通常由硬件生成商完成。OS 开发者为硬件生产厂商提供了一系列接口和框架,凡是按照这个接口和框架开发的驱动程序都可以在该OS上使用。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值