操作系统原理课程设计-进程的控制系统设计.doc_第1页
操作系统原理课程设计-进程的控制系统设计.doc_第2页
操作系统原理课程设计-进程的控制系统设计.doc_第3页
操作系统原理课程设计-进程的控制系统设计.doc_第4页
操作系统原理课程设计-进程的控制系统设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实践教学实践教学 兰州理工大学兰州理工大学 计计算机与通信学院算机与通信学院 20122012 年秋季学期年秋季学期 操作系统原理操作系统原理课程设计课程设计 题题 目 目 进程的控制系统进程的控制系统 专业班级 专业班级 软件工程 软件工程 1 班 班 姓姓 名 名 学学 号 号 10240506 指导教师 指导教师 成成 绩 绩 目目 录录 摘摘 要要 1 正正 文文 2 1 设计思想设计思想 2 2 相关的各模块的伪码算法相关的各模块的伪码算法 2 3 函数的调用关系函数的调用关系 8 4 测试结果测试结果 9 总总 结结 12 参考文献参考文献 13 致致 谢谢 14 1 摘摘 要要 进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一 次执行过程 也是操作系统进行分配和保护的基本单位 进程的组成之一 是 PCB 它是进程控制块 是系统为描述进程而设计的一种数据结构 进程由创建而产生 由调度而执行 由撤销而消亡的生命周期 因此 操作系统要有对进程生命周期的各个环节进行控制的的功能 所谓进程控 制 是指系统使用一些具有特定功能的程序段来创建进程 撤销进程以及 完成进程各状态间的转换 进程的控制包括 创建进程 撤销进程 阻塞进程 唤醒进程 激活 进程等 这些控制和管理功能是由操作系统中的原语来实现的 而进程控 制原语是对进程生命周期控制和进程状态转换的原语 基于进程的基本状 态 他们是创建进程原语 撤销进程原语 阻塞进程原语和唤醒进程原语 原语是在管态下执行 完成系统特定功能的过程 系统对进程的控制若不 使用原语 就会造成其状态的不确定性 从而达不到进程控制目的 原语 的一种实现方法是系统调用方式 采用访管指令实现 原语在使用中不可 中断 现在操作系统设计中 操作系统内核是基于硬件的第一次软件扩充 它为操作系统的进程控制及管理提供了良好环境 而进程的控制及调度体 现了操作系统的运行速度及运行频率 所以说进程控制在靠近硬件的软件 层次中占据着重要地位 关键词 进程 控制 原语 2 正正 文文 1 1 设计思想设计思想 进程控制是操作系统对进程进行管理所提供的控制操作 进程控制至少应该包括 进程创建 进程撤销 进程阻塞 进程唤醒 进程执行等操作 它们都使用原语实现 所谓原语是指在执行过程中不允许中断 它属于操作系统内核的一部分 以系统调用 的形式提供给用户和操作系统使用 因此 我们通过进程的创建原语 撤销原语 阻 塞原语以及唤醒原语等 再结合大量的资料 最终完成了进程控制系统源程序 2 2 相关的各模块的伪码算法相关的各模块的伪码算法 进程控制通过四个原语实现 即 1 创建原语 2 撤销原语 3 阻塞原语 4 唤醒原语 PCBPCB 的常用数据项 的常用数据项 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 1 创建原语 创建原语 过程 先寻找一个空闲的 PCB 然后填写 PCB 初值 赋值完后 将 PCB 插入相应的 队列中 3 创建原语流程图 创建原语算法 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 填写资源清单 查 PCB 链表 有空 PCB 取空表 PCB i 将有关参数填入 PCB i 相应 项 PCB i 入就绪队列 PCB i 入进程家族或进程链 返回 创建失败 有 无 入口 4 i status 就绪 设置 就绪 状态 j EP 获得调用者内部名 i parent j 填入调用者进程内部名 即进程 i 的父进程 i progeny 0 i 的子进程为空 刚被创建 还没有子进程 j progeny i 把 i 填入其父进程 PCB 中家族指针处 i state RQ 指示 i 进程属于就绪队列 insert RQ i 把 i 进程 PCB 插入就绪 RQ 队列 2 2 撤销原语 撤销原语 过程 首先要找到要终止进程的 PCB 若该进程正在运行 则终止它的运行 并置重新 调度标识 终止属于该进程的子孙进程 释放终止进程所拥有的全部资源 将终止进 程移出它所在队列并收回 PCB 撤销流程图 撤销原语算法 入口 查进程链表或进程家族 有此 PCB 吗 该 PCB 有子进程吗 出错处理 释放该进程所占有的资源 释放该 PCB 结构本身 返回 无 有 有 无 5 void destroy n sched false i getinternal name n 获得进程 n 的内部名 kill i 撤销进程 if sched true scheduler 需要调度时转进程调度程序重新调度 void kill i if i status 执行状态 stop i sched true remove i state 将该进程的 PCB 从相应队列中移去 for all s i progeny do kill s 若有子进程 s 递归调用 kill s 撤销之 for all r i main store i resources do if owend r insert r semaphore r data 属于父进程资源归还 且插入资源清 单 for all R created resources i do remove descriptor R 撤销自己的资源清单 归还清单 remove process concrol block i 释放进程 PCB 6 3 3 阻塞原语 阻塞原语 过程 首先中断 PCB 停止进程运行 将 CPU 的现行状态存放到 PCB 的 CPU 状态保护中 然后将该进程置阻塞状态 并把它插入等待队列中 然后系统执行调度程序 将 CPU 分配给另一个就绪的进程 阻塞原语流程图 阻塞原语算法 void block void i EP stop i 阻塞调用进程自己 i status 阻塞 设置阻塞状态 i state WQ r 填写阻塞队列名称 insert WQ r i 把调用进程的 PCB 插入相应等待队列 WQ r scheduler 转进程调度程序重新调度 入口 保存当前进程的 CPU 现场 置该进程的状态 被阻塞进程入等待队列 转进程调度 7 4 4 唤醒原语唤醒原语 过程 执行时 首先找到被唤醒进程的内部标识 让该进程脱离阻塞队列 将现行状 态改为就绪态 然后插入就绪队列中 等待调度运行 唤醒原语流程图 唤醒原语算法 void wakeup n i getinternal name n 获得进程 n 内部名 remove WQ r i 把进程 i 的 PCB 从相应阻塞队列中移出 i status 就绪 将进程置为就绪态 i state RQ 指示 i 进程属于就绪队列 RQ insert RQ i 把进程 i 的 PCB 插入就绪队列 RQ 入口 从等待队列中摘下被唤醒进程 将被唤醒进程置为就绪态 将被唤醒进程送人就绪队列 转进程调度或返回 8 3 3 函数的调用关系函数的调用关系 Main PCB 定义进程控制块并赋值 Sort 进程 优先级排 列函数 Check 进 程查看函 数 Input 进 程控制块 函数 Disp 进 程显示函 数 Destroy 进程撤销函数 Running 进程就 绪函数 完成进程控制 9 4 4 测试结果测试结果 输入所需进程 请输入进程数 2 进程号 No 1 输入进程名 进程 1 输入进程优先级 2 输入进程运行时间 3 进程号 No 2 输入进程名 进程 2 输入进程优先级 1 输入进程运行时间 2 10 显示所输出进程信息 11 经过五次运行后进程控制完成 12 总总 结结 不知不觉中为期 2 个星期的课程设计结束了 我的设计结果终于出来 了 仔细想来 有喜有忧 通过课程设计我学到了很多东西 也提高了我 的动手能力 经过这次课设我学到了很多 通过此次课程设计加深理解了什么是进 程 熟悉了 LINUX WINDOWS 支持的进程的控制方式 熟悉了 LINUX WINDOWS 的常用基本命令 这次课设的题目是进程控制系统 而经过查阅的大量资料 我发现进 程控制系统主要包括进程的创建 进程的撤销 进程阻塞以及进程的唤醒 然后分模块完成 而且通过此次课程设计使我懂得了思考的重要性 学到了严谨的学习 态度 刻苦的探索精神 也增加了去面对更大挑战的信心和勇气 同时也 培养了把学到的知识用于解决实际问题 培养了我们的独立动手能力 如果仅靠一个人要完成所有的工作是非常困难的 所以在以后的学习 中我会更加注意各个方面的能力的协调发展 在课程设计时遇到了很多的 问题 在老师的帮助 同学的帮助以及对各种资料的查阅中 将问题解决 培养了我自主动手 独立研究的能力 也告诉我合作的重要性 为今后在 学习工作中能更好的发展作下了很好的铺垫 两周的课程设计很短暂 但其间的内容是很充实的 在其中我学习到 了很多平时书本中无法学到的东西 积累了经验 锻炼了自己分析问题 解决问题的能力 并学会了如何将所学的各课知识融汇组织来配合学习 两周中我受益匪浅 13 参考文献参考文献 1 汤子瀛 哲凤屏 计算机操作系统 西安电子科技大学学出版 社 2 王清 李光明 计算机操作系统 冶金工业出版社 3 孙钟秀等 操作系统教程 高等教育出版社 4 曾明 Linux 操作系统应用教程 陕西科学技术出版社 5 张丽芬 刘利雄 操作系统实验教程 清华大学出版社 6 孟静 操作系统教程 原理和实例分析 高等教育出版社 7 周长林 计算机操作系统教程 高等教育出版社 8 张尧学 计算机操作系统教程 清华大学出版社 9 任满杰 操作系统原理实用教程 电子工业出版社 14 致致 谢谢 为期两个星期的课程设计结束了 说实话我从中学到了很多课本上没 有的东西 让我受益匪浅 在此 我要向我的指导老师朱红蕾老师致以最 诚挚的谢意 她在我的课程设计过程中提出了指导性的方案和架构 并指 引我阅读相关的资料和书籍 使我在不熟悉的领域中仍能迅速掌握新的技 术 在这段

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论