预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共55页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章设备管理教学内容 6.1I/O系统组成 6.2数据传输控制方式 6.3中断技术 6.4缓冲技术 6.5设备分配 6.6SPOOLING系统 6.7I/O控制过程 6.8磁盘I/O 6.9LINUX系统的设备管理 本章小结 6.1I/O系统组成6.1.1I/O设备6.1.2设备控制器2.设备控制器的组成6.1.3I/O通道6.2数据传输控制方式6.2.2中断控制方式6.2.3DMA方式6.2.4通道控制方式6.3中断技术6.3.2中断源6.3.3中断响应中断响应的过程:6.4缓冲技术6.4.2单缓冲6.4.3双缓冲6.4.4循环缓冲6.4.5缓冲池6.5设备分配2.I/O设备的分配算法3.设备分配的安全性6.5.2虚拟设备技术6.6SPOOLING系统6.6.2SPOOLING系统的组成6.7I/O控制过程6.8磁盘I/O6.8.2磁盘I/O性能(3)传输时间Tt 这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。由读写的字节数和磁盘旋转速度决定。 其中,b为一次读写的字节数,r为磁盘每秒的转数,N为每条磁道的字节数 对磁盘的访问时间为三部分时间之和:T=Ts+Tr+Tt。在这三个时间中,寻道时间和旋转延迟与读写的字节数无关,寻道时间所占比例最大。 6.8.3磁盘调度2.最短寻道时间优先算法3.扫描算法4.循环扫描算法6.8.4磁盘高速缓存6.9LINUX系统的设备管理6.9.2LINUX设备驱动程序的接口2.设备开关表 LINUX系统把块设备和字符设备又分别细分为若干类。如:块设备可分为硬盘、软盘、磁带、光盘等类,字符设备可分为终端设备、打印机等。为指定一类设备,将设备类从0开始顺序编号,称为主设备号;同一类的设备可能有许多,为了指定一台具体设备,需要一个次设备号来标识。因此,在指定一台具体设备时要给出:块设备/字符设备、主设备号、次设备号。 设备开关表相当于一个二维矩阵,每一行含有同一类设备的驱动程序入口地址,主设备号与行号一一对应;每一列是完成不同操作(open、close、read、write)的驱动程序的入口地址。 6.9.3LINUX的磁盘高速缓存当从磁盘中读数据时,文件系统先从磁盘高速缓存中读,如果数据已在高速缓存中,则可以不必启动磁盘I/O,如果数据不在高速缓存中,则启动磁盘I/O,从磁盘读取数据送往高速缓存,进程再从高速缓存中读取数据。 当进程往磁盘上写数据时,先往高速缓存中写,以便随后又读它时,能从高速缓存中读取,而不必启动磁盘读取。LINUX采取了“延迟写”策略,即:如果缓冲区还没有写满,则不急于把缓冲区的内容写到磁盘上,而是在缓冲管理数据结构中对该缓冲区设置延迟写标志,当高速缓存中的数据延迟到必须往磁盘上写的时候才进行写盘操作。 2.磁盘缓冲管理的数据结构忙标志位BUSY:缓冲区当前是否正忙。 有效位AVE:缓冲区包含的数据是否有效。 延迟写位DELWR:是否延迟写。 写标志位WRITE:是否正在把缓冲区的内容写到磁盘上。 读标志位READ:是否从磁盘往缓冲区读取信息。 等待位WAIT:是否有一个进程正在等待该缓冲区。 设备缓冲区队列前向指针b-forw 设备缓冲区队列后向指针b-back 空闲缓冲区队列前向指针av-forw 空闲缓冲区队列后向指针av-back 要对所有缓冲区进行管理,必须将所有缓冲首部组织成一定的数据结构,LINUX建立了两个缓冲区队列:空闲缓冲区队列和设备缓冲区队列。 为了对缓冲区进行分配,把所有的空闲缓冲区组织成一个队列。此队列中的所有缓冲区的忙标志位BUSY均为0。该队列是一个双向循环链表。 对于每类设备都建立一个设备缓冲区队列,是与该类设备有关的所有缓冲区构成的队列。此队列中的所有缓冲区首部的忙标志位BUSY均为1。该队列是一个双向循环链表。 任何缓冲区首部,要么位于空闲缓冲区队列中,要么位于设备缓冲区队列中。 3.LINUX磁盘缓冲区管理算法当缓冲区的信息读到相应进程的内存区后,或进程信息写到缓冲区后,便释放进程使用的缓冲区,将flag中的BUSY位置0,送入空闲缓冲区队尾,即使置为延迟写的缓冲区也送入空闲缓冲区队列。这样可以使有限的缓冲区得到充分利用,满足多个并发进程的需求。 当一个缓冲区被送往空闲缓冲区队尾时,并不退出设备缓冲区队列,而仍然留在原队列中。这样做的原因是:此次使用完毕送往空闲缓冲区队列的缓冲区,其保存的信息可能被再次访问。如果将其保留在设备缓冲区队列中,当后来要读取的磁盘数据仍然保留在此缓冲区中时,可以直接从此缓冲区读,而不必启动磁盘I/O,提高了读盘速度。这正是使用磁盘高速缓存的目的。 如果要将一个使用完毕送入空闲缓冲区队列的缓冲区重新分配给其他设备,则可以将该缓冲区同时从空闲缓冲区队列和原设备缓冲区队列中抽出,送入新的设备缓冲区队列。 因为