进程的控制系统设计说明书.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2012年秋季学期 操作系统原理课程设计 题 目:进程的控制系统 专业班级:软件工程(1)班 姓 名: 锋 学 号: 指导教师: 朱 红 蕾 成 绩: 目 录 摘 要 1 正 文 2 1. 设计思想 2 2. 相关的各模块的伪码算法 2 3. 函数的调用关系 8 4. 测试结果 9 总 结 12 参考文献 13 致 谢 14 摘 要 进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行分配和保护的基本单位。进程的组成之一是PCB,它是进程控制块,是系统为描述进程而设计的一种数据结构。 进程由创建而产生,由调度而执行,由撤销而消亡的生命周期,因此操作系统要有对进程生命周期的各个环节进行控制的的功能,所谓进程控制,是指系统使用一些具有特定功能的程序段来创建进程、撤销进程以及完成进程各状态间的转换。 进程的控制包括:创建进程、撤销进程、阻塞进程、唤醒进程、激活进程等,这些控制和管理功能是由操作系统中的原语来实现的,而进程控制原语是对进程生命周期控制和进程状态转换的原语,基于进程的基本状态,他们是创建进程原语、撤销进程原语、阻塞进程原语和唤醒进程原语。原语是在管态下执行、完成系统特定功能的过程。系统对进程的控制若不使用原语,就会造成其状态的不确定性,从而达不到进程控制目的。原语的一种实现方法是系统调用方式,采用访管指令实现,原语在使用中不可中断。 现在操作系统设计中,操作系统内核是基于硬件的第一次软件扩充,它为操作系统的进程控制及管理提供了良好环境,而进程的控制及调度体现了操作系统的运行速度及运行频率,所以说进程控制在靠近硬件的软件层次中占据着重要地位。 关键词: 进程 、控制 、原语 正 文 1.设计思想 进程控制是操作系统对进程进行管理所提供的控制操作。进程控制至少应该包括进程创建、进程撤销、进程阻塞、进程唤醒、进程执行等操作,它们都使用原语实现。所谓原语是指在执行过程中不允许中断,它属于操作系统内核的一部分,以系统调用的形式提供给用户和操作系统使用。因此,我们通过进程的创建原语、撤销原语、阻塞原语以及唤醒原语等,再结合大量的资料,最终完成了进程控制系统源程序。 2.相关的各模块的伪码算法 进程控制通过四个原语实现:即(1)创建原语(2)撤销原语(3)阻塞原语(4)唤醒原语。 PCB的常用数据项: i.status:进程状态,包括Running、Readya、Readys、Blockeda、Blockeds等。 i.state:队列指针,所在队列的首指针。 i.addr:队列中进程的PCB间的链接指针,又可分为向前、向后两种指针。 i.priority:进程的优先级。 i.CPU-state:CPU的状态保护区。 i.mainstore:分配的主存区域。 i.resource:资源清单。 i.parent:父进程指针。 i.progeny:后代进程指针。 EP:运行指针。 RQ:就绪队列指针。 1.创建原语: 过程:先寻找一个空闲的PCB,然后填写PCB初值,赋值完后,将PCB插入相应的队列中。 创建原语流程图: 创建原语算法: void create(n,S0,K0,M0,R0,acc) { i=getinternal name(n); /*获得进程n的内部名*/ i.id=n; /*填写进程的外部名*/ i.priority=K0; /*填写进程的优先级*/ i.cpu state=S0; /*填写CPU的初始状态*/ i.mainstore=M0; /*填写内存区域*/ i.resources=R0; /*填写资源清单*/ i.status=就绪; /*设置“就绪”状态*/ j=EP; /*获得调用者内部名*/ i.parent=j; /*填入调用者进程内部名,即进程i的父进程*/ i.progeny=0; /*i的子进程为空,刚被创建,还没有

文档评论(0)

2749166188 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档