第八章 设备管理

8.1 操作系统公司会不会去专门花精力编写外设的控制程序/驱动程序呢?

不会,操作系统公司只需要做好接口标准就行,外设的驱动程序交给外设生产商去做。毕竟外设种类样式繁多。

8.2 什么是设备映射?

物理设备是指实际安装的设备,逻辑设备是指应用软件使用的设备(逻辑名)。物理设备是逻辑设备的实例,逻辑设备是物理设备的抽象。设备管理模块将逻辑设备映射到物理设备。

8.3 什么是设备的独立性?

物理设备对用户透明,用户使用统一规范的方式使用设备。用户编程时使用设备逻辑名,由系统实现逻辑设备到物理设备的转换。

8.4 什么是设备驱动?

设备驱动对物理设备进行控制,实现I/O操作,接收应用的服务请求,转换为具体的I/O指令,控制设备完成相关操作,向用户提供统一接口。

8.5 什么虚拟分配?什么是Spooling技术?

虚拟分配是指,当进程需要与独占设备交换信息时,采用虚拟技术将与该独占设备所对应的虚拟设备分配给它。
Spooling系统是虚拟技术与虚拟分配的一种实现:输入井和输出井是磁盘上开辟的两个存储区域,模拟脱机输入输出时的磁盘;输入缓冲区和输出缓冲区是内存中开辟的存储区域,暂存输入输出数据,便于将来传入输入井或输出设备;输入输出监控进程模拟脱机输入输出的卫星机。

8.6 SPOOLing系统的工作原理是什么?

任务执行前,预先将程序和数据输入到输入井;
任务运行时,要使用数据,从输入井取出,要输出数据,写入输出井;
任务运行完,外设空闲时输出全部数据和信息。

8.7 什么是LINUX模块机制?

LINUX模块机制就是把功能模块化,外部代码经过装载即可成为内核的一部分,模块也可以动态卸载、动态加载、动态更新。

8.8 Linux设备主要有哪三类?

字符设备:以字节为单位逐个进行I/O操作,如串口设备,可以看成是用字节流存取的文件;
块设备:存取通过buffer、cache进行,可以随机访问,支持可安装文件系统,如IDE硬盘,可以看成是可以任意存取字节数的字符设备,在应用上只是内核管理数据方式不同;
网络设备:通过BSD套接口访问(SOCKET),没有相应的read write,它是面向流的一种特殊设备。

8.9 什么叫设备文件,如何读写,有何作用?

所有的设备都是以文件的形式描述,这类文件称为设备文件。
要操作一个设备,就是对一个对应的文件进行读写。可以按照文件一样对设备文件进行 open / read / write 等操作。当应用程序对一个设备文件调用这些系统调用时,驱动将收到这个操作的请求,然后调用相对应的操作进行处理,这样就可以和kernel层的dev设备关联起来。

8.10 Linux中如何把驱动程序中自定义的接口与文件操作的标准接口关联起来?

在结构file_operations里,指出了设备驱动程序所提供的入口点位置,设备驱动程序所提供的入口点在设备驱动程序初始化的时候向系统进行登记,以便系统在适当的时候调用。
通过在file_operations结构体中为open、write、release等变量赋值,可以将自定义接口与标准接口相关联。

8.11 Windows中应用程序访问设备对象的一种方法?

驱动程序中创建设备对象并命名,应用程序通过符号链接访问设备对象。

8.12 了解Linux下,网络驱动程序的例子和开发过程。

https://blog.csdn.net/qq_44884706/article/details/89454082

8.13 在Linux下,如何把新编写的驱动程序(或设备)编译到内核中?

https://blog.csdn.net/chinazhangzhong123/article/details/51527116

8.14 了解Windows下“过滤驱动”程序的例子和开发过程。

https://blog.csdn.net/nanjun520/article/details/46913307

8.15 对比Windows 98,WinXP,WIN7三种典型操作系统下驱动程序结构差异,开发环境的差异。

WIN98:https://www.docin.com/p-1403517143.html
WINXP:https://blog.csdn.net/chenyujing1234/article/details/7587227
WIN7:https://blog.csdn.net/ikerpeng/article/details/38822657