Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144105
  • 博文数量: 29
  • 博客积分: 717
  • 博客等级: 上士
  • 技术积分: 352
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-16 16:17
文章分类

全部博文(29)

文章存档

2013年(4)

2012年(4)

2011年(21)

我的朋友

分类: LINUX

2011-09-26 20:46:59

操作系统是硬件的管理者,负责统一管理所有的硬件,并且和所有的硬件进行通信或者数据的交换,那么就要驱动硬件,而硬件都是基于不同速度的BUS,而现在的CPU内置了不同速度不同接口的模块,所以只要对这些接口模块进行管理,就实现了对硬件的管理,或者说硬件的管理都是通过总线接口来完成的,为方便管理,需要对接口模块进行抽象。例如把usb接口抽象为usb子系统。如图所示
---------------------------------------------------------------------------------
硬件模块抽象层(包括虚拟设备)
|
硬件模块(USB,FSMC,SDIO等,接口可复用)
---------------------------------------------------------------------------------

操作系统管理这些硬件是为了给用户使用,所以还要给用户提供一个编程接口,因此有了设备抽象层。用户只关心设备,不需要了解设备是否真实存在(虚拟设备)。例如光驱在/dev下的cdrom。当然操作系统也是要管理系统里所有设备的。如图所示
----------------------------------------------------------------------------------
用户接口(用户空间的程序)
|
--------------------------------------------------内核空间
设备抽象(字符,块,网络)/dev文件系统中不包括网络设备
----------------------------------------------------------------------------------

整个设备的模型已经建立完成,但是还要完成的是设备的抽象层到硬件抽象层的映射,这部分操作系统已经完成,但是完成的是策略,而不是方法,针对不同的硬件策略是一样的,但是方法不同,驱动程序就是方法的实现。驱动包含两部分:硬件控制模块的驱动和方法的实现。如图所示
---------------------------------------------------------------------------------
用户接口(用户空间的程序)
|
------------------------------------------内核空间
设备抽象(字符,块,网络)
|
驱动程序(与硬件模块一一对应)
|
硬件模块抽象层(包括虚拟设备)
|
硬件模块(USB,FSMC,SDIO等,接口可复用)
----------------------------------------------------------------------------------

一言以蔽之:操作系统为了更好的去管理硬件而建立了硬件抽象层,为了给用户使用建立了设备抽象层。
另外,驱动程序有时也担任硬件模型的抽象。
阅读(1151) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~