一定的局限,如对外设的管理和某些操作仍由CPU控制,且多个DMA控制器的使用也不经济。 4. 通道控制方式。通道是一个专管输入/输出控制的处理机。在通道控制方式下,CPU
只需发出I/O指令,通道就能完成相应的I/O操作,并在操作结束时向CPU发出中断信号。由此可见,CPU仅在I/O操作开始和结束时花极短的时间处理与I/O操作有关的事宜,其余时间都与通道并行工作,此外一个通道还能控制多台外设。但是,通道价格较高,从经济的角度出发不宜过多使用。
(3) 为什么要引入缓冲技术,其基本实现思想是什么?
解:
缓冲技术是用来在两种不同速度的设备之间传输信息时平滑传输过程的常用手段。在操作系统的设备管理中,引入缓冲技术的主要原因可归结为以下几点。
? 缓解CPU和I/O设备间速度不匹配的矛盾。 ? 减少对CPU的中断频率。
? 提高CPU和I/O设备之间的并行性。
缓冲技术的实现思想是在CPU和外设之间设立缓冲,用以暂存CPU和外设之间交换的数据,从而缓和CPU与外设速度不匹配所产生的矛盾。缓冲的实现方法有两种:一种实现方法是采用硬件缓冲器,但由于这种方法成本太高,除一些关键部位外,一般情况下不采用硬件缓冲器;另一种实现方法是在内存划出一块存储区,专门用来临时存放输入/输出数据,这个区域称为缓冲区。
(4) 什么是SPOOLing系统,如何利用SPOOLing系统实现打印机的虚拟分配? 解:
SPOOLing是外围设备同时联机操作,又称为假脱机输入/输出操作。SPOOLing技术可将一台物理I/O设备虚拟为多台逻辑I/O设备,从而允许多个用户共享一台物理I/O设备。 SPOOLing技术是对脱机输入、输出系统的模拟,因此,它必须建立在具有多道程序功能的操作系统上,而且还应该有高速随机外存的支持,这通常是采用磁盘存储技术。 SPOOLing系统通常由以下3部分组成:
1. 输入和输出井:这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的
磁 盘设备,用于暂存I/O设备输入的数据;输出井是模拟脱机输出的磁盘,用于暂存用户程序的输出数据。
2. 输入缓冲区和输出缓冲区:为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存
中开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;输出缓冲区则用于暂存从输出井送来的数据,以后再传送给输出设备。
3. 输入进程和输出进程:SPOOLing利用两个进程来模拟脱机I/O时的外围控制机。
其中,输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井中读到内存;输出进程模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。
(5) 简单描述I/O软件的设计原则以及各层的功能。 解:
I/O软件设计时主要考虑以下几个问题:
1. 设备无关性。对于I/O系统中许多种类不同的设备,作为程序员,只需要知道如何
使用这些资源来完成所需要的操作,而无需了解设备的有关具体实现细节。例如,应用程序访问文件时,不必考虑它是存储在硬盘、软盘,还是CD-ROM上。对于
管理软件,也无需因为I/O设备变化,而重新编写涉及设备管理的程序。
2. 统一命名。要实现设备的无关性,其中一项重要的工作就是如何给I/O设备命名。
不同的操作系统有不同的命名规则,一般而言,是在系统中对各类设备采取预先设计的、统一的逻辑名称进行命名,所有软件都以逻辑名称访问设备。这种统一命名与具体设备无关,即同一逻辑设备的名称,在不同的情况下可能对应于不同的物理设备。
3. 出错处理。错误多数是与设备紧密相关的,因此对于错误的处理,应该在尽可能靠
近硬件的地方处理,在底层软件能够解决的错误就不要让高层软件感知,只有底层软件解决不了的错误才通知高层软件解决。
4. 缓冲技术。由于CPU与I/O设备之间的速度差异,需要使用缓冲技术。对于不同
类型的设备,其缓冲区的大小是不一样的,块设备的缓冲是以数据块为单位,而字符设备的缓冲则以字节为单位。因此,I/O软件应能屏蔽这种差异,向高层软件提供统一大小的数据块或字符单元,使得高层软件能够只与逻辑块大小一致的抽象设备进行交互。
5. 设备的分配和释放。对于系统中的共享设备,如磁盘等,可以同时为多个用户服务。
对于共享设备,应该允许多个进程同时对其提出I/O请求。对于独占设备,如键盘和打印机等,在某一段时间只能供一个用户使用,对其分配和释放不当,将引起混乱,甚至死锁。对于独占设备和共享设备带来的许多问题,I/O软件必须能够同时进行妥善地解决。
6. I/O控制方式。针对具有不同传输速率的设备,综合系统效率和系统代价等因素,
合理选择I/O控制方式,如像打印机等低速设备应采用中断驱动方式,而对磁盘等高速设备则采用DMA控制方式等,以提高系统的利用率。为方便用户,I/O软件应能屏蔽这种差异,向高层软件提供统一的操作接口。
操作系统通常把I/O软件组织成如下4个层次。
1. I/O中断处理程序。用于保存被中断进程的CPU环境,转入相应的中断处理程序进
行处理,处理完后再恢复被中断进程的现场,然后返回到被中断进程。
2. 设备驱动程序。与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动
I/O设备工作的驱动程序。
3. 设备无关软件。负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设
备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。 4. 用户层I/O软件。实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O
操作有关的库函数,对设备进行操作。
(6) 为什么要引入设备独立性,如何实现设备独立性?
解:
设备独立性又称为设备无关性。它指的是应用程序在使用设备进行I/O时,使用的是逻辑设备,而系统在实际执行时使用的是物理设备,由操作系统负责逻辑设备与物理设备的映射。引入设备独立性可以使设备的分配具有极大的灵活性,并易于实现I/O重定向。
系统为每个进程设置一张逻辑设备表LUT。当某进程用逻辑名来请求设备时,系统查阅系统设备表SDT,为它分配相应的可用物理设备。系统将这种用户逻辑设备与系统物理设备的映射建立在该用户的LUT中,并将该物理设备的驱动程序入口地址填入LUT中。以后,该进程利用逻辑设备名请求I/O操作时,系统通过查找LUT即可找到物理设备及其驱动程序。
(7) 设备分配中会出现死锁吗,为什么? 解:
设备分配中会出现死锁。因为在不安全分配方式中,进程在发出I/O请求后仍继续运行,需要时则可以发出第二个、第三个I/O请求等。仅当进程所请求的设备已被另一个进程占用时,请求进程才进入阻塞状态。这种分配方式的优点是,一个进程可同时使用多个设备,使进程推进迅速。其缺点是分配不安全,因为它可能具备“请求和保持”条件,从而可能造成死锁。因此,在设备分配时,还应对本次的设备分配是否会发生死锁进行安全性检查,仅当分配是安全的情况下才可以进行设备分配。 (8) 试说明DMA的工作流程。
解:
1. CPU需要访问外存时,便发送一条访问命令给DMA的命令寄存器CR、一个内存
地址码给DMA的内存地址寄存器MAR、本次要传送的字节数给DMA的数据计数器DC、外存地址给DMA的I/O控制逻辑中。 2. 启动DMA控制器,然后CPU转其它任务处理。
3. DMA控制器负责控制数据在内存与外存之间传送。每传送一个字节就需挪用一个
内存周期,按MAR从内存读出或写入内存一个字节,修改MAR和计数器DC。 4. 当DC修改为0时,表示传送结束,由DMA向CPU发出中断请求。 (9) 什么是中断,简单叙述中断的处理过程?
解:
中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完中断程序之后又返回原来被中断处继续执行或调度新进程的过程。
中断处理的过程如下:
1. 首先,CPU检查响应中断的条件是否满足。CPU响应中断的条件是:有来自于中
断源的中断请求、CPU允许中断。如果中断响应条件不满足,则中断处理无法进行。
2. 如果CPU响应中断,则CPU关中断,使其进入不可再次响应中断的状态。 3. 保存被中断进程的现场。为了在中断处理结束后能使进程正确地返回到中断点,系
统必须保存当前处理机状态字PSW和程序计数器PC等的值。这些值一般保存在特定堆栈或硬件寄存器中。
4. 分析中断原因,调用中断处理子程序。在多个中断请求同时发生时,处理优先级最
高的中断。
5. 执行中断处理子程序。对陷阱来说,在有些系统中则是通过陷阱指令向当前执行进
程发出软中断信号后调用相应的处理子程序。
6. 退出中断,恢复被中断进程的现场或调度新进程占据处理机。 7. 开中断,CPU继续执行。
(10) 试说明设备驱动程序应完成哪些功能?
解:
设备驱动程序是请求I/O的进程与设备控制器之间的一个通信程序,主要功能有: 1. 将用户的要求转换为具体要求。
2. 检查用户的合法性,了解设备状态,根据要求传递参数,设置设备的工作方式。 3. 向设备控制器发I/O命令启动设备,完成具体的I/O操作。
4. 及时响应外设的中断请求,根据中断类型调用相应的中断处理程序。 5. 具有通道的控制系统,还要构造通道程序。
(11) 什么是设备的安全分配方式和不安全分配方式?
解:
安全分配是一种“摈弃请求和保持条件”的资源分配方式。在这种方式中,一个进程一旦获得请求资源,该进程就由运行状态变为阻塞状态,使它不可能再请求新的资源。相反,当该进程开始运行时(如I/O完成后被唤醒),它已不占有资源。因此,这种分配摈弃了造成死锁的一个条件,分配是安全的。这种分配方式的缺点是进程推进速度慢,因为CPU和I/O是串行的。
不安全的分配方式是指进程在提出资源请求时系统不做任何检查,将资源分配给它,当它再提出第2个资源请求时,若请求的资源已被其它进程占用,该进程不得不被阻塞等待,那么我们说该进程具备了“请求和保持”的条件。具备这种条件的进程可能产生死锁,因此说,这种分配是不安全的分配。
(12) I/O软件一般分为4个层次:用户层I/O软件、设备无关软件、设备驱动程序、I/O中断处理程序。请说明下列工作各由哪一层I/O软件来完成:
①为了读盘,计算磁道、扇区和磁头; ②维护最近使用的盘块所对应的缓冲区; ③把命令写到设备寄存器中; ④检查用户使用设备的权限;
⑤把二进制整数转换成ASCⅡ码并打印。 解:
①、③、④和⑤属于设备驱动程序的职责,②属于设备无关软件层的职责,
(13) 在某个系统的某个运行时刻,有如下表示的磁盘访问的请求序列,假设磁头当前在15柱面,磁臂方向为从小到大。
15、20、9、16、24、13、29
请给出最短查找时间优先算法和电梯调度算法的柱面移动数,并分析为何通常情况下,操作系统并不采用效率更高的最短查找时间优先算法。
解:
1) 按照最短查找时间优先算法,柱面的访问次序是: 15、16、13、9、20、24、29
令磁臂移动方向从小到大为正向,从大到小的方向为反向,那么,最短查找时间优先算法的柱面移动次数为:1+|-3|+|-4|+11+4+5=28。
2) 按照电梯调度算法,柱面的访问次序是: 15、16、20、24、29、13、9
电梯调度算法的柱面移动数为:1+4+4+5+|-16|+|-4|=34。
3) 从本题给的例子看,最短查找时间优先算法比电梯调度算法的柱面移动数少6。因此说前者的效率更高一些。但是,由于磁头在访问操作中,可能不断有新的柱面请求加入,使磁头忙于应付一些距离较近的柱面请求,冷落了对远距离柱面的响应。长此以往,将可能造成某些远距离柱面处于“饥饿”状态。这就是通常情况下操作系统并不采用最短查找时间优先算法的原因。
(14) 假设有A、B、C和D四个记录存放在磁盘的某个磁道上。该磁道分成4块,每块存放一个记录,其布局如下:
块号 记录号 1 A 2 B 3 C 4 D 现在要顺序处理这些记录,如果磁盘旋转速度为20ms转一周,处理程序每读出一个记录后花5ms的时间进行处理。试问处理完这4个记录的总时间是多少?为了缩短时间,应该如
何优化分布,优化后的处理时间是多少?
解:
由题分析可知,读出一个扇区的时间为5ms(也就是盘片旋转一周的1/4),处理的时间也为5ms。系统处理完记录A后要读记录B必须等待磁盘旋转3个扇区。因此系统处理完记录B需要耗时3?5+5+5=25ms。
其它记录的读出与处理耗时皆如此分析,则优化前总处理耗时T1为:
T1=(5+5)+(5?3+5+5)+(5?3+5+5) +(5?3+5+5)=85ms 为了减少系统的等待时间,可以将记录的存储序列进行优化,优化后的顺序为:A, C, B, D。
优化后处理总时间T2为: T2=(20/4+5) ?4+5=45ms
(15) 为什么要引入磁盘高速缓存?什么是磁盘高速缓存?
解:
磁盘的I/O速度远低于内存的访问速度,通常要低4~6个数量级。因此,磁盘的I/O已成为计算机系统的性能瓶颈。为了提高磁盘I/O的速度,其中最主要的技术便是采用磁盘高速缓存。
磁盘高速缓存并非通常意义下的内存和CPU之间增设的一个小容量高速存储器,而是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此,这里的高速缓存是一组在逻辑上属于磁盘,而物理上驻留在内存中的盘块。高速缓存在内存中可分成两种形式。第一种是在内存中开辟一个单独的存储空间来作为磁盘高速缓存,其大小是固定的,不会受应用程序多少的影响;第二种是把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘I/O共享。
(16) 廉价磁盘冗余阵列是如何提高对磁盘的访问速度和可靠性的?
解:
用一台专门控制磁盘阵列的控制器,统一管理和控制一组磁盘驱动器,这样形成廉价磁盘冗余阵列。
1) 提高磁盘访问速度的主要措施是“并行交叉存取”技术。系统将每一盘块的数据
分成若干子盘块,并将每个子盘块的数据分别写到各个不同磁盘的相同位置。当需要访问盘块时,采用并行传送方式,各盘块相同位置的子盘块同时向内存传输。这样一来,磁盘访问速度可提高N-1倍。
2) 提高磁盘可靠性的措施按RAID技术规定可分为:磁盘镜像技术、设专门的奇偶校
验盘、校验数据以螺旋方式散布的校验方式、设置专用快速异步校验盘等。
第8章 操作系统的安全和保护
(1) 说明计算机系统的可靠性和安全性的区别和联系。
解:
计算机系统的安全性和可靠性是两个不同的概念,可靠性是指硬件系统正常持续运行的程度,而安全性是指不因人为疏漏或蓄意操作而导致信息资源被泄露、篡改和破坏。可靠性是基础,安全性更为复杂。
(2) 叙述计算机系统安全的主要内容。
解: 计算机系统安全涉及的内容非常广泛,总体上来讲包括三个方面的内容:物理安全、逻辑安全和安全管理。物理安全是指系统设备及相关设施受到物理保护,使之免遭破坏或丢失,