1、1第 1、2 章 操作系统概述、作业管理1 硬件将处理机划分为两种状态,即管态和目态,这样做给操作系统设计带来什么好处? 答:便于设计安全可靠的操作系统。管态和目态是计算机硬件为保护操作系统免受用户程序的干扰和破坏而引入的两种状态。通常操作系统在管态下运行,可以执行所有机器指令;而用户程序在目态下运行,只能执行非特权指令。如果用户程序企图在目态下执行特权指令,将会引起保护性中断,由操作系统终止该程序的执行,从而保护了操作系统。2中断与程序并发之间的关系是什么? 答:中断是程序并发的前提条件。如果没有中断,操作系统不能获得系统控制权,无法按调度算法对处理机进行重新分配,一个程序将一直运行到结束而
2、不会被打断。3何谓并行? 何谓并发? 在单处理机系统中,下述并行和并发现象哪些可能发生,哪些不会发生? (1) 进程与进程之间的并行;(2) 进程与进程之间的并发;(3) 处理机与设备之间的并行;(4) 处理机与通道之间的并行;(5) 通道与通道之间的并行;(6) 设备与设备之间的并行。答:所谓并行是指同一时刻同时进行,进程并行需要多处理器的支持;所谓并发,是指在一段时间内,多个进程都在向前推进,而在同一时刻,可能只有一个进程在执行,多个进程轮流使用处理器。在单处理器系统中,可能发生的并行和并发现象如下:(2) 进程与进程之间的并发。例如,在 Windows 操作系统中,mp3 播放进程和 W
3、ord 字处理进程可以并发执行,这样用户就可以边听音乐边写文章了。(3) 处理机与设备之间的并行。例如,当处理机进行科学运算时,打印机可以打印文档。(4) 处理机与通道之间的并行。通道程序的执行可与处理机的操作并行。(5) 通道与通道之间的并行。通常一个系统中有多个通道,这些通道可以并行地执行相应的通道程序。(6) 设备与设备之间的并行。例如打印机打印文档时,磁带机在输入数据。4从透明性和资源共享两方面,说明网络操作系统与分布式操作系统之间的差别。 答:从透明性上看,分布式操作系统优于网络操作系统。网络用户能够感觉到所访问的资源是在本地还是在远地;而在分布式系统中,用户感觉不到所访问的资源是否
4、在本地。分布式操作系统掩盖了资源在地理位置上的差异。从资源共享上看,分布式操作系统比网络操作系统能共享更多的资源。在网络操作系统中,一个计算任务不能由一台主机任意迁移到另外一台主机上运行;而在分布式操作系统中,所有作业可以由一台主机任意迁移到另外一台主机上处理,即可实现处理机和存储资源的共享,从而达到整个系统的负载平衡。5. 何谓作业? 何谓作业步?作业何时转为进程? 2答:作业是早期批处理系统引入的一个概念。用户要求计算机系统为其完成的计算任务的集合称为作业,分时用户在一次登录后所进行的交互过程也常被看作一个作业。一般来说,作业是比进程大的一个概念,一个作业通常包含多个计算步骤,作业中一个相
5、对独立的处理步骤称为一个作业步。当作业被作业调度程序选中并调入内存时,将按作业步创建相应进程。作业步骤之间具有顺序或并发关系。一个作业步通常可以由一个进程来完成,这样一个作业在内存处理时通常与多个进程相对应,即作业与进程具有一对多的关系。第 3 章 进程管理1. 为何引入多道程序设计? 在多道程序系统中,内存中作业的道数是否越多越好? 请说明原因。答:引入多道程序设计技术是为了提高计算机系统资源的利用率。在多道程序系统中,内存中作业的道数并非越多越好。一个计算机系统中的内存、外设等资源是有限的,只能容纳适当数量的作业,当作业道数增加时,将导致对资源的竞争激烈,系统开销增大,从而导致作业的执行缓
6、慢,系统效率下降。2. 什么是进程?比较进程与程序之间相同点与不同点答:进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。进程与程序的差别:(1)程序是静态的,而进程是动态的;(2)程序可以写在纸上或在某一存储介质上长期保存,而进程具有生存期,创建后存在,撤销后消亡;(3)一个程序可以对应多个进程,但一个进程只能对应一个程序;例如,一组学生在一个分时系统中做 C语言实习,他们都需要使用 C 语言的编译程序对其源程序进行编译,为此每个学生都需要有一个进程,这些进程都运行 C 语言的编译程序。另外,一个程序的多次执行也分别对应不同的进程。3. 进程一般具有哪三个主要状态?举例说明状态转换
7、的原因。答:进程在其生存期内可能处于如下三种基本状态之一:(1) 运行态(Run): 进程占有处理机资源,正在运行。 显然,在单处理机系统中任一时刻只能有一个进程处于此种状态;(2) 就绪态(Ready): 进程本身具备运行条件,但由于处理机的个数少于可运行进程的个数,暂未投入运行。 即相当于等待处理机资源(3) 等待态(Wait): 也称挂起态(Suspended)、封锁态(Blocked)、睡眠态(Sleep)。 进程本身不具备运行条件,即使分给它处理机也不能运行。 进程正等待某一个事件的发生,如等待某一资源被释放,等待与该进程相关的 I/O 传输的完成信号等。进程的三个基本状态之间是可以
8、相互转换的。具体地说,当一个就绪进程获得处理机时,其状态由就绪变为运行;当一个运行进程被剥夺处理机时,如用完系统分给它的时间片、3出现更高优先级别的其它进程,其状态由运行变为就绪;当一个运行进程因某事件受阻时,如所申请资源被占用、启动 I/O 传输未完成,其状态由运行变为等待;当所等待事件发生时,如得到申请资源、I/O 传输完成,其状态由等待变为就绪。4. 比较用户级线程与系统级线程间在以下方面的差别和各自的优缺点。(1) 创建速度;(2)切换速度;(3)并行性;(4)TCB 的存储位置答:用户级线程由系统库支持。线程的创建和撤销,以及线程状态的变化都由库函数控制并在目态完成,与线程相关的控制
9、结构 TCB 保存在目态空间并由运行系统维护。由于线程对操作系统不可见,系统调度仍以进程为单位,核心栈的个数与进程个数相对应。用户级别线程的优点在于:(1)线程不依赖于操作系统,可以采用与问题相关的调度策略,灵活性好;(2)同一进程中的线程切换不需进入操作系统,因而实现效率较高。 缺点在于:(1)同一进程中的多个线程不能真正并行,即使在多处理机环境中;(2)由于线程对操作系统不可见,调度在进程级别,某进程中的一个线程通过系统调用进入操作系统受阻,该进程的其它线程也不能运行。 核心级别线程通过系统调用由操作系统创建,线程的控制结构 TCB 保存于操作系统空间,线程状态转换由操作系统完成,线程是
10、CPU 调度的基本单位。另外由于系统调度以线程为单位,操作系统还需要为每个线程保持一个核心栈。核心级线程的优点是并发性好,在多 CPU 环境中同一进程中的多个线程可以真正并行执行。核心级别线程的缺点是线程控制和状态转换需要进入操作系统完成,系统开销比较大。5. 何谓系统开销? 试举三个例子说明之。答:运行操作系统程序,实现系统管理所花费的时间和空间称为系统开销。例如,操作系统的内核要占用内存空间,页面调度时需占用设备资源并消耗处理机时间,进程切换时也要占用处理器时间。第 4 章 处理机调度1. 为什么说“关中断”会影响系统的并发性? 答:考虑单处理机系统。在单处理机系统中,并发是通过将处理机轮
11、流分配给多个进程而实现的,这个分配是由操作系统中处理机调度程序完成的。中断是进程切换的必要条件,如果关了中断,则操作系统无法获得处理机的控制权,也就无法使多个进程分时共享处理机。在关中断期间,一个进程独占处理机。所以说“关中断”会影响系统的并发性2. 对于下面中断与进程状态转换之间的关系各举两个例子说明之:(1) 定会引起进程状态转换的中断事件;(2) 可能引起进程状态转换的中断事件。4答:定会引起进程状态转换的中断事件:当前运行进程终止、应用程序启动 I/O 传输并等待 I/O 数据、运行程序申请当前被占用的某一资源。可能引起进程状态转换的中断事件:时钟中断事件可能引起进程状态转换,例如对于
12、时间片轮转进程调度算法,若时钟中断发生后,当前进程的时间片已用完,则将发生进程切换;否则不发生进程切换。3. 某系统采用可抢占处理机的静态优先数调度算法,请问何时会发生抢占处理机的现象?答:当一个新创建的进程或一个被唤醒进程的优先数比正在运行进程的优先数高时,可能发生抢占处理机现象。4. 在实时系统中,采用不可抢占处理机的优先数调度算法是否适宜? 为什么?答:不适宜。一旦一个低优先数、需要大量 CPU 时间的进程占用处理机,就会一直运行,直到运行结束,或者直到因某事件而阻塞。在此之前,即使高优先数的紧急任务到达,也得不到处理,因而可能延误对重要事件的响应和处理。5. 在分时系统中,进程调度是否
13、只能采用时间片轮转算法? 为什么?答:分时系统的特点是要求响应速度及时,除 RR 算法之外,还可以采用可剥夺 CPU 的动态优先数调度算法。如经典 UNIX 的处理机调度算法,由于负反馈性质,算法也可以保证响应速度。6. 有人说,在采用等长时间片轮转处理机调度算法的分时操作系统中,各终端用户所占有处理机的时间总量是相同的。这种说法对吗? 为什么?答:这种说法不对。因为处理机是分配给进程(线程)的,而不同终端用户可能有不同数量的进程,一个拥有较多数量进程的终端显然比拥有较少数量进程的终端获得 CPU 的时间要多。第 5 章 同步与互斥1 何谓与时间有关的错误? 举例说明之。 答:并发进程的执行实
14、际上是进程活动的某种交叉,某些交叉次序可能得到错误结果。由于具体交叉的形成与进程的推进速度有关,而速度是时间的函数,因而将这种错误称为与时间有关的错误。2 有人说,假设两个进程之间没有共享内存,则二者之间没有公共变量,这种说法准确吗? 说明原因。 答:如果只从用户空间考虑,这种说法是正确的。但从操作系统的角度来说并不准确。两个没有公共内存的用户进程可能同时(宏观)进入操作系统,并访问操作系统空间中的公共变量。3为何开关中断进程互斥方法仅在单 CPU 系统中是有效的? 5答:关中断方法不适用于多 CPU 系统,因为关中断只能保证 CPU 不由一个进程切换到另外一个进程,从而防止多个进程并发地进入
15、公共临界区域。但即使关中断后,不同进程仍可以在不同 CPU 上并行执行关于同一组共享变量的临界区代码.4在多处理机系统中,软件互斥方法是否有效?为什么? 答:依然有效。多处理机并行与单处理并发之间的差别在于程序交叉的粒度,单处理机机环境中进程交叉发生在指令之间,多处理机环境中进程交叉发生在指令周期之间。由于纯软件互斥算法并不依赖特殊的硬件指令(如 test_and_set),指令之间的交叉与指令周期之间的交叉结果相同。5设 CR1 是关于一组共享变量 SV1 的临界区域,CR2 是关于另外一组共享变量 SV2 的临界区域,当进程 P1 进入 CR1 时,进程 P2 是否可以进入 CR2? 为什
16、么? 答:可以。因为互斥是在变量级别上的,多个进程同时进入关于不同变量的临界区不会引起与时间有关的错误。6. 设自行车生产线上有一只箱子,其中有 N 个位置(N3),每个位置可存放一个车架或一个车轮; 又设有三个工人,其活动分别为:工人 1 活动:do 加工一个车架;车架放入箱中;while(1)工人 2 活动:do 加工一个车轮;车轮放入箱中;while(1)工人 3 活动:do 箱中取一车架;箱中取二车轮;组装为一台车;while(1)试用信号灯与 PV 操作实现三个工人的合作,要求解中不含死锁。解:用信号灯与 PV 操作实现三个工人的合作,管程与会合解法可仿照给出。首先不考虑死锁问题,工
17、人 1 与工人 3、工人 2 与工人 3 构成生产者与消费者关系,这两对生产/消费关系通过共同的缓冲区相联系。从资源的角度来看,箱子中的空位置相当于工人 1 和工人 2 的资源,而车架和车轮相当于工人 3 的资源。定义三个信号灯如下:semaphore empty=N;/空位置semaphore wheel=0;/车轮semaphore frame=0;/车架三位工人的活动分别为:工人 1 活动:do 加工一个车架;P(empty);车架放入箱中;V(frame);工人 2 活动:do 加工一个车轮;P(empty);车轮放入箱中;V(wheel);工人 3 活动:do P(frame);箱中
18、取一车架;V(empty);P(wheel);6while(1) while(1) P(wheel);箱中取二车轮;V(empty);V(empty);组装为一台车;while(1)分析上述解法易见,当工人 1 推进速度较快时,箱中空位置可能完全被车架占满或只留有一个存放车轮的位置,而当此时工人 3 同时取 2 个车轮时将无法得到,而工人 2 又无法将新加工的车轮放入箱中;当工人 2 推进速度较快时,箱中空位置可能完全被车轮占满,而当此时工人 3 取车架时将无法得到,而工人 1 又无法将新加工的车架放入箱中。上述两种情况都意味着死锁。为防止死锁的发生,箱中车架的数量不可超过 N-2,车轮的数量
19、不可超过 N-1,这些限制可以用两个信号灯来表达。semaphore s1=N-2;semaphore s2=N-1;如此,可以给出不含死锁的完整解法如下:工人 1 活动:do 加工一个车架;P(s1);P(empty);车架放入箱中;V(frame);while(1)工人 2 活动:do 加工一个车轮;P(s2);P(empty);车轮放入箱中;V(wheel);while(1)工人 3 活动:do P(frame);箱中取一车架;V(empty);V(s1);P(wheel);P(wheel);箱中取二车轮;V(empty);V(empty);V(s2);V(s2);组装为一台车;whil
20、e(1)7. 编写一个管程,使得调用进程能够等待若干指定时间单位(ticks)可以假定有一个硬件实时钟,每隔一个 tick 时间单位调用该管程一次。解:两个外部过程:sleep 用于进程等待指定时间,tick 用于时钟中断记数和唤醒等待进程。TYPE sleep_interval=MONITOR;Var count: integer;/tick 计数q: condition;/等待队列define sleep, tick;7PROCEDURE sleep(interval:integer);BEGINcount:=intervalwait(q);END;PROCEDURE tick;BEGIN
21、count:=count-1;IF count=0 THENsignal(q);END;BEGIN END;8. 对相关临界区的管理有哪些要求?答:(1)空闲让进当无进程处于临界区时,相应的临界资源处于空闲状态。因而可允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。(2) 忙则等待当已有进程进入自己的临界区时,意味着相应的临界资源正被访问,因而所有其它试图进入临界区的进程必须等待,以保证各个进程互斥地访问临界资源。(3) 有限等待对要求访问临界资源的进程,应保证该进程能在有效时间内进入自己的临界区,以免陷入“死等”状态。这称为饥饿(若一个进程无限等待)或死锁(若两个以上
22、进程相互无限等待) 。(4) 让权等待当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等” 。第 6 章 死锁1下面关于死锁问题的叙述哪些是正确的,哪些是错误的,说明原因。 (1) 参与死锁的所有进程都占有资源;(2) 参与死锁的所有进程中至少有两个进程占有资源;(3) 死锁只发生在无关进程之间;(4) 死锁可发生在任意进程之间。答:说法(1)是错误的,应该是参与死锁的所有进程都等待资源。如下图所示,参与进程p1、p2、p3、p4,尽管 p3、p4 不占有资源,但也卷入死锁。8说法(2)正确。 参与死锁的进程至少有两个,设为 p1,p2,p1 占有资源 r1 而等待资源r2,p
23、2 占有资源 r2 而等待资源 r1。说法(3)错误。死锁也可能发生在相关进程之间,如 p1 和 p2 也可能是相关进程。说法(4)正确,死锁既可能发生在相关进程之间,也可能发生在无关进程之间。即死锁可发生在任意进程之间。2什么叫饥饿?什么叫饿死?举例说明之 答:在一个动态系统中,资源请求与释放是经常性发生的进程行为。对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,由分配策略确定资源分配给进程的次序。资源分配策略可能是公平的(fair),能保证请求者在有限的时间内获得所需资源;资源分配策略也可能是不公平的(unfair),即不能保证等待时间上界的存在。在后一种情况
24、下,即使系统没有发生死锁,某些进程也可能会长时间等待。当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿(starvation),当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死(starve to death)。考虑一台打印机分配的例子,当有多个进程需要打印文件时,系统按照短文件优先的策略排序,该策略具有平均等待时间短的优点,似乎非常合理,但当短文件打印任务源源不断时,长文件的打印任务将被无限期地推迟,导致饥饿以至饿死。3在银行家算法中,若出现如下资源分配情况: Allocation Need AvailableABCD ABCD ABCDP0 0032
25、0012 1623P1 1000 1750P2 1354 2356P3 0332 0652P4 0014 0656试问:(1)当前状态是否安全?(2)如果进程 P2 提出安全请求 Request2=(1,2,2,2),系统能否将资源分配给它?说明原因解:(1)当前状态是安全状态。运行安全性检查算法如下:1)Work = Available;Finish = false;2)寻找满足如下条件的 i:Finishi=false 并且 NeediWork i;如果不存在,则转步骤 4);3)Work = Work + Allocation i;Finish i = true;转步骤 2)4)如果对于
26、所有 i,Finish i = true,则系统处于安全状态,否则处于不安全状态。9令 Work = Available=(1, 6, 2, 3)运行安全性检测算法,Finish0=false 并且 Need0=(0 0 1 2),它使 Finishi=true,对于所有0i4,因而可以断言系统当前处于安全状态(2)运行银行家算法,由于 Request2=(1, 2, 2, 2)Need2=(2, 3, 5, 6),因而请求合法。进一步,Request2=(1, 2, 2, 2)Available=(1, 6, 2, 3),故该请求是可以满足的。假设将资源分配给 p2,则系统状态变为:Allo
27、cation NeedAvailableABCDABCDABCDP0:003200120401P1:10001750P2:25 761134P3:03320652P4:00140656运行安全性检测算法,Work=Available=(0, 4, 0, 1),Finishi=false,此时所有NeediWorki均不成立,结果 Finishi均为 false,不存在安全进程序列,系统处于不安全状态。系统将取消资源分配并恢复原来状态,进程 p2 等待。4. 某系统采用死锁检测手段发现死锁,设系统中资源类集合为A,B,C,资源类 A 中共有 8 个实例,资源类 B 中共有 6 个实例,资源类 C
28、 中共有 5 个实例又设系统中进程集合为p1,p2,p3,p4,p5,p6,某时刻系统状态如下: Allocation Request AvailableABC ABC ABCp1: 100 000 221p2: 321 000p3: 012 202p4: 000 000p5: 210 031p6: 001 000(1)在上述状态下系统依次接受如下请求:Request1=(1,0,0);Request2=(2,1,0);Request4=(0,0,2)。给出系统状态变化情况,并说明没有死锁。10(2)在由(1)所确定的状态下系统接收如下请求:Request1=(0,3,1),说明此时已发生死锁
29、,并找出参与死锁的进程。 解:(1)如果系统只是接受请求,但是没有分配资源给进程,那么系统状态变为:Allocation RequestAvailable ABCAB CA B Cp1: 10 010 02 2 1p2: 3 2 12 1 0p3: 0 1220 2p4: 00000 2p5: 21003 1p6: 0 0100 0在该状态下运行死锁检测算法,可以找到一个进程序列,它使Finishi=true,对于所有 1i6,因而可以断言系统当前没有进入死锁状态。如果系统接受请求后,将一个 A 分配给进程 p1,则系统状态变为:Allocation RequestAvailable ABCA
30、B CA B Cp1: 20 00 0 012 1p2: 3 2 12 1 0p3: 0 1220 2p4: 00000 2p5: 21003 1p6: 00100 0在该状态下运行死锁检测算法,可以找到一个进程序列,它使Finishi=true,对于所有 1i6,因而可以断言系统当前没有进入死锁状态。(2)设在(1)的状态下系统接收如下请求:Request1=(0,3,1),则系统状态变为:Allocation RequestAvailable ABCAB CA B Cp1: 10 013 12 2 1p2: 3 2 12 1 0p3: 0 1220 2p4: 00000 2p5: 2100
31、3 1p6: 00100 0在该状态下运行死锁检测算法,可以找到一个进程序列,它使Finishi=true,对于所有 1i6,因而可以断言系统当前没有进入死锁状态11设在(1)的状态下系统接收如下请求:Request1=(0,3,1),则系统状态变为:Allocation RequestAvailable ABCAB CA B Cp1: 20 003 11 2 1p2: 3 2 12 1 0p3: 0 1220 2p4: 00000 2p5: 21003 1p6: 00100 0在该状态下运行死锁检测算法,找不到一个进程序列使 Finishi=true,对于所有1i6,因为存在 i1,2,3,
32、5,使 Finishi=false,因而可以断言系统已经进入死锁状态,进程 p1,p2,p3,p5 卷入死锁5、简述解决死锁问题的三种方法。答:(1)预防死锁。通过设置某些限制条件,以破坏产生死锁的四个必要条件中的一个或几个,来防止发生死锁。预防死锁是一种较可取的方法,已得到广泛应用,但可能导致系统资源利用率很低。(2)避免死锁。这里不须预先采取各种限制措施,去破坏产生死锁的必要条件,而是在资源的动态分配过程中,使用某种方法去防止系统进入不安全状态,从而避免了死锁的发生。这种方法只须预先加以较弱的限制条件,便可获得较高的资源利用率,但在实现上有一定难度。目前较完善的系统中,常用此方法来避免发生
33、死锁。(3)检测死锁。这种方法允许系统运行过程中发生死锁。但通过系统所设置的检测机构可以及时检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中清除所发生的死锁。第 7 章 内存管理1对于如下存储管理方式来说,进程地址空间各是几维的? (1)页式;(2)段式;(3)段页式答:(1)页式存储管理中,进程地址空间是一维的;(2)段式存储管理中,进程地址空间是二维的;(3)段页式存储管理中,进程地址空间是二维的。2在页式存储管理中,页的划分对用户是否可见?在段式存储管理中,段的划分对用户是否可见?在段页式存储管理中,段的划分对用户是否可见?段内页的划分对用户是否可见? 答
34、:(1)在页式存储管理中,分页对于用户是透明的,一个进程由若干个页构成,所有页的长度相同;(2)在段式存储管理中,分段对于用户是可见的,一个进程由若干个段构成,各个段的长度可以不同,一个段恰好对应一个程序单位;(3)在段页式存储管理中,段的划分对用户是可见的,段内页的划分对用户是透明的,一个段由若干个页构成,所有页的长度相同。123为什么空闲页面链适合管理内存空间,而不适合管理外存空间? 答:空闲页面链是将所有的空闲页面连成一个链,分配时可取链头的页面,去配时可将被释放的页面连入链头。此种方法适用于内存页面的分配,但对于外存页面的分配因分配和去配均需执行一次 I/O 传输,速度较慢。特别是当要
35、申请多个页面时,需要进行多次 I/O传输,分配效率太低。4为何引入多级页表?多级页表是否影响速度? 答:早期的内存空间和进程空间都比较小,一个进程的页表长度也较小,可以在内存分配一个连续的存储区域保存进程的页表。但随着内存空间和进程空间的快速增长,页表越来越大,单级页表的存放遇到困难。 例如: 对于长度为 232 的逻辑地址空间,页面长度定义为 212(4kB),则一个进程最多可以拥有 220 个页面,也就是说系统需要提供长度为 220 的连续页表存储区,这是困难的。 为此常将页表分为多级进行存放,例如对于上述例子,将220 分为 210210 两级,一级称为外页表,另一级称为内页表,此时外页
36、表和内页表的长度都在 210 以内。可以很自然地把二级页表扩展为多级页表显然,多级页表会降低地址映射的速度,但通过快表仍可以将效率保持在合理的范畴内例如对于四级页表,假定快表的命中率为 98%,快表与内存的访问时间分别为 20(ns)和 100(ns),有效访问时间为:EAT= 98%(20+100)+2%(20+500) = 128(ns)额外的开销是(128-100)=28ns。5比较段式存储管理与页式存储管理的优点和缺点 答:页式存储管理优缺点:(1)静态等长存储分配简单,有效地解决了内存碎片问题;(2)共享和保护不够方便。段式存储管理优缺点:(1)动态异长存储分配复杂,存在碎片问题;(
37、2)共享与保护方便;(3)可以实现动态链接和动态扩展。6在段式存储管理中,段的长度可否大于内存的长度?在段页式存储管理中呢? 答:在段式存储管理中,段的长度不能大于内存的长度,因为一个独立的段占用一段连续的内存空间,内存分配是以段为单位进行的,如果一个段的长度大于内存的长度,那么该段将无法调入内存。在段页式存储管理中,段的长度可以大于内存的长度,因为内存分配的单位是页,一个段内逻辑上连续的页面,可以分配到不连续的内存页面中,不要求一个段的所有逻辑页都进入内存。第 8 章 设备管理1. 简略叙述 I/O 操作的演变过程:查询方式中断方式通道方式,并分析对于多道程序设计所带来的影响。答:I/O 操
38、作最早为查询方式,将待传输的数据放入 I/O 寄存器并启动设备,然后反复测试设备状态寄存器直至完成。采用这种方式,处理机与设备之间是完全串行的。伴随设备中断处理机的能力,产生了中断 I/O 方式。CPU 在启动设备后,可从事其它计算工作,设备与 CPU 并行,当设备 I/O 操作完成时,向 CPU 发送中断信号,处理机转去进行相应处理,13然后可能再次启动设备传输。中断使多道程序设计成为可能:一方面中断使操作系统能够获得处理机控制权,另一方面通过 I/O 中断可以实现进程状态的转换。中断使处理机与设备之间的并行成为可能,但 I/O 操作通常以字节为单位,当设备很多时对处理机打扰很多,为此人们设
39、计了专门处理 I/O 传输的处理机通道。通道具有自己的指令系统,可以编写通道程序,一个通道程序可以控制完成许多 I/O 传输,只在通道程序结束时,才向处理机发生一次中断。2. 通道与 DMA 之间有何共同点?有何差别?答:通道与 DMA 都属于多数据 I/O 方式,二者差别在于:通道控制器具有自己的指令系统,一个通道程序可以控制完成任意复杂的 I/O 传输,而 DMA 并没有指令系统,一次只能完成一个数据块传输。3. 下述设备的物理地址各是几维的?为什么在 I/O 操作之前通常使用一维地址? 一维地址与多维地址之间的对应关系是由硬件确定的,还是由操作系统确定的?(1) 磁盘组(2) 磁带(3)
40、 光盘答:(1) 磁盘组的物理地址是三维的;(2) 磁带的物理地址是一维的;(3) 光盘的物理地址是二维的。为了屏蔽设备的具体特性,在 I/O 操作之前通常使用一维地址,一维地址与三维地址之间的对应关系通常由操作系统设计者来确定。4.在下述三种类型通道中,哪种类型支持通道程序的并发执行? (1) 字节多路通道 (2) 数据选择通道 (3) 数组多路通道答:(1) 字节多路通道(byte multiplexor channel):通道中含有许多非分配型子通道,每个子通道所连接的 I/O 设备以字节为单位,分时间地与通道交换数据,主要用于连接低速 I/O 设备,通道程序可以并发执行。(2) 数组选
41、择通道(block selector channel):其所连的 I/O 设备是以块为单位与通道交换数据。用于连接多台高速设备,但其中只有一个分配型子通道,在一段时间内只能执行一道通道程序。(3) 数组多路通道(block multiplexor channel):所连外部设备以块为单位与通道交换数据. 用于连接多台高速设备,允许几个通道程序分时并行工作。5.处理机与通道之间是如何通讯的? 答:通道与处理机之间相对独立,通道程序的执行可与处理机的操作并行;因为一个系统中可能有多个通道,这些通道也可并行地执行相应的通道程序。通常,通道程序形成之后,处理机将通道程序的起始地址放到内存指定单元处,然
42、后执行通道启动指令使通道开始工作。通道被启动之后由指定单元取来通道程序的起始地址,并放入通道地址字 CAW 中,由此依次地执行各条通道指令。当通道程序执行完毕,或执行到通道结束指令时,产生通道中断信号,该信号发给处理机,处理机响应中断后取出中断字,分析中断原因并进行相应的中断处理。146. 说明下列术语之间的对应关系(1) I/O 设备(2) I/O 驱动程序(3) I/O 进程答:一般来说,一个 I/O 驱动程序与多个同类设备相对应,一个 I/O 设备与一个 I/O 进程对应。7. 什么叫缓冲(buffering)? 缓冲与缓存(caching)有何差别?答:利用存储区缓解数据到达速度与离去
43、速度不一致而采用的技术称为缓冲,此时同一数据只包含一个拷贝。例如,操作系统以缓冲方式实现设备的输入和输出操作主要是缓解处理机与设备之间速度不匹配的矛盾,从而提高资源利用率和系统效率。缓存是为提高数据访问速度而将部分数据由慢速设备预取到快速设备上的技术,此时同一数据存在多个拷贝。例如,远程文件的一部分被取到本地。当然,在有些情况下,缓冲同时具有缓存的作用。例如UNIX 系统对于块型设备的缓冲区,在使用时可保持与磁盘块之间的对应关系,既有缓冲的作用也有缓存的作用,通过预先读与延迟写技术,进一步提高了 I/O 效率。8. 在系统中缓冲区空间总长度固定的前提下,一个缓冲区过大或过小各有何优点和缺点?答
44、:缓冲区过大会造成资源浪费(平均浪费半个缓冲区容量),但是能减少 I/O 传输次数;缓冲区过小则会因 I/O 传输次数增多而增加系统开销,另外缓冲区过小会引缓冲链指针过多而浪费缓冲空间。9.假设要修改某一磁盘块上的一部分,而其它部分保持原内容不变,应当如何做?答:首先将该磁盘块内容读入内存缓冲区,然后在内存中修改相关内容,最后将修改后的缓冲区完整地回写到磁盘中。10. 某磁盘组共有 200 个柱面,由外至内依次编号为 0,199。I/O 请求以10,100,191,31,20,150,32 的次序到达,假定引臂当前位于柱面 98 处,对FCFS,SSTF,SCAN,C-SCAN,LOOK,C-
45、LOOK 引臂调度算法分别给出寻道示意图,并计算总移动量对 SCAN 和 LOOK 算法,假定引臂当前移动方向由外向内。对 LOOK 算法假定回扫方向由内向外。FCFS 引臂调度算法寻道示意图总移动量=(98-10)+(100-10)+(191-100)+(191-31)+(31-20)+(150-20)+(150-32)=88+90+91+160+9+130+118=68615SSTF 引臂调度算法寻道示意图总移动量=(100-98)+(150-100)+(191-150)+(191-32)+(32-31)+(31-20)+(20-10)=2+50+41+159+1+9+10=272SCAN
46、 引臂调度算法寻道示意图总移动量=(100-98)+(150-100)+(191-150)+(199-191)+(199-32)+(32-31)+(31-20)+(20-10)=2+50+41+8+167+1+9+10=288LOOK 引臂调度算法寻道示意图总移动量=(100-98)+(150-100)+(191-150)+(191-32)+(32-31)+(31-20)+(20-10)=2+50+41+167+1+9+10=272 C-SCAN 引臂调度算法寻道示意图总移动量=(100-98)+(150-100)+(191-150)+(199-191)+(10-0)+(20-10)+(31-
47、20)+(32-31)=2+50+41+8+10+10+9+1=13116C-LOOK 引臂调度算法寻道示意图总移动量=(100-98)+(150-100)+(191-150)+(20-10)+(31-20)+(32-31)=2+50+41+10+9+1=11311. 为什么提出 RAID 技术?RAID 技术如何提高 I/O 性能?答:这是因为硬件技术发展具有一定的不平衡性。处理机速度提高很快,通常以指数数量级别,大约每隔 18 个月速度提高一倍,而磁盘速度的提高相对极其缓慢。磁盘的速度瓶颈是磁头引臂的移动速度。解决问题的出路是并行部件和并行存取技术,多磁盘同时操作。 RAID 是一个物理磁
48、盘的集合,作为一个逻辑磁盘管理和使用。数据被分散存于多个物理磁盘上,校验等冗余信息用于提高信息存取的可靠性。12. RAID level5 是常用的 RAID 级别,分析其性能和实现代价。答:将数据分条(stripping),并存于不同磁盘上,同时将检验位分散存于各个磁盘上,磁盘数量至少为三个。对于数量为 N 的磁盘阵列,有效存储容量为 S(N-1)/N,其中 S 为单盘容量。这个级别磁盘阵列利用率较高,任意一个磁盘发生故障,可根据其它 N-1 个磁盘进行恢复,可靠性高,访问速度快,是最常见的磁盘阵列组织形式。13. 独占型设备利用率低的原因何在? 虚拟技术为何能提高独占型设备的利用率? 输入
49、型和输出型虚拟设备各是如何实现的?答:用户直接使用独占型设备的方式是在申请命令与释放命令之间进程将一直占用所申请到的独占型设备,这种设备使用方式有如下两个主要缺点:(1)由于独占型设备速度较慢,进程在执行使用命令时需要花费较长时间等待 I/O 传输完成,因而影响进程推进速度;(2)由于在各个使用命令之间可能夹杂着与该设备无关的操作(如计算、操作其它设备等),进程在占有该设备的期间内不一定一直使用该设备,因而降低了设备的利用率。为克服上述缺点,引入了虚拟设备。利用共享型设备实现的数量较多、速度较快的独占型设备称为虚拟设备。其基本思想是在独占型设备与内存进程之间加入一个共享型设备作为过渡,因为共享型设备速度很快,所以进程 I/O 传输所需等待时间较短,提高了进程推进速度。另外由于信息在独占型设备与共享型设备之间的传输是连续进行的,即独占型设备被占用期间一直被使用,因而提高了设备资源的利用率。(1)输入型虚拟设备实现对于输入型虚拟设备来说,信息的流向是由独占型设备到共享型设备,再由共享型设备到进程空