操作系统进程部分的习题
更新时间:2023-12-10 13:04:01 阅读量: 教育文库 文档下载
进程部分的习题
1. 在公共汽车上,司机进程和售票员进程各司其职。司机在正常行车中售票员售票,两者之间没有制约关系,可以任意并发。但是在其他环节,司机和售票员进程之间存在着如下同步关系:
1)司机停车后等待售票员关门后才能启动车辆。
2) 售票员售完票后,等待司机到站停车,停车后才能打开车门。 var door,stop:semaphore:=0,0begin
parbegin
司机进程: begin while(true){
wait(door); //等待售票员发送关门信息 启动车辆; 正常行车; 到站停车;
signal(stop); //给售票员发送到站信息 } end;
售票员进程: begin while(true){
关车门;
signal(door); //给司机发送关门信息 售票;
wait(stop); //等待司机发送到站信息 开车门; 上下乘客; } end
parend end.
2.某寺庙,有小和尚,老和尚若干。有一水缸,由小和尚提水入缸供老和尚饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次中能容下一个桶取水。水桶总数为3个。每人一次取缸水仅为1桶,且不可同时进行。试用记录型信号量给出有关取水、入水的算法描述。
根据题意,定义信号量及其初值如下:
(1)水桶为临界资源需互斥使用, 定义信号量bucket,因有3个桶,故初值为3; (2)水井一次只能允许下一个桶取水,定义互斥信号量well,初值为1; (3)水缸一次只能允许一个人取水,定义互斥信号量jar,初始值为1;
(4)empty和full用于小和尚和老和尚之间的同步制约关系。因为缸能存10桶水,所以empty初始值为10;开始时缸中没有水,full的初始值为0。
semaphore bucket=3,jar=1,full=0,empty=10,well=1; young_monk(){ /*小和尚入水算法*/ while(1){ wait(empty); wait (bucket); wait (well); 从水井中打水; signal(well); wait (jar); 倒入水缸; signal (jar); signal (bucket);
signal (full);
} }
old_monk(){ /*老和尚取水算法*/ while(1){ wait(full); wait (bucket); wait (jar); 从缸中取水; signal (jar);
signal (bucket); signal (empty); 从桶中倒入饮用; } }
3.设有3个进程A、B、C,其中A与B构成一对生产者与消费者(A为生产者,B为消费者),共享一个由n个缓冲区组成的缓冲池;B与C也构成一对生产者与消费者(此时B为生产者,C为消费者),共享另一个由m个缓冲区组成的缓冲池。用信号量机制协调它们的同步问题。
Semaphore full1 = 0, full2 = 0, empty1 = n, empty2 = m, mutex1 = 1, mutex2 = 1; int in1 = 0, out1 = 0, in2 = 0, out2 = 0; Buffer buffer1[n], buffer2[m]; A( ){
while(true){ }
to produce an item; wait(empty1); wait(mutex1);
把产品放入buffer1[in1]; in1 = (in1+1) mod n; signal(mutex1); signal(full1);
} B( ){ } C( ){
while(true){
wait(full2); wait(mutex2); while(true){ }
wait(full1); wait(mutex1);
从buffer1[out1]获得产品; out1 = (out1+1) mod n; signal(mutex1); signal(empty1); … … … wait(empty2); wait(mutex2);
把产品放入buffer2[in2]; in2 = (in2+1) mod m; signal(mutex2) signal(full2);
}
}
从buffer2[out2]获得产品; out2 = (out2+1) mod m; signal(mutex2); signal(empty2);
4.理发店里有一位理发师,一把理发椅和n把供等候理发顾客坐的椅子。如果没有顾客,理发师便在理发椅上睡觉。当一个顾客到来时,他必须先叫醒理发师。如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,他们就坐下来等;如果没有空椅子,他就离开。用信号量机制来描述他们的行为。
Semaphore max=n+1, next=1, ready=0, finished=0; barber( ){ } ustomer( ){
while(true){
wait(max); while(true){ }
wait(ready); 给一个顾客理发; signal(finished); signal(next);
}
}
signal(ready); wait(next); 让理发师理发; wait(finished); signal(max); 离开;
5.三个进程P1,P2,P3互斥使用一个包含N(N>0)个单元的缓冲区。P1每次用produce()生成一个正整数并用put()送入缓冲区某一空单元中;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数。请用信号量机制实现这3个进程的同步与互斥活动。 Semaphore mutex=1, empty = N, even = 0, odd = 0; P1(){
while(true){
int n;
n = produce(); wait(empty) wait(mutex); put() signal(mutex) if n mod 2 == 0
}
}
signal(even);
else
signal(odd)
P2(){ } P3(){
while(true){
wait(even); wait(mutex); geteven(); signal(mutex); signal(empty); while(true){ }
wait(odd); wait(mutex); getodd(); signal(mutex); signal(empty); countodd();
}
}
counteven();
6.某工厂有两个生产车间和一个装配车间,两个生产车间分别生产A,B两种零件,装配车间的任务是把A,B两种零件组装成产品。两个生产车间每生产一个零件后都要分别把它们送到装配车间的货架F1,F2上。F1存放A,F2存放B,F1和F2的容量均为10.装配工人每次从货架上取一个A零件和一个B零件后组装成产品。请用信号量机制来协调它们的过程。
Semaphore mutex1=1, mutex2=1, full1=0, full2=0, empty1=10, empty2=10; int in1 = in2 = out1 = out2 = 0; Buffer F1[10], F2[10] P1(){ }
while(true){ }
produce an item of A; wait(empty1); wait(mutex1);
put the item into F1[in1]; in1++;
signal(mutex1); signal(full1);
P2(){ } P3(){
while(true){
wait(full1); wait(mutex1);
get the item into F1[out1]; out1++; signal(mutex1); signal(empty1); wait(full2); wait(mutex2);
get the item into F2[out2]; while(true){ }
produce an item of B; wait(empty2); wait(mutex2);
put the item into F2[in2]; in2++;
signal(mutex2); signal(full2);
正在阅读:
操作系统进程部分的习题12-10
六年级英语上册Unit6 and Recycle2教案02-29
SQLServer 2008数据库复制07-20
2016年广东卫生应急培训-突发中毒事件卫生应急课后作业答案汇总05-15
视频剪切软件那个好?03-19
杨万里《梅花》02-08
胶州湾的变迁10-28
西安交大公司金融复习资料10-19
供应链运作对企业的影响分析05-18
《管理学原理》考试考前复习资料01-23
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 习题
- 进程
- 操作系统
- 部分
- 第十四届多媒体课件大赛获奖名单获奖作品名单 - 图文
- (八年级物理教案)八年级物理下册《功率》导学案人教版
- 资金的时间价值练习题
- 富士达电梯调试与维修手册 - 图文
- 高考地理总复习 自然灾害与防治课后检测选修6
- 广东省河源市中国教育学会中英文实验学校七年级下学期第2周周清试题(历史)
- ObjectARX给CAD发送命令的几种方法
- 单片机重点复习与课后答案
- 西藏自治区差旅费管理办法
- 小学四年级校本课程教案
- 人本主义学习理论
- 2013年高考总复习语文人教版浙江专题十一古代诗歌鉴赏专题检测(附答案)
- 关于社区矫正对象重新犯罪的风险评估工作的几点思考
- apahe和tomcat的整合,两种方法,实验
- 机械制造考试模拟习题2
- 七氟醚麻醉诱导在患者全身麻醉中的应用效果观察 -
- 华三华为交换机-路由器配置常用命令汇总
- 庖丁解牛导学案(含答案)
- 2018年3月份天津高考英语试卷详细解析--大山Word版
- 8.0任务管理中心预警设置的相关说明12