第八章 设备管理
8.1 设备管理概念
- (1)设备分配:按策略为进程分配设备
- (2)设备映射:物理设备(I/O)系统中实际安装的设备;逻辑设备(应用软件使用的设备)
- (3)设备驱动:控制物理设备实现I/O操作,将应用的服务请求转换为具体I/O指令;向用户提供统一接口(read,write,open等)
8.2 Spooling系统
-
8.2.1 设备
- (1)独占性设备:所有字符串设备(如打印机),申请—使用(独占)—释放
- (2)共享性设备:所有块型设备,不需申请,I/O时才独占
-
8.2.2 虚拟分配
- (1)定义:利用辅存中的部分区域,用物理设备模拟另一物理设备
- (2)虚拟设备:模拟独占设备的部分辅存,虚拟独占;输入井(模拟输入设备的辅存区域),输出井(模拟输出设备的辅存区域)
- (3)虚拟分配:Spooling系统将虚拟设备进行分配(伪独占)
8.3 设备驱动
-
8.3.1 LINUX模块机制
- (1)LINUX内核模块:用于解决单核机制的不足,添加一些功能
- (2)模块实现:编译模块,安装模块,删除模块,查看内核信息
- (3)带参的模块:module_param带时间参或字符参
- (4)动态加载模块时:insmod命令
-
8.3.2 LINUX驱动程序(LDD)
- (1)驱动程序提供接口,应用程序通过驱动程序的接口来调用设备
- (2)LINUX设备的分类:字符设备(字节为单位来I/O操作),块设备(通过buffer,cache来操作,网络设备(socket访问)
- (3)设备文件:被当做文件看待的设备,通过文件接口来访问设备
- (4)设备号:主设备号(标识同一类设备),次设备号(标识同一设备驱动程序的不同硬件设备)
- (5)文件操作结构体:规定的必须定义的结构体函数(含标准接口)
-
8.3.3 Windows驱动程序
- (1)入口与退出函数:DriverEntry为入口函数,pDriverObject->DriverUnload赋值退出函数指针
- (2)创建读/写/关程序:首先创建自己的函数,然后将标准接口关联自己的函数(通过函数pDriver -> MajorFunction[IRP……] 来实现)
- (3)开发工具:Windows DDK,DriverWorks,WinDriver(编写驱动时不能使用API)
- (4)驱动程序与应用程序的连接:驱动程序中创建设备对象并命名(IoCreateDevice)→通过符号链接访问设备对象(IoCreateSymboliclLink)→内核的??子目录为\.\子目录→用户模式下通过访问\.\下的符号链接访问设备