操作系统习题分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
daughter:
son:
Coend end
Repeat P(Sa); 从盘中取出苹果; V(S); 吃苹果;
Until false Repeat
P(So); 从盘中取出桔子; V(S); 吃桔子; Until false
第3章 补充题
4、某大学军训正在进行实弹练习。现有一保管员负责管理 枪支弹药,有A、B两组学生,A组学生每人都有一支枪, B组学生每人都备有足够的子弹,任一学生只要有枪和子 弹就可以进行实弹练习。在打靶场有一个可以放一只枪或 一发子弹的盒子,当盒中无物品时,保管员就可以任意放 一支枪或一发子弹供学生取用。当盒中有学生所需材料时, 每次允许一个学生从中取出自己所需的材料,材料取走后, 保管员再放一件材料。
Sc,Sp: semaphore; Sp=0; /*信号量Sp,表示缓冲区Buf 是否存放计算结果*/ Sc=1; /*信号量Sc,表示缓冲区Buf 是否为空*/
Cobegin Pc: While (计算未结束); /*计算进程*/ { 计算; P(Sc); /*缓冲区是否为空?若非空,则等待*/ Buf←计算结果;
《操作系统》习题分析
总问题
• 概念要清楚、定义要准确 • 叙述要清楚、具体 • 解题过程要详细 • 有关PV操作的题必须编写程序,给出算法
第1章 补充作业
1、设在内存中有三道程序A、
B和C,并按A、B、C的优
先次序运行,其内部计算
和I/O操作的时间如图1所
示。若处理机调度程序每
次进行程序状态转换的时
T=60+2+30+2+40+2+50+2+20+2+50+2+70+2+50+2+40+2+30+2+20+2 =482
多道运行比单道运行节省时间为:482-306=176
第3章 进程管理
• 教材 p83 2、6、7、8、9、10、11、13、14、15
第3章 进程管理
1.设有三个并发进程R、M、P,它们共享一个缓冲 区。R负责从输入设备读信息,每读一个记录后, 就把它存放在缓冲区中;M在缓冲区中加工读入 的记录;P把加工后的记录打印输出。读入的记录 经加工输出后,缓冲区又可存放下一个记录。试 写出它们能正确执行的程序。
输入进程R
处理进程M 打印进程P
缓冲区
3.6 进程同步
例,共享一个缓冲区的合作进程
计算进程PC
缓冲区 打印进程PP
计算进程PC :反复地把每次计算结果放入缓冲区Buf中 打印进程PP :将计算进程每次放入缓冲区Buf中的数据
取出,通过打印机打印输出
缓冲区Buf :一次只可放一个数据
Begin
读书;
P(S) 在登记表中查找座位X; 撤消登记信息; 置座位X的标志为空; V(Sn) V(S) end Coend
讨论并分析上述程序:
– 采用指针形式(类似生产者-消费者问题) – 给每个座位设置一个信号量(类似哲学家就餐问
Βιβλιοθήκη Baidu题)
第3章 补充题
3. 桌上有一只盘子,每次只能放入一个水果。爸爸 专向盘中放苹果,妈妈专向盘中放桔子,一个女 儿专等吃盘中的苹果,一个儿子专等吃盘中的桔 子。试用P、V操作写出他们能同步的程序。
Pp: Repeat P(Sm); 从缓冲区取出一个记录; V(empty); 打印记录;
Until false Coend end
第3章 进程管理
2.有一阅览室,读者进入时必须先在一张登记表上 进行登记。该表为每一座位列出一个表目,包括 座号、姓名。读者离开时撤消登记信息。阅览室 有100个座位,试问:
V(Sp);
} Pp: While (打印未完成); /*打印进程*/
{ P(Sp); /*缓冲区是否为数据?若无,则等待*/ 从缓冲区Buf取数据;
V(Sc); 打印数据;
}
Coend
End
分析
• 缓冲区是临界资源,必须互斥访问 • 信号量empty:表示缓冲区是否为空,初值为1 • 信号量Sr:进程R是否已输入信息,初值Sr=0 • 信号量Sm:进程M是否已加工信息,初值Sm=0
• 一个读者一个进程 • 信号量的设置
S:用于读者互斥访问(登记/撤消)登记表,初值为1 Sn:表示空座位数,初值为100
• 每个座位设一个状态位:满/空(类似信箱通讯)
程序
begin S, Sn : Semaphore; S:=1 ; Sn:=100;
Cobegin process Reader i (i=1, 2, …… , n ) begin P(Sn); P(S) ; 选择标志为空的座位X; 登记; 置座位X的标志为满; V(S);
begin empty, Sr, Sm, Sp : semaphore empty:=1; Sr:=0; Sm:=0 ;
Cobegin Pr: Repeat 从输入设备读一个记录; P(empty); 将记录存入缓冲区; V(Sr); Until false Pm: Repeat P(Sr); 在缓冲区中加工记录; V(Sm); Until false
(1)为描述读者的动作,应编写几个程序, 应该设置几个进程?进程和程序之间的对应关系 如何?
(2)试用P、V操作描述这些进程间的同步 算法。
分析
• 读者动作:登记、读书、撤消 • 座位总数:100 • 登记/撤消都需要在登记表修改信息,一次只能有
一个读者对登记表进行访问 登记表是临界资源,必须互斥访问
间为2ms,请画出多道程
序系统中在处理机调度程
序管理下各程序状态转换
的时间关系图,并计算出
完成这三道程序共花多少
时间?比单道运行节省了
多少时间?
图1 各程序内部计算和I/O操作的时间
解:多道程序系统中,在处理机调度程序管理下 各程序状态转换的时间关系图如图2所示。
图2 各程序执行与状态转换的时间关系图 单道系统中,三道程序共运行的时间为:
分析: • 信号量S:表示盘子是否为空,初值为1 • 信号量So:表示盘中是否有桔子,初值为0 • 信号量Sa:表示盘子是否有苹果,初值为0
程序
begin S, Sa, So : semaphore S=1; Sa=0; So=0; Cobegin father: Repeat P(S); 将苹果放入盘中; V(Sa); Until false mother: Repeat P(S); 将桔子放入盘中; V(So); Until false