1第1、2章操作系统概述、作业管理1.硬件将处理机划分为两种状态,即管态和目态,这样做给操作系统设计带来什么好处?答:便于设计安全可靠的操作系统。管态和目态是计算机硬件为保护操作系统免受用户程序的干扰和破坏而引入的两种状态。通常操作系统在管态下运行,可以执行所有机器指令;而用户程序在目态下运行,只能执行非特权指令。如果用户程序企图在目态下执行特权指令,将会引起保护性中断,由操作系统终止该程序的执行,从而保护了操作系统。2.中断与程序并发之间的关系是什么?答:中断是程序并发的前提条件。如果没有中断,操作系统不能获得系统控制权,无法按调度算法对处理机进行重新分配,一个程序将一直运行到结束而不会被打断。3.何谓并行?何谓并发?在单处理机系统中,下述并行和并发现象哪些可能发生,哪些不会发生?(1)进程与进程之间的并行;(2)进程与进程之间的并发;(3)处理机与设备之间的并行;(4)处理机与通道之间的并行;(5)通道与通道之间的并行;(6)设备与设备之间的并行。答:所谓并行是指同一时刻同时进行,进程并行需要多处理器的支持;所谓并发,是指在一段时间内,多个进程都在向前推进,而在同一时刻,可能只有一个进程在执行,多个进程轮流使用处理器。在单处理器系统中,可能发生的并行和并发现象如下:(2)进程与进程之间的并发。例如,在Windows操作系统中,mp3播放进程和Word字处理进程可以并发执行,这样用户就可以边听音乐边写文章了。(3)处理机与设备之间的并行。例如,当处理机进行科学运算时,打印机可以打印文档。(4)处理机与通道之间的并行。通道程序的执行可与处理机的操作并行。(5)通道与通道之间的并行。通常一个系统中有多个通道,这些通道可以并行地执行相应的通道程序。(6)设备与设备之间的并行。例如打印机打印文档时,磁带机在输入数据。4.从透明性和资源共享两方面,说明网络操作系统与分布式操作系统之间的差别。答:从透明性上看,分布式操作系统优于网络操作系统。网络用户能够感觉到所访问的资源是在本地还是在远地;而在分布式系统中,用户感觉不到所访问的资源是否在本地。分布式操作系统掩盖了资源在地理位置上的差异。从资源共享上看,分布式操作系统比网络操作系统能共享更多的资源。在网络操作系统中,一个计算任务不能由一台主机任意迁移到另外一台主机上运行;而在分布式操作系统中,所有作业可以由一台主机任意迁移到另外一台主机上处理,即可实现处理机和存储资源的共享,从而达到整个系统的负载平衡。5.何谓作业?何谓作业步?作业何时转为进程?2答:作业是早期批处理系统引入的一个概念。用户要求计算机系统为其完成的计算任务的集合称为作业,分时用户在一次登录后所进行的交互过程也常被看作一个作业。一般来说,作业是比进程大的一个概念,一个作业通常包含多个计算步骤,作业中一个相对独立的处理步骤称为一个作业步。当作业被作业调度程序选中并调入内存时,将按作业步创建相应进程。作业步骤之间具有顺序或并发关系。一个作业步通常可以由一个进程来完成,这样一个作业在内存处理时通常与多个进程相对应,即作业与进程具有一对多的关系。第3章进程管理1.为何引入多道程序设计?在多道程序系统中,内存中作业的道数是否越多越好?请说明原因。答:引入多道程序设计技术是为了提高计算机系统资源的利用率。在多道程序系统中,内存中作业的道数并非越多越好。一个计算机系统中的内存、外设等资源是有限的,只能容纳适当数量的作业,当作业道数增加时,将导致对资源的竞争激烈,系统开销增大,从而导致作业的执行缓慢,系统效率下降。2.什么是进程?比较进程与程序之间相同点与不同点.答:进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。进程与程序的差别:(1)程序是静态的,而进程是动态的;(2)程序可以写在纸上或在某一存储介质上长期保存,而进程具有生存期,创建后存在,撤销后消亡;(3)一个程序可以对应多个进程,但一个进程只能对应一个程序;例如,一组学生在一个分时系统中做C语言实习,他们都需要使用C语言的编译程序对其源程序进行编译,为此每个学生都需要有一个进程,这些进程都运行C语言的编译程序。另外,一个程序的多次执行也分别对应不同的进程。3.进程一般具有哪三个主要状态?举例说明状态转换的原因。答:进程在其生存期内可能处于如下三种基本状态之一:(1)运行态(Run):进程占有处理机资源,正在运行。显然,在单处理机系统中任一时刻只能有一个进程处于此种状态;(2)就绪态(Ready):进程本身具备运行条件,但由于处理机的个数少于可运行进程的个数,暂未投入运行。即相当于等待处理机资源(3)等待态(Wait):也称挂起态(Suspended)、封锁态(Blocked)、睡眠态(Sleep)。进程本身不具备运行条件,即使分给它处理机也不能运行。进程正等待某一个事件的发生,如等待某一资源被释放,等待与该进程相关的I/O传输的完成信号等。进程的三个基本状态之间是可以相互转换的。具体地说,当一个就绪进程获得处理机时,其状态由就绪变为运行;当一个运行进程被剥夺处理机时,如用完系统分给它的时间片、出现更高优先级别的其它进程,其状态由运行变为就绪;当一个运行进程因某事件受阻时,如所3申请资源被占用、启动I/O传输未完成,其状态由运行变为等待;当所等待事件发生时,如得到申请资源、I/O传输完成,其状态由等待变为就绪。4.比较用户级线程与系统级线程间在以下方面的差别和各自的优缺点。(1)创建速度;(2)切换速度;(3)并行性;(4)TCB的存储位置答:用户级线程由系统库支持。线程的创建和撤销,以及线程状态的变化都由库函数控制并在目态完成,与线程相关的控制结构TCB保存在目态空间并由运行系统维护。由于线程对操作系统不可见,系统调度仍以进程为单位,核心栈的个数与进程个数相对应。用户级别线程的优点在于:(1)线程不依赖于操作系统,可以采用与问题相关的调度策略,灵活性好;(2)同一进程中的线程切换不需进入操作系统,因而实现效率较高。缺点在于:(1)同一进程中的多个线程不能真正并行,即使在多处理机环境中;(2)由于线程对操作系统不可见,调度在进程级别,某进程中的一个线程通过系统调用进入操作系统受阻,该进程的其它线程也不能运行。核心级别线程通过系统调用由操作系统创建,线程的控制结构TCB保存于操作系统空间,线程状态转换由操作系统完成,线程是CPU调度的基本单位。另外由于系统调度以线程为单位,操作系统还需要为每个线程保持一个核心栈。核心级线程的优点是并发性好,在多CPU环境中同一进程中的多个线程可以真正并行执行。核心级别线程的缺点是线程控制和状态转换需要进入操作系统完成,系统开销比较大。5.何谓系统开销?试举三个例子说明之。答:运行操作系统程序,实现系统管理所花费的时间和空间称为系统开销。例如,操作系统的内核要占用内存空间,页面调度时需占用设备资源并消耗处理机时间,进程切换时也要占用处理器时间。第4章处理机调度1.为什么说“关中断”会影响系统的并发性?答:考虑单处理机系统。在单处理机系统中,并发是通过将处理机轮流分配给多个进程而实现的,这个分配是由操作系统中处理机调度程序完成的。中断是进程切换的必要条件,如果关了中断,则操作系统无法获得处理机的控制权,也就无法使多个进程分时共享处理机。在关中断期间,一个进程独占处理机。所以说“关中断”会影响系统的并发性2.对于下面中断与进程状态转换之间的关系各举两个例子说明之:(1)定会引起进程状态转换的中断事件;(2)可能引起进程状态转换的中断事件。4答:定会引起进程状态转换的中断事件:当前运行进程终止、应用程序启动I/O传输并等待I/O数据、运行程序申请当前被占用的某一资源。可能引起进程状态转换的中断事件:时钟中断事件可能引起进程状态转换,例如对于时间片轮转进程调度算法,若时钟中断发生后,当前进程的时间片已用完,则将发生进程切换;否则不发生进程切换。3.某系统采用可抢占处理机的静态优先数调度算法,请问何时会发生抢占处理机的现象?答:当一个新创建的进程或一个被唤醒进程的优先数比正在运行进程的优先数高时,可能发生抢占处理机现象。4.在实时系统中,采用不可抢占处理机的优先数调度算法是否适宜?为什么?答:不适宜。一旦一个低优先数、需要大量CPU时间的进程占用处理机,就会一直运行,直到运行结束,或者直到因某事件而阻塞。在此之前,即使高优先数的紧急任务到达,也得不到处理,因而可能延误对重要事件的响应和处理。5.在分时系统中,进程调度是否只能采用时间片轮转算法?为什么?答:分时系统的特点是要求响应速度及时,除RR算法之外,还可以采用可剥夺CPU的动态优先数调度算法。如经典UNIX的处理机调度算法,由于负反馈性质,算法也可以保证响应速度。6.有人说,在采用等长时间片轮转处理机调度算法的分时操作系统中,各终端用户所占有处理机的时间总量是相同的。这种说法对吗?为什么?答:这种说法不对。因为处理机是分配给进程(线程)的,而不同终端用户可能有不同数量的进程,一个拥有较多数量进程的终端显然比拥有较少数量进程的终端获得CPU的时间要多。第5章同步与互斥1.何谓与时间有关的错误?举例说明之。答:并发进程的执行实际上是进程活动的某种交叉,某些交叉次序可能得到错误结果。由于具体交叉的形成与进程的推进速度有关,而速度是时间的函数,因而将这种错误称为与时间有关的错误。2.有人说,假设两个进程之间没有共享内存,则二者之间没有公共变量,这种说法准确吗?说明原因。答:如果只从用户空间考虑,这种说法是正确的。但从操作系统的角度来说并不准确。两个没有公共内存的用户进程可能同时(宏观)进入操作系统,并访问操作系统空间中的公共变量。3.为何开关中断进程互斥方法仅在单CPU系统中是有效的?5答:关中断方法不适用于多CPU系统,因为关中断只能保证CPU不由一个进程切换到另外一个进程,从而防止多个进程并发地进入公共临界区域。但即使关中断后,不同进程仍可以在不同CPU上并行执行关于同一组共享变量的临界区代码.4.在多处理机系统中,软件互斥方法是否有效?为什么?答:依然有效。多处理机并行与单处理并发之间的差别在于程序交叉的粒度,单处理机机环境中进程交叉发生在指令之间,多处理机环境中进程交叉发生在指令周期之间。由于纯软件互斥算法并不依赖特殊的硬件指令(如test_and_set),指令之间的交叉与指令周期之间的交叉结果相同。5.设CR1是关于一组共享变量SV1的临界区域,CR2是关于另外一组共享变量SV2的临界区域,当进程P1进入CR1时,进程P2是否可以进入CR2?为什么?答:可以。因为互斥是在变量级别上的,多个进程同时进入关于不同变量的临界区不会引起与时间有关的错误。6.设自行车生产线上有一只箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮;又设有三个工人,其活动分别为:工人1活动:do{加工一个车架;车架放入箱中;}while(1)工人2活动:do{加工一个车轮;车轮放入箱中;}while(1)工人3活动:do{箱中取一车架;箱中取二车轮;组装为一台车;}while(1)试用信号灯与PV操作实现三个工人的合作,要求解中不含死锁。解:用信号灯与PV操作实现三个工人的合作,管程与会合解法可仿照给出。首先不考虑死锁问题,工人1与工人3、工人2与工人3构成生产者与消费者关系,这两对生产/消费关系通过共同的缓冲区相联系。从资源的角度来看,箱子中的空位置相当于工人1和工人2的资源,而车架和车轮相当于工人3的资源。定义三个信号灯如下:semaphoreempty=N;//空位置semaphorewheel=0;//车轮semaphoreframe=0;//车架三位工人的活动分别为:工人1活动:do{加工一个车架;P(empty);车架放入箱中;V(frame);工人2活动:do{加工一个车轮;P(empty);车轮放入箱中;V(wheel);工人3活动:do{P(frame);箱中取一车架;V(empty);P(wheel);6}while(1)}while(1)P(wheel);箱中取二车