吉林大学操作系统课件 作业解析1

上传人:M****1 文档编号:586730878 上传时间:2024-09-05 格式:PPT 页数:25 大小:78.50KB
返回 下载 相关 举报
吉林大学操作系统课件 作业解析1_第1页
第1页 / 共25页
吉林大学操作系统课件 作业解析1_第2页
第2页 / 共25页
吉林大学操作系统课件 作业解析1_第3页
第3页 / 共25页
吉林大学操作系统课件 作业解析1_第4页
第4页 / 共25页
吉林大学操作系统课件 作业解析1_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《吉林大学操作系统课件 作业解析1》由会员分享,可在线阅读,更多相关《吉林大学操作系统课件 作业解析1(25页珍藏版)》请在金锄头文库上搜索。

1、吉林大学操作系统课件 作业解析1 Four short words sum up what has lifted most successful Four short words sum up what has lifted most successful individuals above the crowd: a little bit more. individuals above the crowd: a little bit more. -author -author -date-date精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除作业作业 #11.进程切换时需要保

2、存哪些现场信息?请尽量考虑进程切换时需要保存哪些现场信息?请尽量考虑完全。完全。 答案:进程切换过程是进程上下文的切换过程,进答案:进程切换过程是进程上下文的切换过程,进程上下文是指进程运行的物理环境。包括地址映寄程上下文是指进程运行的物理环境。包括地址映寄存器、通用寄存器、浮点寄存器、存器、通用寄存器、浮点寄存器、SP、PSW(程序程序状态字状态字)、PC(指令计数器指令计数器)、以及打开文件表、以及打开文件表等等。 精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除2. 由核心返回目态程序时,进程的由核心返回目态程序时,进程的PSW和和PC为何必为何必须用一条机器指令同时恢复

3、?须用一条机器指令同时恢复? 答案:中断向量中程序状态字答案:中断向量中程序状态字PSW和指令计数器和指令计数器PC的内容必须由一条指令同时恢复,这样才能保的内容必须由一条指令同时恢复,这样才能保证系统状态由管态转到目态的同时,控制转到上证系统状态由管态转到目态的同时,控制转到上升进程的断点处继续执行。升进程的断点处继续执行。如果不同时恢复,则只能如果不同时恢复,则只能 1.先恢复先恢复PSW再恢复再恢复PC,在恢复,在恢复PSW后已经转到目态,后已经转到目态,操作系统恢复操作系统恢复PC的使命无法完成的使命无法完成 2.先恢复先恢复PC再恢复再恢复PSW,PC改变后转到操作系统另外区改变后转

4、到操作系统另外区域(因为域(因为PSW仍在系统状态),仍在系统状态),PSW无法恢复无法恢复精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除作业作业 #2Consider the following program:var blocked: array0.1of boolean; turn:0.1;procedure P(id:integer);begin repeat blockedid:=true; while turnid do begin while blocked1-id do nothing turn:=id end; blockedid:=false; until

5、 falseend;begin blocked0:=false; blocked1:=false; turn:=0; parbegin P(0); P(1) parend;end.This is a software solution to the mutual exclusion problem proposed by Hyman. Find a counter example to demonstrate that this solution is incorrect. It is interesting to note that even the Communication of the

6、 ACM was fooled on this one.精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除begin repeat blockedid:=true; while turnid do begin while blocked1-id do nothing (1) turn:=id end; 若若turn=1, blocked0:=true, blocked1:= false ,P(0), P(1)并发执行,并发执行, P(0)先推进,当先推进,当P(0)执行到执行到while blocked1-id 时不满足条件跳出循环在(时不满足条件跳出循环在(1)处让出处理)处让

7、出处理机机P(1)推进,推进, P(1)执行执行while turnid 而进入临界区后让而进入临界区后让出处理机,出处理机, P(0), 继续也进入临界区,不满足正确性。继续也进入临界区,不满足正确性。精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除作业作业 #3关于读者写者问题改进算法semaphore r_w_w ,mutex ,s=1;int count=0;写者活动:P(s);P(r_w_w);写操作;V(r_w_w);V(s);精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除读者活动:P(s);P(mutex);count+;if (count=1)

8、 p(r_w_w);V(mutex);V(s);读操作;P(mutex);count-;if (count=0) v(r_w_w);V(mutex);精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除写者优先算法写者优先算法int readcount ,writecount =0;semaphore rsem, wsem =1;Semaphore x ,y , z =1;精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除 Reader: writer: p(z) 1 p(y) p(rsem) 2 writecount+ p(x) if(writecount=1)p(

9、rsem) 4 readcount+ v(y) if(readcount=1) p(wsem) p(wsem) 5 v(x) v(rsem) 3 v(wsem) v(z) p(y) writecount- p(x) if(writecount=0) readcount- v(rsem) 6 if(readcount=0) v(wsem) 7 v(y) v(x)精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除作业作业 #4设系统有5台类型相同的打印机,依次编号为1-5。又设系统有n个使用打印机的进程,使用前申请,使用后释放。每个进程都有一个进程标识,用于区分不同的进程。每个进程有

10、一个优先数,不同进程的优先数各异。当有多个进程同时申请打印机时,按照进程优先数由高到低的次序实施分配。试用信号量和PV操作实现对打印机资源的管理,即要求编写如下函数和过程。精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除(1)函数require(pid,pri):申请一台打印机。参数pid为进程标识,其值为1-n之间的一个整数;pri为进程优先数,其值为正整数。函数返回值为所申请到的打印机的编号,其值为1-5的一个整数。(2)过程return(prnt):释放一台打印机。参数prnt为所释放的打印机的编号,其值为1-5的一个整数。精品ppt文档收集于网络,仅供学习交流,如有侵权

11、请联系管理员删除 int lp5; (initial value is 1) int count=5; int pN ;(initial value is -1) semaphore qN; (initial value is 0) semaphore mutex=1; 精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除int require(int pid,int pri); p(mutex);L: if (count=0) pripid=pri; v(mutex) P(qpid); goto L; count-; int i; for( i=0; i5;i+) if (lpi

12、!=0) lpi=0; return(i); V(mutex); 精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除int return(int prnt) P(mutex); lpprnt=1; count+; int max , i , j; max=-1; for ( j=0;jmax) max=pj; i=j; if (max=-1) V(mutex); else pi=-1; v(qi;精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除2.Hoare管程实现管程实现SCAN算法算法 Procedure upscan; Var I:0.200; Begin

13、I:=headpos; flag:=true; While (I=199)and(countI=0) Do I:=I+1; If I=0)and(countI=0) Do I:=I-1; If I=0 Then Begin countI:=countI-1; signal(cylinderI) flag=false ; End End;精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除Procedure release; Begin busy:=false; If direction=up Then Begin upscan; if flag=true then downscan

14、 End Else Begin downscan; if flag=true then upscan End End;精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除Hansen管程中signal操作在唤醒条件队列的一个进程后执行此操作的进程离开管程,在本例中signal操作在release中的upscan和和downscan中中执行。如下:Procedure release Begin If direction=up Then Begin upscan; downscan End Else Begin downscan; upscan End End;精品ppt文档收集于网络

15、,仅供学习交流,如有侵权请联系管理员删除当在当在upscan或或downscan中执行中执行signal操作操作时,进程就离开了管城即结束了时,进程就离开了管城即结束了release,不会去执行不会去执行upscan或或downscan后面的后面的downscan 或或upscan。但是在但是在Hoare管程中当进程执行管程中当进程执行signal操作操作时,不仅会唤醒条件队列中的一个进程,同时,不仅会唤醒条件队列中的一个进程,同时执行此操作的进程并不离开管程而是在管时执行此操作的进程并不离开管程而是在管程中的紧急队列排队,若还沿用程中的紧急队列排队,若还沿用Hanson管管程的代码会出现以下

16、情况。程的代码会出现以下情况。精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除若进程在若进程在upscan中执行中执行signal操作后进入紧急队列,操作后进入紧急队列,当进程在紧急队列被唤醒后就会继续执行当进程在紧急队列被唤醒后就会继续执行release中中的后续代码即执行的后续代码即执行downscan,这不符合程序的语,这不符合程序的语义,一个进程一次只能释放一个资源同时也就只能义,一个进程一次只能释放一个资源同时也就只能唤醒一个进程,若进程继续执行唤醒一个进程,若进程继续执行downscan会执行会执行下一个唤醒动作。下一个唤醒动作。精品ppt文档收集于网络,仅供学习交

17、流,如有侵权请联系管理员删除读者读者/写者问题(写者优先)写者问题(写者优先)1. 用用Ada语言中的会合解决读者语言中的会合解决读者/写者问题,要求写写者问题,要求写者优先。即编写一个任务,其中有如下四个入口:者优先。即编写一个任务,其中有如下四个入口: start_read; finish_read, start_write, finish_write. 提示:可以使用嵌套的提示:可以使用嵌套的accept语句。语句。精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除读者读者-写者问题写者问题Task readers_writers is entry start_read;

18、entry finish_read; entry start_write; entry finish_write;End readers_writes;Task body readers_writers is; Var read_count, write_count: integer; begin read_count:=0; write_count:=0;精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除读者读者-写者问题写者问题 Loop select when write_count=0 = accept start_read do read_count := read_c

19、ount+1; end start_read or when read_count0 = accept finish_read do read_count := read_count-1; end finish_read; or 精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除读者读者-写者问题写者问题 when write_count=0 = accept start_write do while read_count 0 do accept finish_read do read_count:= read_count -1; end finish_read end whil

20、e end start_write; write_count:=write_count+1; or when write_count0 = accept finish_write do write_count:=write_count-1; end finish_write; end select End loop;End readers_writers精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除读者读者-写者问题写者问题读者活动:Readers_writes.start_read;读操作Readers_writers.finish_read;写者活动:Readers_writers.start_write;写操作Readers_writers.finish_write;精品ppt文档收集于网络,仅供学习交流,如有侵权请联系管理员删除

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号