读书频道 > 网站 > 网页设计 > 操作系统考研习题精析
2.5 简答题
13-07-14    奋斗的小年轻
收藏    我要投稿   

本文所属图书 > 操作系统考研习题精析

本书以教育部颁发的全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业基础综合考试大纲为基础,对操作系统各部分考点的内容进行简要介绍。本书以考试大纲规定的考查目标为依据,本着出题合理、...立即去当当网订购

1. 说明下图中进程状态转换的原因。



 

2. 在创建和撤销一个进程时所要完成的主要工作分别是什么?当进程A 由于所分配的时间片到,由运行状态转入就绪状态;而进程B 被调度程序选中由就绪状态转为运行状态时,系统所要做的主要工作是什么?

答:创建进程:需要为新进程创建PCB 、分配资源(包括内存页面、文件),这些资源通常从父进程继承而来。

撤销进程:释放进程所占用的资源,如内存页面、打开文件等。在系统进程列表中删除进程的PCB 信息。

系统中运行的进程由A 转到B 时,系统要做的主要工作是进程切换工作:

将B 进程的上下文信息载入到系统中,包括寄存器状态恢复到进程B 的状态、当前运行进程PCB 信息和内存页面等。

3. 在UNIX操作系统中,为什么proc 结构常驻内存? 为什么PPDA 可以不常驻内存?PPDA和其他数据结构合在一起有什么好处?

答:为了节省内存,UNIX系统把进程控制块分成两部分。一部分为进程的基本控制块,简称proc 结构,它存放着进程最常用的一些信息,所以proc 结构一般常驻内存。另一部分称为进程扩充控制块,简称user 结构,它存放着进程的一些必要但不常使用的信息。PPDA (进程系统数据区)包含user 结构和系统栈,PPDA 可以不常驻内存是为了减少内存的开销。把PPDA 和其他数据结构(指用户数据区)合起来形成进程的数据段,其好处是方便一起调入调出内存。

4. UNIX 为什么要把PCB 分为进程表项(proc 区)和U 区?

答:UNIX中将那些只在进程运行时才用到的控制信息存储在U 区(user 结构),从而使这部分信息不必常驻内存,节省内存空间的占用。

5. 请给出PCB的主要内容,描述当进程发生下面的状态转换时操作系统要使用/ 修改PCB 中的哪些内容:就绪→运行,运行→阻塞。

答:PCB中的内容包括:标识进程运行状态的状态位、用户ID、Group ID、进程PID ;调度参数(如优先级)、存储区位置和长度、页表指针、进程收到的signal 、进程打开的文件列表、上下文相关信息(寄存器状态、栈状态)、系统调用返回值、中断相关参数等。

发生就绪→运行和运行→阻塞状态转换时,系统要修改标识进程运行状态的状态位。

6. 对于运行于UNIX系统中的以下程序,其执行后的输出结果是 。
void main()
{ printf("hello1");
Fork();
printf("hello2");
}
答:
hello1
hello2
hello2

父进程打印出“hello1 ”和“hello2 ”。子进程在fork() 返回以后继续执行,打印出“hello2 ”。父子进程打印“hello2 ”的次序是不确定的。

7. 关于处理机调度,试问:

(1 )什么是处理机三级调度?

(2 )处理机三级调度分别在什么情况下发生?

(3 )各级调度分别完成什么工作?

答:(1 )操作系统中有三级调度:高级调度(作业调度)、中级调度(交换调度)和低级调度(进程调度)。它们构成系统内的多级调度。不同类型的操作系统不一定完全都实现上述三种调度。

(2 )处理机三级调度分别在如下情况下发生:

1 )高级调度。高级调度是根据系统内所有资源的使用情况,一旦可能便从后备作业中选择一道作业进入系统,并创建相应的进程,分配必要的系统资源,然后将进程“就绪”。

2 )低级调度。低级调度即为CPU调度,它是根据CPU资源的使用情况及时分配CPU,即从“就绪”的进程中选择一个进程在CPU上“运行”。这种调度不仅要求调度算法本身的时间复杂度小,而且要求策略精良,因为低级调度直接影响着系统的整体效率。在多道程序系统中必须提供低级调度。

3 )中级调度。在内存中常常有许多进程处于某种等待状态,这些进程在“等待”期间无谓地占用着内存资源,如将它们暂时换至外存,则所节省出来的内存空间可用以接纳新的进程。一旦被换至外存的进程具备运行条件,再将其重新换入内存。为此,在逻辑上将主存延伸,用一部分外存空间(称为交换区)替代主存,并且实施交换调度(中级调度)。在各种类型的操作系统中可以根据内存的配置和系统能承受的最大负载,有选择地进行中级调度,或者不实施中级调度。

(3 )高级调度完成作业调度,使“后备”状态的作业变为“执行”状态:中级调度完成内存和外存信息的交换调度;低级调度完成进程调度,使“就绪”的进程在CPU上“运行”。

8. 简述UNIX的进程调度的公式和算法。

答:UNIX采用动态优先数调度算法,优先数的计算公式为:
p_pri=min{127,(p_cpu/16+PUSER+p_ice)}
p_pri=(p_cpu/2+PUSER+NZERO) 

进程的优先数越大,其优先级越低。在调度时,按照优先级由高到低,从当前优先级队列中选择可运行的进程来运行。

9. 给出UNIX进程的调度状态,当子进程终止时,处于什么状态?

答:在UNIX系统中,进程状态有: 运行状态、就绪状态、睡眠状态、创建状态、僵尸状态。当进程终止时处于僵尸状态。

10.  静态优先数与动态优先数的区别是什么?

答:系统在创建进程时就确定了它的优先数,该优先数在进程的整个生存期内不再改变,这种优先数属于静态优先数。

系统在创建进程时确定了它的优先数,但该优先数在进程的整个生存期内可以随着情况的变化而发生改变,这种优先数属于动态优先数。

11.  什么是P、V 操作?  试用P 、V操作描述读者-写者问题。要求允许几个阅读者可以同时
读该数据集,而一个写者不能与其他进程(不管是写者还是读者)同时访问该数据集。

答:读者-写者问题是经常出现的一种同步问题。计算机系统中的数据(文件、记录)常被多个进程共享,但其中某些进程可能只要求读数据(称为Reader),另一些进程则要求修改数据(称为Writer)。就共享数据而言,Reader 和Writer是两种不同类型的进程。一般地,两个或两个以上的Reader 进程同时访问共享数据时不会产生副作用,但若某个Writer和其他进程(Reader或Writer)同时访问共享数据时,则可能产生错误。为了避免错误,同时尽可能地让读者进程和写者进程并发运行,只要保证任何一个写者进程能与其他进程互斥访问共享数据即可。这个问题称为读者-写者问题。

P 、V 操作是定义在信号量s 上的两条原语,它是解决进程同步与互斥的有效手段。定义下列信号量: 互斥信号量rmutex ,初值为1 ,用于使读者互斥地访问读者计数器,共享变量rcount ;互斥信号量wmutex,初值为1 ,用于实现写者之间以及写者与读者之间互斥地访问共享数据集。用信号量和P 、V 操作描述读者-写者问题如下:
Begin
rmutex wmutex:semaphore;
rcount:Integer;
rmutex=wmutex=1;
rcount=0;
Cobegin
Process procedure Reader
begin
P(rmutex); //  保护rcount
rcount:=rcount+1
if rcount=l then  P(wmutex); //  保证没有writer 在写
V(rmutex);
Perform read operations;
P(rmutex);
rcount:=rcount-1;
if rcount=O then V(wmutex);  //没有reader 时,允许writer 写操作
V(rmutex);
end
Process procedure Writer
begin
P(wmutex);
perform write operations;
V(wmutex);
end
Coend
End
12.  判断以下解决双进程临界区问题的算法是否正确:
Process Pi(i=0,1):
Do{
flag[i]=true;
while(flag[1-i]);
critical section
flag[i]=false;
remainder section
}while(1);

答:错误。当两个进程将flag 都设为true 以后,两个进程都在while语句上形成死循环。

13.  以下是双进程临界区问题的算法,其中布尔型数组blicked[2]初始值为{false ,false} ,整型turn 初始值为0 ,id 代表进程编号(0 ,1 ),请说明是否正确。
do{
blocked[id]=true;
while(turn!=id)
{
while(blocked[1-id]);
turn=id;
}
//  编号为id的进程的临界区
blocked[id]=false;
//  编号为id的进程的非临界区
}while (true);

答:正确。由turn 的值决定哪个进程进入临界区。

14.  消息缓冲通信机制有什么优点?试述:

(1 )消息缓冲通信的过程。

(2 )画出有关通信原语的逻辑框图。

答:消息缓冲通信机制不仅能较好地解决进程间的同步互斥问题,还能交换大量消息,是理想的进程通信工具。而且操作系统隐藏了进程通信的实现细节,即通信过程对用户是透明的。这样就大大地简化了通信程序编制上的复杂性。

(1 )消息缓冲通信的过程如下:

当某个进程需要向另一个进程发送消息时,便向系统申请一个消息缓冲区,并把要发送的数据送到消息缓冲区,然后把该消息缓冲区插入到接受进程的消息队列中。接受进程在接受消息时,只要从本进程的消息队列中摘下该消息缓冲区,即可从中取下所需的信息。

(2 )高级通信原语send 和receive的逻辑框图如下图所示。

15.  什么是直接通信?什么是间接通信?这两种通信方式中的通信链路具有什么特征?

 

答:消息系统有直接通信和间接通信之分。

(1 )直接通信。直接通信方式有一个基本原则:进程在发送和接收消息时,必须指明接收者或发送者的名字。这种通信方式中send 和receive 原语定义如下:

•  send(P,message) :将消息发送给进程P

•  receive(Q ,message) :接收来自进程Q 的消息

这种通信方式中的通信链路具有如下特征:每一对欲通信的进程间自动建立了一条双向通信链,只需知道对方的标识信息便可进行通信;每条通信链路严格地对应两个进程;相互通信的一对进程之间存在一条通信链路。

(2 )间接通信。进程间通过信箱进行消息传递的通信方式称为间接通信,又称为“信箱通信”。信箱(Mailbox)可以抽象地看成是一个虚设备,进程可以把消息( 也称信件) 放入信箱,也可以从中取出一条消息。信箱必须有唯一的标识符。在这种通信方式中,某个进程可以通过一组不同的信箱同时与其他多个进程通信。两个进程只有当它们之间有一个可共享的信箱时才可进行通信。

间接通信方式中的通信链路具有如下特征:只有当两个进程之间有了一个可共享的信箱时,通信链路才在两者之间建立;一条通信链路可以连接两个以上的进程;每一对通信进程之间可以有多条不同的通信链路,每一条链路对应一个信箱;通信链路可以是单向的,也可以是双向的。

16.  设备分配时为什么应考虑安全性以及与设备的无关性? 试给出一个检查系统安全性的算法。

答:为了提高系统的适应性和均衡性,避免死锁的产生,设备分配必须考虑安全性问题。设备无关性使得用户的应用程序独立于实际的物理设备,不仅方便了用户,而且设备分配比较灵活,也便于实现I/O 重定向。

所谓安全状态是指:当多个进程动态地申请资源时,系统按某种顺序逐次地为每个进程分配所需的资源,使每个进程都可以在最终得到最大需求量后,依次顺利地完成。反之,如果不存在这样一种分配顺序使进程都能顺利完成,则称系统处于不安全状态。

当然,在系统处于不安全状态下时未必一定发生死锁,但是处于安全状态下的系统是一定不会发生死锁的。所以,避免死锁的关键就是:让系统在动态分配资源的过程中,不要进入不安全状态。银行家算法就是实现上述思想的一个典型算法。

银行家算法的基本思想是把操作系统比作银行家,操作系统管理的各种资源比作周转资金,申请资源的进程比作借款的主顾(即借款人)。银行家占有有限的资金,他不可能满足所有借款人的请求,但可以满足一部分人的借款请求,等这些人归还资金后,又可把这笔资金借给他人,其原则是不能使银行家的钱被借完,使资金无法周转。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站