考研OR工作----计算机操作系统简答题及疑难知识点总结(第六章 输入输出系统)

  在第六章的学习中,主要理解操作系统处理用户I/O请求的基本过程,当然也需要朋友们对I/O控制方式、设备独立性、虚拟设备和SPOOLing技术、设备处理、磁盘调度等有所熟悉和掌握,看这篇文章的时候,会更加能够吸收相应的“简答”题型或者是会“计算”相应的题型。本章的内容参考《计算机操作系统》(第四版 汤子瀛)的书籍相应章节。阿婆主只是知识的搬运工~

  目录(检索你需要知道的知识点)

  第六章操作系统的基础知识点

  6.1 I/O控制方式中的典型问题分析
  6.1.1 试说明I/O控制发展的主要推动因素是什么?
  6.1.2 请说明什么是中断,并给出CPU响应中断并进行中断处理的一般过程。
  6.1.3 请说明中断驱动I/O方式和DMA方式有什么不同。
  6.2 缓冲管理中的典型问题分析
  6.2.1 为什么要引入缓冲区?
  6.2.2 假设T是从磁盘输入一块数据的时间,C是CPU对一块数据进行处理的时间,M是将一块数据从缓冲区传送到用户区的时间。当一用户进程要按顺序访问的方式处理大量数据时,请问在单缓冲和双缓冲的情况下,系统对一块数据的处理时间分别是多少?
  6.3 I/O软件中的典型问题分析
  6.3.1 I/O软件一般分为用户层软件、设备独立性软件、设备驱动程序和中断处理程序这四个层次。请说明下列工作分别是在哪一层完成的?
  6.3.2 为什么要引入设备独立性?如何实现设备独立性?
  6.3.3 设备驱动程序具有哪些功能?
  6.4 虚拟设备中的典型问题分析
  6.4.1 什么是虚拟设备?实现虚拟设备的关键技术是什么?
  6.4.2 SPOOLing系统由哪几部分组成?以打印机为例说明如何利用SPOOLing技术实现多个进程对打印机的共享?
  6.5 磁盘存储器管理中的典型问题分析
  6.5.1 假设磁盘有200个磁道,磁盘请求队列中是一些随机请求,它们按照到达的次序分别处于190、10、160、80、90、125、30、20、140、25号磁道上,当前磁头在100号磁道上,并正由外向里移动。请给出按FCFS、SSTF、SCAN及CSCAN算法进行磁盘调度时满足请求的次序,并计算出它们的平均寻道长度。
  6.5.2 假定磁盘转速为20ms/圈,磁盘格式化时每个磁道被划分成10个扇区,现在有10个逻辑记录(每个记录的大小刚好与扇区大小相等)存放在同一磁道上,处理程序每次从磁盘读出一个记录后要花4ms进行处理,现要求顺序处理这10个记录,若磁头现在正处于首个逻辑记录的始点位置。

 

  第六章操作系统的基础知识点

  6.1 I/O控制方式中的典型问题分析

  6.1.1 试说明I/O控制发展的主要推动因素是什么?

  答:促使I/O控制不断发展的几个主要因素如下:

  (1)力图减少CPU对I/O设备的干预,把CPU从繁杂的I/O控制中解脱出来,以充分发挥CPU数据处理的能力。

  (2)缓和CPU的高速性和I/O设备的低速性之间速度不匹配的矛盾,以提高CPU的利用率和系统的吞吐量。

  (3)提高CPU和I/O设备操作的并行程度,使CPU和I/O设备都处于忙碌状态,从而提高整个系统的资源利用率和系统吞吐量。

  事实上,I/O的控制系统由两级(CPU--I/O设备)发展到三级(CPU--控制器--I/O设备),进而发展到四级(CPU--I/O通道--控制器--I/O设备),都是上述三种因素促进的结果。

 

  6.1.2 请说明什么是中断,并给出CPU响应中断并进行中断处理的一般过程。

  答:中断是指计算机在执行期间,系统内部或外部设备发生了某一急需处理的事件,使得CPU暂时停止当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处,继续执行被中断的程序的过程。

  CPU响应中断并进行中断处理的一般过程如下:

  (1)保存现场。CPU收到中断信号后,通常由硬件自动将处理机状态字PSW和程序计数器PC中的内容,保存到终端保留区(栈)中。

  (2)转中断处理程序进行中断处理。由硬件分析中断的原因,并从相应的中断向量中获得中断处理程序的入口地址,装入CPU的程序计数器中,从而使处理机转向相应的中断处理程序。

  (3)中断返回。中断处理完成后通过中断返回指令,将保存在中断栈中的被中断进程的现场信息取出,并装入到相应的寄存器中,从而使处理机返回到被中断程序的断点执行。

 

  6.1.3 请说明中断驱动I/O方式和DMA方式有什么不同。

  答:它们的不同之处主要有:

  (1)I/O中断频率。在中断方式中,每当输入数据缓冲寄存器中装满输入数据或将输出数据缓冲寄存器中的数据输出之后,设备控制器便发生一次中断,由于设备控制器中配置的数据缓冲寄存器通常较小,如1个字节或1个字,因此中断比较频繁。而在DMA方式中,在DMA控制器的控制下,一次能完成一批连续数据的传输,并在整批数据传送完后才发生一次中断,因此可大大减少CPU处理I/O中断的时间。

  (2)数据的传送方式。在中断方式中,由CPU直接将输出数据写入控制器的数据缓冲寄存器供设备输出,或在中断发生后直接从数据缓冲寄存器中取出输入数据供进程处理,即数据传送必须经过CPU;而DMA方式中,数据的传输在DMA控制器的控制下直接在内存和I/O设备间进行,CPU只需将数据传输的磁盘地址、内存地址和字节数传给DMA控制器即可。

 

  6.2 缓冲管理中的典型问题分析

  6.2.1 为什么要引入缓冲区?

  答:在设备管理中,引入缓冲区的主要原因有以下几点:

  (1)缓和CPU与I/O设备速度不匹配的矛盾。通常,I/O设备的速率远远低于CPU的运算速率。如在输出数据时,如果没有缓冲区,则必然会由于I/O设备的速度跟不上CPU的速度,而使CPU停下来等待;而引入缓冲区后,CPU将输出数据写入缓冲区后,无需等待输出完成,便能继续执行下面的程序,而同时输出设备可慢慢地进行数据的输出。

  (2)减少对CPU的中断频率,放宽CPU响应中断的时间。例如,在远程通信系统中,如果从远程终端发来的数据仅用一位缓冲区来接收,则必须在每收到一位数据时便中断一次CPU,并在下一位数据到来之前要求CPU进行中断处理以取走输入数据;若设置一个8位缓冲区,则可每收8位数据中断一次CPU,但在第9位数据到来之前仍必须完成中断处理;若再增设一个8位的缓冲区,则可每收8位数据中断一次CPU,并允许CPU在后续8位数据到来期间处理前8位数据的中断。

  (3)提高CPU和I/O设备之间的并行性。如(1)所述,引入缓冲区后CPU和I/O设备可并行地工作,而I/O设备对CPU中断频率的降低,则可进一步提高CPU和I/O设备之间的并行操作程度,提高系统的吞吐量和设备的利用率。

 

  6.2.2 假设T是从磁盘输入一块数据的时间,C是CPU对一块数据进行处理的时间,M是将一块数据从缓冲区传送到用户区的时间。当一用户进程要按顺序访问的方式处理大量数据时,请问在单缓冲和双缓冲的情况下,系统对一块数据的处理时间分别是多少?

  答:单缓冲的工作示意图和时序图如下图。从图中可以看出:数据由I/O控制器到缓冲区和数据由缓冲区到工作区,必须串行操作;同样,数据从缓冲区到工作区和CPU从工作区中取出数据进行处理,也需串行进行;但由于在顺序访问时可采用预先读的方式,即CPU在处理一块数据的同时,可从磁盘输入下一块数据,因此,系统对一块数据的处理时间位max(C,T)+M。

                                                                             图1 单缓冲工作示意图

                                                                                       图2 单缓冲时序图

  双缓冲的工作示意图和时序图如下图。由此可见,数据由I/O控制器到双缓冲区,以及数据由双缓冲区到工作区,可以并行工作,因此,系统对一块数据的处理时间为max(T,M+C)。如果T>C,由于M远小于T,此时,系统对一块数据的处理时间约等于MAX(T,C),即T。

                                                                                      图3 双缓冲工作示意图

                                                                                     图4 双缓冲时序图

 

  6.3 I/O软件中的典型问题分析

  6.3.1 I/O软件一般分为用户层软件、设备独立性软件、设备驱动程序和中断处理程序这四个层次。请说明下列工作分别是在哪一层完成的?

  (1)向设备寄存器写命令。

  (2)检查用户是否有权使用设备。

  (3)将二进制整数转换成ASCII码的格式打印。

  (4)缓冲管理。

  答:(1)向设备寄存器写命令是在设备驱动程序中完成的。

  (2)检查用户是否有权使用设备属于设备保护,因此是在设备独立性软件中完成的。

  (3)将二进制整数转换成ASCII码的格式打印是通过I/O库函数(如C的库函数printf()中就有打印格式的控制字符串)完成的,因此属于用户层软件。

  (4)缓冲管理属于I/O的公有操作,是在设备独立性软件中完成的。

 

  6.3.2 为什么要引入设备独立性?如何实现设备独立性?

  答:引入设备独立性,可使应用程序独立于具体的物理设备。此时,用户用逻辑设备名来申请使用某类物理设备,当系统中有多台该类型的设备时,系统可将其中的任一台分配给请求进程,而不必局限于某一台指定的设备,这样,可显著地改善资源的利用率及可适应性。独立性还可以使用用户程序独立于设备的类型,如:进行输出时,既可以用显示终端,也可以用打印机,有了这种适应性,就可以很方便地进行输入输出重定向。

  为了实现设备独立性,必须在设备驱动程序之上设置一层设备独立性软件,用来执行所有I/O设备的公用操作,并向用户层软件提供统一接口。关键是系统中必须设置一张逻辑设备表LUT用来进行逻辑设备到物理设备的映射,其中每个表目中包含了逻辑设备名、物理设备名和设备驱动程序入口地址三项;当应用程序用逻辑设备名请求分配I/O设备时,系统必须为它分配相应的物理设备,并在LUT中建立一个表目,以后进程利用该逻辑设备名请求I/O操作时,便可从LUT中得到物理设备名和驱动程序入口地址。

 

  6.3.3 设备驱动程序具有哪些功能?

  答:设备驱动程序应具有以下功能:

  (1)接收由I/O进程发来的I/O命令和参数,并将命令中的抽象要求转换为具有要求,如将磁盘盘块号转换为磁盘的盘面、磁道和扇区号。

  (2)检查用户I/O请求的合法性,如果请求不合法,则拒绝接收I/O请求并向用户进程汇报。

  (3)了解I/O设备的状态,如果设备准备就绪,则可向设备控制器设置设备的工作方式、传递有关参数;否则,将请求者的请求块挂到设备请求队列上等待。

  (4)发出I/O命令。如果设备空闲,便立即启动I/O设备,完成指定的I/O操作。

  (5)及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。

 

  6.4 虚拟设备中的典型问题分析

  6.4.1 什么是虚拟设备?实现虚拟设备的关键技术是什么?

  答:虚拟设备是指通过某种虚拟技术,将一台物理设备变换成若干台逻辑设备,从而实现多个用户对物理设备的同时共享。由于多台逻辑设备实际上并不存在,而只是给用户的一种感觉,因此被称作虚拟设备。

  虚拟设备技术常通过在可共享的、高速的磁盘上开辟两个大的存储空间(即输入井和输出井)以及预输入、缓输出技术来实现。如对一个独占的输入设备,可预先将数据输入到磁盘输入井的一个缓冲区中,而在进程要求输入时,可将磁盘输入井中的对应缓冲区分配给它,供它从中读取数据;在用户进程要求输出时,系统可将磁盘输出井中的一个缓冲区分配给它,当将输出数据写入其中之后,用户进程仿佛觉得输出已完成并继续执行下面的程序,而在输出设备空闲时,再由输出设备将井中的数据慢慢输出。由于磁盘是一个共享设备,因此便将独占的物理设备改造成为多个共享的虚拟设备(相当于输入井或输出井中的一个缓冲区)。预输入和缓输出可通过脱机和假脱机技术实现,而假脱机(即SPOOLing技术)是目前使用最广泛的虚拟设备技术。

 

  6.4.2 SPOOLing系统由哪几部分组成?以打印机为例说明如何利用SPOOLing技术实现多个进程对打印机的共享?

  答:SPOOLing系统由磁盘上的输入井和输出井,内存中的输入缓冲区和输出缓冲区,输入进程和输出进程以及井管理程序够成。

  在用SPOOLing技术共享打印机时,对所有提出输出请求的用户进程,系统接受它们的请求时,并不真正把打印机分配给它们,而是由假脱机管理进程为每个进程做两件事:

  (1)在输出井中为它申请一空闲缓冲区,并将要打印的数据送入其中;

  (2)为用户进程申请一张空白的用户打印请求表,并将用户的打印请求填入表中,再将该表挂到假脱机文件队列上。

  至此,用户进程觉得它的打印过程已经完成,而不必等待真正的慢速的打印过程的完成。当打印机空闲时,假脱机打印进程将从假脱机文件队列队首取出一张打印请求表,根据表中的要求将要打印的数据从输出井传送到内存输出缓冲区,再由打印机进行输出打印。打印完后,再处理假脱机文件队列中的下一个打印请求表,直至队列为空。这样,虽然系统中只有一台打印机,但系统并未将它分配给任何进程,而只是为每个提出打印请求的进程在输出井中分配一个存储区(相当于一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现了对打印机的共享。

 

  6.5 磁盘存储器管理中的典型问题分析

  6.5.1 假设磁盘有200个磁道,磁盘请求队列中是一些随机请求,它们按照到达的次序分别处于190、10、160、80、90、125、30、20、140、25号磁道上,当前磁头在100号磁道上,并正由外向里移动。请给出按FCFS、SSTF、SCAN及CSCAN算法进行磁盘调度时满足请求的次序,并计算出它们的平均寻道长度。

  分析:(1)FCFS算法按进程请求访问磁盘的先后次序进行服务;SSTF算法优先为距离当前磁头所在磁道最近的请求进行服务;SCAN算法则优先为在磁头当前移动方向上、与当前磁头所在磁道最近的请求进行服务;CSCAN算法类似于SCAN算法,但它规定只能作单向服务。

  (2)磁盘的磁道号是由外向里一次编号的,因此由外向里是朝着磁道号增加的方向移动。

  答:磁盘调度的次序以及它们的平均寻道长度如下表。

                                                                     表 磁盘调度的次序以及平均寻道时间

 

  6.5.2 假定磁盘转速为20ms/圈,磁盘格式化时每个磁道被划分成10个扇区,现在有10个逻辑记录(每个记录的大小刚好与扇区大小相等)存放在同一磁道上,处理程序每次从磁盘读出一个记录后要花4ms进行处理,现要求顺序处理这10个记录,若磁头现在正处于首个逻辑记录的始点位置。请问:

  (1)按逆时针方向安排10个逻辑记录(磁盘逆时针方向转),处理程序处理完这10个记录所花费的时间是多少?

  (2)按最优化分布重新安排这10个逻辑记录,写出记录的安排,并计算出所需要处理的时间。

  分析:数据处理时间 = 磁盘访问时间 + 数据实际处理时间,而磁盘访问时间 = 寻道时间 + 旋转延迟时间 + 数据传输时间。本题通过对旋转延迟时间的优化来提高访问磁盘数据的速度。

  答:(1)由题意可知,读一个逻辑记录需2ms时间,读出记录后还需要4ms时间进行处理,故当磁头处于某记录的始点时,处理它共需6ms时间。而逻辑记录是按逆时针方向安排的,因此系统处理完一个逻辑记录后将磁头转到下一个逻辑记录的始点需要12ms时间。从而可以计算出处理程序顺序处理完这10个逻辑记录所需的时间为:6 + 9 *(12 + 6) = 168ms

  (2)按最优化分布重新安排这10个逻辑记录,可使处理程序处理完一个逻辑记录后,磁头刚好转到下一个逻辑记录的始点,此时,按顺时针方向安排的逻辑记录顺序分别为:记录1、记录8、记录5、记录2、记录9、记录6、记录3、记录10、记录7、记录4,所需要的处理时间为6*10,即60ms。

 

 

 

言必信,行必果。--《论语  子路》

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章