操作系统大题总结解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
处理机的执行模式与执行状态
大多数处理器都至少支持两种执行模式,一种是同操作系统有关的模式,另一种则是同用户程序有关的模式。较低特权的模式称为用户模式。较高特权的模式称系统模式、控制模式或内核模式。 内核模式能执行所有的指令,访问所有的内存; 用户模式则只能执行有限的指令,访问规定的内存
处理器往往有一个或多个寄存器来保存处理器模式信息——程序状态字(PSW )
为了防止操作系统及其关键数据(如PCB )遭到用户程序有意或无意的破坏,通常将处理机的执行状态分为两种:核心态与用户态
核心态又称管态、系统态,是操作系统管理程序执行时机器所处的状态。 它具有较高的特权,能执行一切指令,能访问所有的寄存器和存储区。 用户态又称目态,是用户程序执行时机器所处的状态。
它具有较低的特权,只能执行规定的指令和只能访问指定的寄存器和存储区。
信号量练习2.某电话亭每一时刻最多只能容纳一个人打电话。来打电话的人,如果看到电话亭空闲,则直接进入电话亭打电话;如果看到电话亭里正有人在打电话,则在外面排队等候,直到轮到自己,再进入电话亭打电话。请用信号量来表达打电话的进程对电话机的互斥使用逻辑。
该电话亭每次只能容纳一个人打电话(进程)使用,所以是一个临界资源,资源量为1,各进程要互斥使用。
用信号量来表达资源的数量:
semaphore mutex=1;(或empty=1) main( ) { Cobegin
Pi ( );//(i=1,2,3,4,……); Coend }
练习3.某电话亭共有3台电话机,即能容纳3个人(3个进程)同时打电话。来打电话的人,如果看到电话亭有空闲机子,则直接进入电话亭打电话;如果看到电话亭人满,则在外面排队等候,直到轮到自己再进入电话亭打电话。请用信号量机制表达打电话的进程对电话机资源的使用限制。 用信号量来表达空闲的电话机数:
资源量的初值为3(表示开始时有3台空机子可用) semaphore empty=3; main ( ) { Cobegin
Pi ( ); i=1,2,3,…… Coend }
4.生产者-消费者问题
一个说明空缓冲单元的数目,用empty 表示,其初值为有界缓冲区的大小n ,另一个说明满缓冲单元的数目,用full 表示,其初值为0。而有界缓冲区是一个临界资源,必须互斥使用,因此还需要另外设置一个互斥信号量mutex ,其初值为1。semaphore full=0; //第一步:定义信号量, semaphore empty=n; //并为信号量赋初值 semaphore mutex=1;
main( ) // 第二步:编写主函数, { cobegin //在其中调用各个进程 produceri ( ); //i=1,2,…m
P i( ) // i=1,2,3…… { P(mutex); 打电话; ……… 打完电话 走出电话亭 V(mutex);
}
Pi ( ) i=1,2,3,… { P(empty); 打电话; 打电话完毕 出电话亭 V(empty); }
consumerj ( ); //j=1,2,…k coend }
例.有三个作业按下表的时间提交给系统,按照先来先服务的调度算法计算它们的平均周转时间T 和平均带权周转时间W
先来先服务;
T=(2.00+2.90+3.00)/3=2.63 W=(2/2+2.90/1+3.00/0.25)/3=5.30 短作业优先;
T=(2.00+3.15+2.00)/3=2.38 W=(2/2+3.15/1+2.00/0.25)/3=4.05
表中有4个作业提交给系统,按响应比高者优先算法调度,计算它们的平均周转时间和平均带权周转时间
producer i( ) { while (1) { 生产一个产品; p(empty) ; p(mutex); 将一个产品送入有界 缓冲区; V(mutex); V(full);
}
consumer j( ) { while (1) { p(full) ; p(mutex); 从缓冲区中取出一个 产品; V(mutex); V(empty); 消费一个产品 }
作业1做完后,其它三个作业的响应比为:
R2p=1+等待时间/估计运行时间=1+1.5/0.5=4
R3p=1+1.0/0.1=11
R4p=1+0.5/0.2=3.5
故作业3的响应比最大,作业1完成后要运行作业3。作业3运行结束时,时间为10:06,这时候再看作业2、4的响应比哪个高:R2p=1+等待时间/估计运行时间=1+1.6/0.5=4.2
R4p=1+0.6/0.2=4
R2p>R4p 所以先调度作业2到内存中,
作业2运行完毕,结束时间为:10:36
T=(2+2.1+1.1+1.3)/4=1.625
W=(2.00/2+2.1/0.5+1.1/0.1+1.3/0.2)/4=5.7
银行家算法;例1
若系统运行中出现如下所示的资源分配情况,该系统是否安全?如果进程P2此时提出资源申请(1,2,2,2),系统能否将资源分配给它?为什么?
解(1):利用安全性算法对此刻的资源分配情况进行分析,可得到如下安全性检测表:
从上表中可以看出,此时存在一个安全序列{P0,P3,P4,P1,P2},故该系统是安全的。
请问还有其它的安全序列吗?(如P0-P3-P1-P4-P2)
解(2):P2提出请求(1,2,2,2),按银行家算法进行检查:
Request(1,2,2,2)<=Need(2,3,5,6)
Request(1,2,2,2)<=Available(1,6,2,2)
试着把资源分配给P2,资源分配表中P2的项目改变的有: