第一范文网 - 专业文章范例文档资料分享平台

计算机操作系统复习要点

来源:用户分享 时间:2025/6/8 11:25:09 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

21、 读者/写者问题。有一数据区为多个进程所共享,假设一些进程只能对该数据

区完成读操作(读者),而另一些进程只能对其完成写操作(写者),读者和写者要遵守以下的约束:

(1) 允许多个读者同时从数据区中读数据; (2) 当有读者正在读数据时,不允许写者写数据; (3) 任何时候只允许一个写者向数据区中写数据; (4) 若有写者正在写数据区,不允许读者读数据。

试用P、V操作实现读者/写者问题

解: INT MUTEX-COUNT;/*读进程之间互斥访问变量COUNT*/

INT MUTEX-RW;/*读进程与写进程,写进程与写进程之间互斥访问DATA区*/ INT COUNT=0;/*读进程数目*/ MAIN() {

COBEGIN READ(); WRITE(); COEND }

/*写者进程*/ writer() { P(mutex_rw); write data into data area; V (mutex_rw); } Read data from data area; P(mutex_count); Readcount--; If(readcount==0) V(mutex_rw); V(mutex_count);

/*读者进程*/ reader() { P(mutex_count); Readcount++; If(readcount==1) P(mutex_rw); V(mutex_count);

22、 某数据库有一个写进程,多个读进程,它们之间读、写操作的互斥要求是:写

进程正在写该数据库时不能有其他进程读数据库,也不能有其他进程写该数据库;读进程之间不互斥,可以同时读该数据库。请用信号量及P、V操作描述这一组进程的工作过程。(同上) 23、

哲学家甲请哲学家乙、丙、丁至某处讨论问题,约定全体到齐后开始讨论:在

讨论的间隙四位哲学家进餐,每人进餐时都需使用刀、叉各一把,餐桌上的布置如

图,请用信号量及P、V操作说明四位哲学家的同步、互斥过程。

叉2 刀1 丙 食物 甲 刀2 乙 叉1 解:INT FORK1=1;/*资源叉1是否可用*/

INT FORK2=1;/*资源叉2是否可用*/ INT KNIFE1=1;/*资源刀1是否可用*/ INT KNIFE2=1;/*资源刀2是否可用*/ MAIN() {

COBEGIN

Pa();/*Pa表示哲学家甲的活动*/ Pb(); Pc();

Pd(); COEND }

Pa() Pb() Pc() Pd() { { { { : : : : P(KNIFE1); P(KNIFE2); P(KNIFE2); P(KNIFE1); P(FORK1); P(FORK1); P(FORK2); P(FORK2); 进餐; 进餐; 进餐; 进餐; V(KNIFE1); V(KNIFE2); V(KNIFE2); V(KNIFE1); V(FORK1); V(FORK1); V(FORK2); V(FORK2); : : : : } } } }

24、

设公共汽车上,司机和售票员的活动分别是: 司机的活动:启动车辆; 售票员的活动:关车门; 正常行车; 售票; 到站停车; 开车门;

在汽车不断地到站、停车、行车过程中,这两个活动有什么同步关系?用信号量和P、V操作实现它们的同步。

解:1)同步关系:售票员关车门后向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行驶过程中,售票员售票,到站时司机停车,售票员在车停后开车门让乘客上下车。 2)同步实现(用P、V操作)

INT S1=0;/*是否允许司机开车*/ INT S2=0;/*是否允许售票员开车门*/ MAIN() {

COBEGIN

Driver();/* Driver表示司车的活动*/ Busman();/* Busman表示售票员的活动*/ COEND

}

Driver() Busman() { { : : P(S1); 关车门; 启动车辆; V(S1); 正常行驶; 售票; 到站停车; P(S2); V(S2); 开车门; : 上下乘客; } :

}

一、解析题

1、 为什么说采用有序资源分配法不会产生死锁?

解:为了便于说明,不妨设系统中有M类资源,N个进程,分别用R1,R2……,RM(1,2,……,M看作资源号)和P1,P2……,Pn表示。根据有序资源分配法可知,进程申请资源时必须按照资源编号的升序进行,即任何进程在占有了Ri资源后,再申请的资源Rj的编号j一定大于I。因此在任一时刻,系统中至少存在一个进程Pk,它占有了较高编号的资源Rh,且它继续请求的资源必然是空闲的,因而Pk可以一直向前推进直至完成,当Pk运行完成后即会释放它占有的所有资源,在Pk;在Pk完成之后,剩下的进程集合中同样会存在一个进程,它占有了较高的资源,且它继续请求的资源必然是空闲的,因而它可以一直向前推进直至完成;以此类推,所有进程均可运行完成,故不会发生死锁。

2、 N个进程共享某种资源R,该资源共有m个可分配单位,每个进程一次一个地申请或释放资

源单位。假设每个进程对该资源的最大需求量均小于m,且各进程最大需求之和小于m+n,试证明在这个系统中不可能发生死锁。

解:设:max(i):表示第I进程的最大资源需求量 need(i): 表示第I进程的还需要的资源量

allocation(i): 表示第I进程的已分配到的资源量 由题中给定条件可知:

max(1)+max(2)+…+max(n)=(allocation(1) +allocation(2)+…+allocation (n))+( need(1)+need(2)+…+need(n))

假若系统发生死锁,则有:(m个资源均应全部分配出去)即

allocation(1) +allocation(2)+…+allocation (n)=m (2)

同时有(所有进程处于无限等待状态):

need(1)+need(2)+…+need(n)>=n (3)

则由(2)+(3)得:

搜索更多关于: 计算机操作系统复习要点 的文档
计算机操作系统复习要点.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5rvkc9odr56vudb8cen1_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top