- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
赵盈盈 2011210593 第四章作业上
1. 解释名词:程序的顺序执行;程序的并发执行。
答:程序的顺序执行:一个具有独立功能的程序独占cpu直到得到最终结果的进程。
程序的并发执行:两个或两个以上程序在计算机系统中同时处于一开始执行且尚未结束的状态。
2. 什么是进程?进程与程序的主要区别是什么?
答:进程:进程是具有独立功能的程序关于某个数据集合的一次运行活动,进程是系统进行资源分配和调度的独立单元。
进程和程序的区别:
●程序是静态的,进程是动态的
●进程有程序和数据两部分组成
●进程具有生命周期,有诞生和消亡,是短暂的;而程序是相对长久的
●进程能更真实的描述并发,而程序不行。
●一个进程可以对应多个程序。一个程序可以对应多个进程
●进程可以创建其他进程,程序不能
3. 图1所示,设一誊抄程序,将f中记录序列正确誊抄到g中,这一程序由get、copy、put三个程序段组成,它们分别负责获得记录、复制记录、输出记录。请指出这三个程序段对f中的m个记录进行处理时各种操作的先后次序,并画出誊抄此记录序列的先后次序图(假设f中有1,2,…,m个记录,s,t为设置在主存中的软件缓冲区,每次只能装一个记录)。
图1 改进后的誊抄过程
答:
4. 进程有哪几种基本状态?试画出进程状态变迁图,并标明发生变迁的可能原因。
答:进程基本状态:运行、就绪、等待
状态转换图:
就绪到运行:调度程序选择一个新的进程运行
运行到就绪:运行进程用完了时间片
或运行进程被中断,因为一个高优先级的进程处于就绪状态
运行到等待:OS尚未完成服务
或对一资源的访问尚不能进行
或初始化I/O 且必须等待结果
或等待某一进程提供输入(IPC)
等待到就绪:当所有的事件发生时
5. 什么是进程控制块?它有什么作用?
答:PCB:为了便于系统控制和描述进程的活动过程,在操作系统核心中为进程定义的一个专门的数据结构。
作用:系统用PCB来控制和管理进程的调用,PCB也是系统感知进程存在的唯一标志
6. n个并发进程共用一个公共变量Q,写出用信号灯的p、v操作实现n个进程互斥时的程序描述,并说明信号灯值的取值范围。
答:main() pi()
{ {
int mutex=1; p(mutex);
cobegin 执行进程Pi;
for(i=1;1=n;i++){ pi();} v(mutex);
coend }
}
对于N并发进程,互斥子信号灯取值范围为【-(n-1),1】
Mutex = 1,表示没有进程进入缓冲区。
Mutex = 0,表示有一个进程进入缓冲区,没有进程等待
Mutex = -1,表示有一个进程进入缓冲区,一个进程等待
……
Mutex =-(n-1),表示有一个进程进入缓冲区,n-1个进程等待
7. 我们用进程流图来描述一组合作进程执行的先后次序。试用信号灯的p、v操作实现如图2(a)、(b)中所示进程之间的同步,并写出程序描述。
图2 图3
答:PV操作实现(a)及程序实现
main()
{int S2=0,S3=0,S4=0; P1() P2() P3() P4()
Cobegin { { { {
P1();P2();P3();P4(); 执行P1; P(S2); P(S3); P(S4);
Coend V(S2); 执行P2; 执行P3; 执行P4;
} V(S3); } } }
V(S4);
}
PV操作实现(b)及程序实现
main()
{int S5=0,S6=0; P5() P6() P7()
int S57=0,S67=0; { {
文档评论(0)