操作系统—第五章I/O管理—I/O核心子系统—应用题
1用于设备分配的数据结构有哪些?它们之间的关系是什么?
用于设备分配的数据结构有系统设备表(SDT),设备控制表(DCT),控制器控制表(COCT)和通道控制表(CHCT)。
SDT整个系统中只有一张,它记录系统中全部设备的情况,是系统范围的数据结构。每个设备有一张DCT,系统为每个设备配置一张DCT,以记录本设备的情况。每个控制器有一张COCT,系统为每个控制器都设置一张用于记录本控制器情况的COCT。系统为每个通道配置一张CHCT,以记录通道情况。
**SDT中有一个DCT指针,DCT的每个表目中有一个指向COCT的指针,COCT中有一个CHCT指针,CHCT中有一个COCT指针。
2输入/输出软件一般分为4个层次:用户层,与设备无关的软件层,设备驱动程序和中断处理程序。
(1)为磁盘读操作计算磁道,扇区和磁头。
(2)向设备寄存器写命令
操作系统是一个代码相对稳定的软件,它很少发生代码的变化。若(1)由操作系统完成,则操作系统就必须记录逻辑块和磁盘细节的映射,操作系统的代码就会急剧膨胀,而且对新型介质的支持也会引起代码的变动。若(2)也由操作系统完成,则操作系统需要记录不同生产厂商的不同数据,而且后续新厂商和新产品也无法得到支持。
因为(1)(2)都和具体的磁盘类型有关,因此为了能够让操作系统尽可能多地支持各种不同型号的设备,(1)和(2)应由厂商所编写的设备驱动程序完成。
(3)检查用户是否有权使用设备
(3)涉及安全与权限问题,应由与设备无关的操作系统完成。
(4)将二进制整数转换成ASCII码以便打印。
(4)应由用户层来完成,因为只有用户知道将二进制整数转换为ASCII码的格式。
3一个串行线能以最大50000B/S的速度接受输入,数据平均输入速率是20000B/S。若利用轮询来处理输入,不管是否有输入数据,轮询线程都需要3us来执行。在下一个字节到达之前未从控制器中取走的字节将丢失。那么最大的安全的轮询时间间隔是多少?
这一题最大的问题就是缓冲区是多大,题中说“下一个字节”所以缓冲区应为 1B。
串行线接受数据的最大速度为50000B/s,即每20us接受1B,而轮询例程需3us来执行,因此最大的安全轮询时间间隔是20-3=17us。
4在某系统中,从磁盘将一块数据输入缓冲区需要花费的时间为T,CPU对一块数据进行处理的时间为T,将缓冲区的数据传送到用户区所花的时间为M,那么在单缓冲和双缓冲情况下,系统处理大量数据时,一块数据的处理时间为多少?
本题的关键就在于哪些设备是可以并行的
(1)在单缓冲的情况下,应先从磁盘把一块数据输入缓冲区,所花费的时间为T;然后由操作系统将缓冲区的数据传送至用户区,所花的时间为M;接下来便由CPU对这一块数据进行计算,计算时间为C。由于CPU的计算操作与磁盘的数据输入操作可以并行,因此一块数据的处理时间为max(C,T)+M
(2)在双缓冲的情况下,应先从磁盘把一块数据输入到第一个缓冲区,当装满第一个缓冲区后,操作系统可将第一个缓冲区的数据传送到用户区并对第一块数据进行计算,与此同时可将磁盘输入数据送入第二个缓冲区内;当计算完成后,若第二个缓冲区已装满数据,则又可以将第二个缓冲区的数据传送至用户区并对第二块数据进行计算,与此同时可将磁盘输入数据送入第一个缓冲区内,如此反复交替使用两个缓冲区。CPU处理一个缓冲区中数据的耗时为C+M,而准备好另一个缓冲区内的数据的耗时为T。因此,当C+M>T时,CPU刚处理完一个缓冲区的数据,另一个缓冲区的数据就已经准备好了,就可以接着处理下一块数据,因此平均来看,每处理一块数据耗时C+M。而当C+M<T时,CPU处理完一个缓冲区的数据,另一个缓冲区的数据还没有准备好,因此每隔T的时间,才可以开始处理下一块数据,平均来看处理一块数据耗时为T。综上,max(C+M,T)
5
6一个SPOOLing系统由输入进程I,用户进程P,输出进程O,输入缓冲区,输出缓冲区组成。进程I通过输入缓冲区为进程P输入数据,进程P的处理结果通过输出缓冲区交给进程O输出。进程间数据交换以等长度的数据块为单位。这些数据块均存储在同一磁盘上。因此,SPOOLing系统的数据块通信原语保证始终满足i+o<=max,其中max为磁盘容量(以该数据块为单位),i为磁盘上输入数据块的总数,o为磁盘上输出数据块的总数。该SPOOLing系统运行时:只要有输入数据,进程I始终会将它放入输入缓冲区;只要输出缓冲区有数据块,进程P终究会读入,处理,并产生结果数据,写到输出缓冲区。只要输出缓冲区有数据块,进程O始终会输出它。
死锁?
i=max时死锁。

3084



被折叠的 条评论
为什么被折叠?



