Q1. 为什么把设备分为“块设备”和“字符设备”两大类?
A:
1) Linux将设备看成文件,具有三方面的含义:第一,每个设备都对应一个文件名,在内核中也就对应一个索引节点;第二,对文件操作的系统调用大都适用于设备文件;第三,从应用程序的角度看,设备文件的逻辑空间是一个线性空间;对于同一个具体的设备而言,文件操作和设备驱动是同一个事物的不同层次,概念上可以将一个系统划分为应用、文件系统和设备驱动三个层次;
2) Linux将设备分为两大类,一类是像磁盘那样的以块或扇区为单位、成块进行输入/输出的设备,称为块设备;另一类是像键盘那样以字符(字节)为单位,逐个字符进行输入/输出的设备,称为字符设备;文件系统通常都建立在块设备上。
Q2. 什么是设备驱动程序?
A:Linux中处理和管理硬件控制器的软件就是设备驱动程序。
Q3. I/O端口一般包括哪些寄存器?各自功能是什么?
A:
1) I/O端口包括控制寄存器、状态寄存器和数据寄存器三大类;
2) 根据访问外设寄存器的不同方式,将CPU分为两大类:一类是“内存映射”(memory-mapped)方式,另一类是“I/O映射”(I/O- mapped)方式。