操作系统练习题--NEW 下载本文

内容发布更新时间 : 2024/5/4 9:24:17星期一 下面是文章的全部内容请认真阅读。

12、为什么在页式存储管理系统中常采用局部页面置换?

答:因为若系统采用了局部页面置换,则当某进程发生缺页时,只能从该进程所在内存的那一部分页面中选出一页换出,不允许从其他进程处得到新的内存块。这样,一个进程的缺页不会影响其他进程,即使发生了抖动,影响也不大,不会引起其他进程产生抖动,从而可把抖动限制在某个较小的范围之内。

13、为什么要引入缓冲技术?

答:为了缓解CPU与I/O设备速度不匹配的矛盾、为了减少外设中断CPU的次数、为了提高CPU与I/O设备间的并行性。

14、什么是多道程序设计,多道程序设计技术的特点是什么?

答:多道程序设计是把一个以上的程序同时放在内存中,并且同时处于运行状态,这些作业共享处理机时间和外部设备以及其他资源。

多道程序设计技术的主要特点是:多道、宏观上并型、微观上串行。多道是指计算机内存中同时存放多道相互独立的程序;宏观上并行是指同时进入系统的多道程序都处于运行过程中;微观上串行是指在单处理机环境中,内存中的多道程序轮流地占有CPU,交替执行。

15、分页和分段的主要区别是什么?

答:(1)页是信息的物理单位,页的内容通常无完整意义;而段是信息的逻辑单位,段的内容具有完整的逻辑意义。分页是静态分区技术,而分段是动态分区技术。

(2)页的大小固定且由操作系统决定;而段的长度不固定,决定于用户所写的程序;常由编译器根据信息的性质来划分。分页为省内存,分段为满足编程需要。

(3)分页的作业地址空间是一维线性的;而分段的作业地址空间是二维的。

16、什么叫进程同步和互斥?举例说明

答:进程同步是在几个进程合作完成一项任务时,体现各进程相互联系相互协调的关系。例如:A、B两个进程合作通过缓存区输出数据。把两个以上进程不能同时访问临界区的工作规则称为进程互斥。例如:两个进程同时使用打印机

17、进程调度中“可抢占”和“非抢占”两种方式,哪一种系统的开销更大?为什么? 可抢占式会引起系统的开销更大。

可抢占式调度是严格保证任何时刻,让具有最高优先数(权)的进程占有处理机运行,因此增加了处理机调度的时机,引起为退出处理机的进程保留现场,为占有处理机的进程恢复现场等时间(和空间)开销增大。

18、试比较进程调度与作业调度的不同点。

(1)作业调度是宏观调度,它决定了哪一个作业能进入主存。进程调度是微观调度,它决定各作业中的哪一个进程占有中央处理机。

(或)作业调度是高级调度,它位于操作系统的作业管理层次。进程调度是低级调度,它位于操作系统分层结构的最内层。

(2)作业调度是选符合条件的收容态作业装入内存。进程调度是从就绪态进程中选一个占用处理机。

四、应用题

1、三个进程 P1、P2、P3 互斥使用一个包含 N(N>0)个单元的缓冲区。P1 每次用 produce()生成一个正整数并用 put()送入缓冲区某一空单元中;P2 每次用 getodd()从该缓冲区中取出一个奇数并用 countodd()统计奇数个数;P3 每次用 geteven()从该缓冲区中取出一个偶数并用 counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述。

答:定义信号量S1控制P1与P2之间的同步;S2控制P1与P3之间的同步;empty控制生产者与消费者之间的同步;mutex控制进程间互斥使用缓冲区。程序如下: Var s1=0,s2=0,empty=N,mutex=1; Parbegin

P1:begin

X=produce(); /*生成一个数*/

P(empty); /*判断缓冲区是否有空单元*/ P(mutex); /*缓冲区是否被占用*/ Put();

If x%2==0

V(s2); /*如果是偶数,向P3发出信号*/ else

V(s1); /*如果是奇数,向P2发出信号*/ V(mutex); /*使用完缓冲区,释放*/ end.

P2:begin

P(s1); /*收到P1发来的信号,已产生一个奇数*/ P(mutex); /*缓冲区是否被占用*/ Getodd();

Countodd():=countodd()+1; V(mutex); /*释放缓冲区*/

V(empty); /*向P1发信号,多出一个空单元*/ end.

P3:begin

P(s2) /*收到P1发来的信号,已产生一个偶数*/ P(mutex); /*缓冲区是否被占用*/ Geteven();

Counteven():=counteven()+1; V(mutex); /*释放缓冲区*/

V(empty); /*向P1发信号,多出一个空单元*/ end. Parend.

2、某寺庙,有小和尚、老和尚若干.庙内有一水缸,由小和尚提水入缸,供老和尚饮用.水缸可容纳 30 桶水,每次入水、取水仅为1桶,不可同时进行。水取自同一井中,水井径窄,每次只能容纳一个水桶取水。设水桶个数为5个,试用信号灯和 PV 操作给出老和尚和小和尚的活动。

解:

semaphore empty=30; // 表示缸中目前还能装多少桶水,初始时能装 30 桶水 semaphore full=0; // 表示缸中有多少桶水,初始时缸中没有水

semaphore buckets=5; // 表示有多少只空桶可用,初始时有 5 只桶可用 semaphore mutex_well=1; // 用于实现对井的互斥操作 semaphore mutex_bigjar=1; // 用于实现对缸的互斥操作

young_monk() { while(1){ P(empty); P(buckets); go to the well; P(mutex_well); get water;

V(mutex_well); go to the temple;

P(mutex_bigjar);

pure the water into the big jar; V(mutex_bigjar); V(buckets); V(full); } }

old_monk() { while(){ P(full);

P(buckets);

P(mutex_bucket); get a bucket;

V(mutex_bucket); P(mutex_bigjar); get water; V(mutex_bigjar); V(buckets); V(empty); } }

3、桌子上有一只盘子,盘子只能放入一只水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。试用P、V操作完成上述四个进程? 答○1所用信号量设置如下:

1)互斥信号量S,初值为1,表示盘子是空的,爸爸和妈妈可以互斥地向盘中放水果。

2)同步信号量SO,初值为0,表示妈妈尚未把橘子放入盘中,用来同步妈妈和儿子的活动。 3)同步信号量SP,初值为0,表示爸爸尚未把苹果放入盘中,用来同步爸爸和女儿的活动。 ○2使用信号量机制的四个进程的同步描述如下: var

S,SP,SO:samaphore:=1,0,0; begin parbegin

爸爸:

begin L1:have an apple; P(S);{盘子}

Put an apple; V(SP);{苹果} Go to L1;

End

妈妈:

begin L2:have an orange; P(S);{盘子}

Put an orange; V(SO);{桔子} Go to L2;

End

儿子:

begin

L3:P(SO);{桔子} get an orange; V(S);{盘子}

eat an orange; go to L3;

end

女儿:

begin

L4:P(SP);{苹果}

get an apple; V(S);{盘子} eat an apple; go to L4;

end parend end

4、某幼儿园举行趣味活动,每两个小朋友一组。重复做如下活动:一个小朋友负责用一个小桶在A沙堆

取沙子,然后倒入一大盆中,另一小朋友负责用一个小桶从大盆中取沙子倒入B沙堆。大盆最多能装

10桶沙子,且在大盆中取沙子和倒沙子不能同时进行。试用P、V操作描述这两个小朋友的同步过程。 var

empty:semaphore=10; {设盆空的资源信号量}

full:semaphore=0; {设盆满的资源信号量}

mutex:semaphore=1; {设盆互斥访问信号量} begin

parbegin

process FA ()

begin repeat

从A沙堆取一桶沙子;

P(empty); P(mutex); 倒入大盆中; V(mutex);

V(full); until false;

end

process FB ()

begin repeat P(full);

P(mutex);

从大盆中取一桶沙子; V(mutex); V(empty); 倒入B沙堆;

until false; end

parend end

5、在银行家算法中,若出现下面的资源分配情况:

Process Allocation Need Available P0 0032 0012 1622 P1 1000 1750 P2 1354 2356 P3 0332 0652 P4 0014 0656 试问:

(1)该状态是否安全?

(2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?

答:(1)利用安全性算法对上面的状态进行分析(如下表所示),找到了一个安全序列{P0,P3,P4,P1,P2},故系统是安全的。

(2)P2发出请求向量Request(1,2,2,2)后,系统按银行家算法进行检查: ○1 Request2(1,2,2,2)≤Need2(2,3,5,6);(1分)

○2 Request2(1,2,2,2)≤Available(1,6,2,2);(1分) ○3系统先假定可为P2分配资源,并修改Available,Allocation2和Need2向量: Available =(0,4,0,0)