输入输出系统
IO分软件和银剑两部分。本书介绍怎样对IO设备进行编程。
IO设备分为两类:块设备(block device)和字符设备(character device)块设备把信息存储来固定大小的块设备中,每个块有自己的地址, 块设备的基本特征是每个块,】都能独立于其他块而读写。 字符设备一字符为单位发送或者接受一个字符流,而不考虑任何块结构。 ,网络接口,鼠标属字符设备。 但时钟,显示器不属于此分类方案。
IO设备一般分为机械和电子两部分。 电子部分也叫适配器部分。
内存映射IO: 每个控制器都有寄存器来和CPU进行通信。那么如何通信?
答:有两种方法:1.PIO。2 。MMIO
- 每个控制器分配一个IO端口。所有IO端口形成端口空间。 这是早期做法。
- 将所有控制寄存器映射到内存空间。 这种做法方便编程,使用较少的汇编。
还介绍了一点DMA。用来通信的设备。
中断:
在硬件层面:当一个IO设备完成交给她的工作时,它就可以产生一个中断,该信号被中断控制器芯片检测,由中断控制器决定做什么。中断信号通知CPU,由CPU再做计算。
IO软件原理
IO应该保证尽量设备无关,各种硬件使用同样的标准,命名统一,错误处理有标准。处理好同步异步的问题。
###IO实现。
3种方法:1. cpu一直等待。2。使用中断异步。3.DMA驱动:可以将异步的工作,从准备一个字符到准备一个缓冲区。
IO软件层次
硬件—》中断处理—》设备驱动—》与设备无关的操作系统层面—》用户级别IO。
处理过程中还谁急到上下文,环境准备等等。
为了访问设备的控制器的硬件寄存器,设备驱动通常是内核模块。但也有可能构造用户空间驱动程序。使用系统调用来读写寄存器。现在的用户设备繁多就使用了动态的装载技术,在使用时刻进行装载。由驱动来控制检查设备。
####与设备无关的软件
提供统一接口,进行缓冲,错误报告,分配设备到进程。
提供统一接口:不同设备可以统一命名,统一装卸。
缓冲:中断处理程序将字符设备发送到内核缓冲区域,等CPU处理。广泛使用的是双缓冲区域。一个满了就用另一个,第一个满的和cpu打交道。
设备工作原理
磁盘,CD ,raid, 磁盘臂调度算法
时钟:硬件时钟和软件时钟。
有一般而言有两种管理IO的方法:中断和轮训。但是是现在社会中断过高,可以使用轮询。但高速网络,这两种可能都不能满足情况。可能需要软件定时器+硬件低频中断。
最后介绍了,鼠标,显示器,GUI。设备节能。