第三章:I/O。
软件必须处理的问题:I/O硬件,I/O设备和I/O控制器的关系。
I/O软件的四个层次:中断例程,设备驱动程序,设备无关I/O软件,以及在用户空间运行的I/O库和假脱机(?)。
死锁概念:发生在一组进程都拥有对某些资源的互斥存取权,并且每个进程还要求仍属于该组中另一个进程的资源时。
MINIX中的设备驱动程序是作为嵌入在内核中的进程来实现的。
同步闹钟任务与任务系统不是设备驱动程序但在结构上非常相似。都有一个主循环取出请求并进行处理,逐渐送回回答消息报告发生的事件。所有的任务都位于相同的地址空间中。
RAM磁盘,硬盘,软磁盘驱动器任务都是用一个相同的主循环拷贝,并共享相同的函数。不过,每个任务仍然是独立的进程。几种不同的使用系统控制台,串行线和网络连接的终端都由一个单一的终端任务支持。
设备驱动程序和中断系统有许多不同的关系。
1.能很快完成工作的设备如RAM磁盘和内存映像显示器根本不使用中断。
2.硬盘驱动器任务在任务代码本身中完成了大部分工作,中断处理程序只返回状态信息。
3.时钟中断处理程序本身执行了许多登记操作,只有在处理程序不能处理某项工作时才向时钟任务发送一条消息。
4.键盘中断处理程序缓冲输入并且从不向它对应的任务发送消息,而是改变一个由时钟中断处理程序检测的变量,时钟中断处理程序将向终端任务发送一条消息。
-----------------以上内容是课本小结!just copy......------------
MINIX的源代码以及设备驱动程序的实现部分实在不好理解,太多的信号量,太多的进程关系的牵扯,太多的中断处理手段。真正的代码实现阶段非常之复杂,不单单是理论,更多的是实践经验和调试的最优结果的积累。
(第二章读得比较仓促,带来了一些不好的影响,如果看完完全记不住的内容,还是早早跳过的好,硬着头皮读下去,也没有什么意义。maybe someday I can read this part again.who knows?)
迈向第四章......(好心虚,呵呵呵呵。)