- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章习题参考解答分析
第4章 进程及进程管理
4-3 什么是进程?进程与程序的主要区别是什么?
答:进程,即是一个具有一定独立功能的程序关于某个数据集合的一次活动。
进程与程序的主要区别是:
(1)程序是指令的有序集合,是一个静态概念,其本身没有任何运行的含义, 进程是程序在处理机上的一次执行过程, 是一个动态概念。
(2)程序作为软件资料可长期保存,而进程是有生命期的,因创建而产生、因调度而执行、因得不到资源而暂停、因撤消而消亡。
(3)程序是记录在介质上指令的有序集合,而进程则由程序、数据和进程控制块 3 部分组成。
(4)进程与程序之间无一一对应关系。不同的进程可以包含同一程序,同一程序在执行中也可以产生多个进程。
(5)进程是一个独立的运行单位,也是系统进行资源分配和调度的独立单位。而程序无此概念。
4-6 进程有哪几个基本状态?在一个系统中为什么必须区分出这几种状态?
答:进程有三个基本状态:运行状态、就绪状态和等待状态(又称阻塞、挂起、睡眠) 。
对进程区分出这几种状态主要是为了便于系统对进程的管理和控制。
4-7试用图画出批处理系统的进程状态变迁图。
4-8试用图画出分时系统的进程状态变迁图。
4-9 某系统进程调度状态变迁图如下图所示,回答
什么原因导致变迁2、变迁3、变迁4?
变迁2:某进程的时间片满
变迁3:某进程请求服务,或等待事件
变迁4:某进程请求服务完成,或等待事件发生
当观察系统中进程时,可能看到某一进程产生的一次状态变迁将导致另一进程做一次状态变迁,这两个变迁称为因果变迁。在什么情况下,一个进程的变迁3能立即引起另一个进程发生变迁1?
当有一个进程发生变迁3时,将会让出处理器,这时调度必然在就绪队列中选中一个进程使之由就绪状态变为运行状态。
下述因素变迁是否可能发生?如果可能,是在什么情况下发生?
a.2(1 可能发生。有一个进程由运行状态变就绪状态,它让出处理器,则这时必有一个进程由就绪状态转运行状态。
b.3(2 不可能发生。有一个进程由运行状态变等待状态,它让出处理器,这种变迁不会导致另一个进程由运行状态转就绪状态。
c.4(1 不可能发生。一个进程由等待状态变就绪状态,只是自身进程的状态变迁,不涉及处理器,故不会引起其它进程由就绪状态变运行状态。
4-11 什么是进程控制块?它有什么作用?
为了描述一个进程和其它进程,以及系统资源的关系,为了刻画一个进程在各个不同时期所处的状态,人们采用了一个与进程相联系的数据块,称为进程控制块(PCB)。
其作用:标识一个进程的存在。
4-12 n个并发进程共用一个公共变量Q,写出用信号量实现n个进程互斥时的程序描述,给出信号量取值的范围,并说明每个取值的物理意义。
main()
{
int mutQ=1;//信号量mutQ用来管理公共变量Q,其值为1,表示初始情况下没有进程使用该变量
cobegin
p1();p2();…;pn();
coend
}
p1()
{
…
P(mutQ);
使用公共变量Q..//或cs(i)…..
V(mutQ);
…
}
mutQ的取值范围:1-n ~ 1
1-n:表示一个进程正在使用公共变量Q,另有n-1个进程在等待使用公共变量Q
0:表示一个进程正在使用公共变量Q,没有进程等待使用公共变量Q
1:表示初始情况下没有进程使用该变量
4-14如下图为两个进程流图。试用信号量的P、V操作实现下图(a)、(b)中所示进程之间的同步,并写出程序描述。
(b)
(a)解:
main()
{
int s12=0,s13=0,s14=0;
cobegin
p1();
p2();
p3();
p4();
coend
}
p1()
{
p1 execute;
V(s12);
V(s13);
V(s14);
}
p2()
{
P(s12);
p2 execute;
}
p3()
{
P(s13);
p3 execute;
}
p4()
{
P(s14);
p4 execute;
}
4-15 如下图所示,get、copy、put 三进程共用两个缓冲区 s、t(其大小为每次存放一个记录) 。 get 进程负责不断地把输入记录送入缓冲区 s 中,copy 进程负责从缓冲区 s 中取出记录复制到缓冲区 t 中,而put 进程负责从缓冲区 t 中取出记录打印。试用 P、V 操作实现这三个进程之间的同步,并写出程序描述。
解:
main()
{
int sa=1,sb=0;// sa 表示缓冲区 S 是否为空,sb 表示是否为满。
int ta=1,tb=0;// ta 表示缓冲区 T 是否为空,tb 表示是否为满。
您可能关注的文档
最近下载
- API Spec7-1 - 2006旋转钻柱构件规范 【中文版】.pdf
- 2025年医师定期考核人文医学题库与答案.pdf VIP
- 蒸汽管道报检资料全.doc
- AQ 1064-2008 煤矿用防爆柴油机无轨胶轮车安全使用规范.pdf VIP
- 康复科绩效工资考核分配方案.pptx
- 【云合数据-2025研报】2024年长剧集网播年度观察.pdf
- 铷铯及其化合物,中国前8强生产商排名及市场份额调研数据.docx
- 面瘫(面神经麻痹)中医临床路径.pdf
- 面瘫(周围性面神经炎)-中医诊疗指南-等级评审.pdf
- 众泰-T600-产品使用说明书-T600 2.0T 豪华型DCT-JNJ6460QT-T600车系使用手册20131201.pdf
文档评论(0)