线与处理机交互,处理机利用该逻辑向控制器发送I/O命令,I/O逻辑对收到的命令进行译码。 3.为了实现CPU与设备控制器之间的通信,设备控制器应具有哪些功能?
为了实现CPU与设备控制器之间的通信,设备控制器应具有如下功能:(1)接受和识别命令。CPU可以向控制器发送多种不同的命令,设备控制器应能接收并识别这些命令。设置控制寄存器来存放所接收的命令和参数。(2)数据交换,指实现CPU与控制器之间、控制器与设备之间的数据交换。设置数据寄存器来存放有关数据。(3)设备状态的了解和报告。控制器记录下所连接设备的状态以供CPU了解。为此,要在控制器中设置一状态寄存器,用其中的每一位反映设备的某一状态。(4)地址识别。配置地址译码器以便于正确识别设备地址。
4.分别就字节多路通道、数据选择通道和数组多路通道进行解释。
① 字节多路通道含有许多非分配型子通道分别连接在低、中速I/O设备上,子通道按时间片轮转方式共享主通道,按字节方式进行数据传送。具体而言,当第一个子通道控制其I/O设备完成一个字节的交换后,便立即腾出字节多路通道(主通道),让给第二个子
通道使用;当第二个子通道也交换完一个字节后,又依样把主通道让给第三个子通道使用,以此类推。转轮一周后,重又返回由第一个子通道去使用主通道。② 数组选择通道只含有一个分配型子通道,一段时间内只能执行一道通道程序、控制一台设备按数组方式进行数据传送。通道被某台设备占用后,便一直处于独占状态,直至设备数据传输完毕释放该通道,故而通道利用率较低,主要用于连接多台高速设备。③数组多路通道是将数组选择通道传输速率高和字节多路通道能使各子通道分时并行操作的优点相结合而形成的一种新通道。其含有多个非分配型子通道分别连接在高、中速I/O设备上,子通道按时间片轮转方式共享主通道,按数组方式进行数据传送,因而既具有很高的数据传输速率,又能获得令人满意的通道利用率。
5.如何解决因通道不足而产生的瓶颈问题? 解决因通道不足而产生的瓶颈问题的最有效方法是增加设备到主机间的通路而不是增加通道。换言之,就是把一个设备连接到多个控制器上,而一个控制器又连接到多个通道上。这种多通路方式不仅可以解决该瓶颈问题,而且能够提高系统的可靠性,也即不会因为个别通道或控制器的故障而使设备与存储器之间无
法建立通路进行数据传输。
6.试说明I/O控制发展的主要推动因素是什么? 推动I/O控制发展的主要动力在于尽量减少主机对I/O控制的干预,把主机从繁杂的I/O控制事务中解脱出来,以有更多的时间和精力去完成其数据处理任务。同时,中断机制在计算机系统中的引入、DMA控制器的出现和通道研制的成功使I/O控制的发展具备了技术支持和成为可能。 7.有哪几种I/O控制方式?
有四种I/O控制方式,即程序I/O控制方式、中断驱动I/O控制方式、直接存储器访问DMA控制方式及I/O通道控制方式。 8.试说明DMA的工作流程。
以从磁盘读入数据为例来说明DMA方式的工作流程:当CPU要从磁盘读入一数据块时,便向磁盘控制器发送一条读命令,该命令被送入DMA控制器的命令寄存器CR中。同时,还需发送本次要将数据读入的内存起始目标地址,该地址被送入DMA控制器的内存地址寄存器MAR中;本次要读的字(节)数则送至DMA控制器的数据计数器DC中。另外,还需将磁盘中数据读取的源地址直接送到DMA控制器的I/O控制逻辑上。然后,启动DMA控制器进行数据传送。此后,CPU便
可去处理其它任务,而整个的数据传送便由DMA控制器负责控制。当DMA控制器已从磁盘中读入一个字(节)的数据,并送入DMA控制器的数据寄存器DR后,再挪用一个存储器周期,将该字(节)传送到MAR所指示的内存单元中。接着,便对MAR内容加1和将DC内容减1。若DC内容减1后不为0,表示传送未完,便准备再传送下一个字(节),否则,由DMA控制器发出中断请求。参图所示: 9.引入缓冲的主要原因是什么?
操作系统引入缓冲机制的主要原因可归结为以下几点:(1)缓和CPU与I/O设备间速度不匹配的矛盾;(2)减少对CPU的中断频率,放宽对中断响应时间的限制;(3)提高CPU与I/O设备之间的并行性。
10.为什么在单缓冲情况下,系统对一块数据的处理时间为max(C, T)+M ?
在块设备输入时,先从磁盘把一块数据输入到缓冲区,耗时为T;然后由操作系统将缓冲区数据传送给用户区,耗时为M;接下来便由CPU对这一块数据进行计算,耗时为C。在单缓冲情况下,磁盘把数据输入到缓冲区的操作和CPU对数据的计算过程可以并行展开,所以系统对每一整块数据的处理时间为max(C, T) + M。
11.为什么在双缓冲情况下,系统对一块数据的处理时间为max(C, T)
该方式又称缓冲对换方式。写入者花费时间T将数据写满一个缓冲区后再写另一个缓冲区;读出者花费时间M将一个缓冲区数据送到用户区后再传送另一个缓冲区数据,运算者读出用户区进行处理。由于将数据从缓冲区传送到用户区操作必须与读用户区数据进行处理串行进行,而且它们又可以与从外存传送数据填满缓冲区的操作并行。因此耗时大约为max(C+M,T)。考虑到M是内存中数据块的“搬家”耗时,非常短暂可以省略,因此近似地认为是:max(C,T)。 12.试绘图说明把多缓冲用于输出时的情况。 把多缓冲用于输出时的情况如图所示:
13.试说明收容输入工作缓冲区和提取输出工作缓冲区的工作情况。
① 收容输入工作缓冲区的工作情况为:在输入进程需要输入数据时,调用GetBuf(EmptyQueue)过程,从EmptyQueue队列的队首摘下一个空缓冲区,把它作为收容输入工作缓冲区Hin。然后,把数据输入其中,装满后再调用PutBuf(InputQueue, Hin)过程,将该缓冲区挂在输入队列InputQueue的队尾。② 提取输出工作缓冲区的工作情况为:当要输出数据时,