17.信箱逻辑上分成 ① 和 ② 两部分。 ① 中存放有关信箱的描述。 ② 由若干格子组成,
每格存放一信件,格子的数目和大小在创建信箱时确定。 答:①信箱头 ②信箱体
18.当多个进程等待分配处理机时,系统按一种规定的策略从多个处于 状态的进
程中选择一个进程,让它占有处理机,被选中的进程就进入了 状态。 答:就绪、执行
19.若使当前运行的进程总是优先级最高的进程,应选择 进程调度算法。 答:抢占式(剥夺式)
20.操作系统中用于完成一些特定功能的、不可中断的过程称为 。 答:原语 三.简答题
1.在操作系统中为什么要引入进程概念?它与程序的关系是怎样的?
答:在操作系统中,由于多道程序并发执行时共享系统资源,共同决定这些资源的状态,因此系统中各程序在执行过程中就出现了相互制约的新关系,程序的执行出现“走走停停”的新状态。这些都是在程序执行的动态过程中发生的。用程序这个静态概念已不能如实反映程序并发执行过程中的这些特征。为此,人们引入“进程”这一概念来描述程序动态执行过程的性质。
进程和程序是既有联系又有区别的两个概念,进程不能脱离具体程序而虚设,程序规定了相应进程所要完成的动作。它们的主要区别如下:
(1)程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念;进程是程序在处理机上的一次执行过程,它是一个动态概念。
(2)程序的存在是永久的,而进程则是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤销而消亡。
(3)程序仅是指令的有序集合。而进程则由程序、数据和进程控制块组成。 (4)在传统的操作系统中,进程是资源分配和调度运行的基本单位,而程序不是。 (5)进程与程序之间不是一一对应的,即同一程序同时运行于若干不同的数据集合上,它将属于若干个不同的进程;而一个进程至少对应执行一个程序。 2.为了实现并发进程间的合作和协调工作,以及保证系统的安全,操作系统在进程管理方面应做哪些工作?
答:(1)进程控制:系统必须设置一套控制机构来实现进程创建、进程撤消以及进程在运行过程中的状态转换。
(2)进程同步:系统必须设置同步机制来实现对所有进程的运行进行协调,协调的方式包括进程的互斥和进程的同步。
(3)进程通信:多道程序环境下可能需要诸进程合作完成一个任务,这些进程相互间需要通过交换信息来协调各自工作的进度。因此系统必须具有进程之间通信
(交换信息)的能力。
(4)进程调度:系统必须能够在处理机空闲时,按一定算法从就绪进程队列中选择一个就绪进程,把处理机分配给它,并为之设置运行的现场使其投入运行。 3.在操作系统中引入线程概念的主要目的是什么?
答:减少程序并发执行时所需付出的时空开销,提高程序执行的并发度。特别有利于共享存储器的多处理机系统,和更加适合c/s模型。
4.在一个单CPU的多道程序设计系统中,若在某一时刻有N个进程同时存在,那么处于运行态、等待态和就绪态进程的最小和最大值分别可能是多少?
答:若多道程序设计系统中,在某一时刻有N个进程同时存在,则处于运行态的进程最少0个,最大1个;处于就绪态的进程最少0个,最大N—1个;处于等待态的进程最少0个,最大N个。
5.进程之间存在哪几种相互制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?
(1)若干同学去图书馆借书; (2)两队举行篮球比赛; (3)流水线生产各道工序; (4)商品生产和社会消费
答:进程之间的制约关系分为直接制约关系(即同步)和间接制约关系(即互斥)。同步是因合作进程之间协调彼此的工作而控制自己的执行速度,即因相互合作、相互等待而产生的制约关系;而互斥是进程之间竞争临界资源而禁止两个以上的进程同时进入临界区所发生的制约关系。 (1)属于互斥关系,因为一本书只能借给一个同学。 (2)属于互斥关系,篮球只有一个,两队都要争夺。
(3)居于同步关系,各道工序的开始都依赖前一道工序的完成。
(4)属于同步关系,商品没生产出来则消费无法进行,商品没有消费完则无须再生产。
6.为了让用户进程互斥地进入临界区,可以把整个临界区实现成不可中断的过程,即让用户具有屏蔽所有中断的能力。每当用户程序进入临界区的时候,屏蔽所有中断;当出了临界区的时候,再开放所有中断。你认为这种方法有什么缺点。
答:用户进程进入临界区时屏蔽所有中断,应当也包括系统程序。若屏蔽的是用户进程,的确可以保护临界资源,但若系统所发出的中断也被屏蔽,则会引起错误,因为系统的中断往往与当前运行的程序无关,却可能是一些重要的硬件中断,如电源故障等,故不可盲目屏蔽所有中断;又或者当时发出故障中断的中断源恰好是该临界资源,则更应该及时响应处理。 7.设有n个进程共享一个互斥段,对于如下两种情况: (1)如果每次只允许一个进程进入互斥段;
(2)如果每次最多允许m个进程(m 试问:所采用的互斥信号量初值是否相同?信号量的变化范围如何? 答:(1)信号量的初值为1。信号量的变化范围是1,0,-1,?,-(n-1)。 (2)信号量的初值为m。信号量的变化范围是:m,m-1,?,1,0,?,-(n-m)。 四.应用题 1.若程序A和B单独执行时分别需要1小时和1.5小时,其中CPU工作时间分别为18分钟和27分钟。若采用多道程序设计方法,让A和B并行工作,假定CPU利用率达到50%,另加15分钟系统开销,请问系统效率能提高多少? 解:在多道系统中,程序A和B共用的CPU时间为:(18十27)/50%=90分钟 系统效率提高=(A和B单独执行的时间总和-多道方式下总时间)/A和B单独执行的时间总和,即((60十90)-(90十15))/(60十90)=45/150=30% 2.在测量控制系统中,数据采集任务把所采集的数据送入一单缓冲区;计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步算法。 解:在本题中,应设置两个信号童sf,se,信号量sf表示缓冲区中是否有可供打印的 计算结果,其初值为o;信号量se用于表示缓冲区有无空位置存放新的信息,其初值为1。 本题的同步描述如下: int se=1; int sf=0; main( ) { cobegin get ( ) ; compute ( ); coend } get ( ) { while (采集工作未完成) { 采集一个数据; p(se); 将数据送入缓冲区; v(sf); } } compute ( ) { while (计算工作未完成) { p(sf); 从缓冲区中取出数据; v(se); 进行数据计算; } } 3.下图给出了四个进程合作完成某一任务的前趋图,试说明这四个进程间的同步关系并用P、V操作描述它。 解:上图说明任务启动后Sl先执行。当S1结束后,S2、S3可以开始执行。S2、S3完成后,S4才能开始执行。为了确保这一执行顺序,设三个同步信号量b2、b3、b4分别表示进程S2、S3、S4是否可以开始执行,其初值均为0。这四个进程的同步描述如下: int b2=0; int b3=0; int b4=0; main ( ) { cobegin s1 ( ); s2 ( ); s3 ( ); s4 ( ); coend } s1 ( ) { ? v(b2); v(b3); } s2 ( ) { p(b2); ? v(b4); } s3 ( ) { p(b3); ? v(b4); } s4 ( ) { p(b4); p(b4); /*因在s2和s3完成后均对b4作了v操作,因此这里要用两个p操作*/ ? } 4.某系统的进程状态转换图如下,请说明: (1)引起各种状态转换的典型事件有哪些? (2)当我们观察系统中某些进程时,能够看到某一进程产生的一次状态转换能引起另一进程作一次状态转换。在什么情况下,当一个进程发生转换3时能立即引起另一个进程发生转换l? (3)试说明是否会发生下述因果转换: 2 l 3 2