




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统操作系统 课程设计任务书课程设计任务书 题目 进程创建系统 学生姓名 郭利强 学 号 11730108 班级 11 计算机科学与技术 1 班 题目类型 软件工程 R 指导教师 郭文娟 贾娟娟 一 设计目的一 设计目的 学生通过该题目的设计过程 可以初步掌握进程创建系统的原理 软件开发方法 并提高解决实际问题的能力 二 设计任务二 设计任务 1 了解 UNIX 的命令及使用格式 熟悉 UNIX LINUX 的常用基本命令 练习并 掌握 UNIX 提供的 vi 编辑器来编译 C 程序 学会利用 gcc gdb 编译 调试 C 程序 2 编写程序 使用系统调用 fork 创建两个子进程 当此程序运行时 在系统中 有一个父进程和两个子进程活动 让每一个进程在屏幕上显示一个字符 如父进程显 示 a 子进程分别显示字符 b 和字符 c 试观察记录屏幕上的显示结果 并分析原因 修改程序 每一个进程循环显示一句话 如子进程显示 daughter 及 son 父进程显示 parent 观察结果 分析原因 三 设计要求三 设计要求 1 分析设计要求 给出解决方案 要说明设计实现所用的原理 采用的数据结 构 2 设计合适的测试用例 对得到的运行结果要有分析 3 设计中遇到的问题 设计的心得体会 4 文档 课程设计打印文档每个学生一份 并装在统一的资料袋中 5 光盘 每个学生的文档和程序资料建在一个以自己学号和姓名命名的文件夹 下 刻录一张光盘 装入资料袋中 四 提交的成果四 提交的成果 1 设计说明书一份 内容包括 1 中文摘要 100 字 关键词 3 5 个 2 设计思想 3 各模块的伪码算法 4 函数的调用关系图 5 测试结果 6 源程序 带注释 7 设计总结 8 参考文献 致谢等 2 刻制光盘一张 五 主要参考文献五 主要参考文献 1 汤子瀛 哲凤屏 计算机操作系统 西安电子科技大学学出版社 2 王清 李光明 计算机操作系统 冶金工业出版社 3 孙钟秀等 操作系统教程 高等教育出版社 4 曾明 Linux 操作系统应用教程 陕西科学技术出版社 5 张丽芬 刘利雄 操作系统实验教程 清华大学出版社 6 孟静 操作系统教程 原理和实例分析 高等教育出版社 7 周长林 计算机操作系统教程 高等教育出版社 8 张尧学 计算机操作系统教程 清华大学出版社 9 任满杰 操作系统原理实用教程 电子工业出版社 10 张坤 操作系统实验教程 清华大学出版社 六 各阶段时间安排 共六 各阶段时间安排 共 2 周 周 周次日期内容地点 星期一 二 教师讲解设计要求 查找参考资料 教室 图书馆第 1 周 星期三 五算法设计 编程实现教室 星期一 三算法设计 编程实现教室 第 2 周 星期四 五检查程序 答辩教室 2013 年年 12 月月 9 日日 摘摘 要要 操作系统是计算机系统中的核心系统软件 它负责控制和管理整个系统的资源并 组织用户高效 协调使用这些资源 使计算机中各部件高效地并行运行 进程是程序在计算机上的一次执行活动 当你运行一个程序 你就启动了一个 进程 显然 程序是死的 静态的 进程是活的 动态的 进程可以分为系统进 程和用户进程 凡是用于完成操作系统的各种功能的进程就是系统进程 它们就是 处于运行状态下的操作系统本身 用户进程就是所有由你启动的进程 进程是操作 系统进行资源分配的单位 在 UNIX 系统中 用户创建一个新进程的唯一方法就 是调用系统调用 fork 调 用 fork 的进程称为父进程 而新创建的进程叫做子 进程 关键词 关键词 进程 操作系统 父进程 子进程 目目 录录 1 绪论 1 1 1 概述 1 1 2 进程及进程创建 1 1 3 进程映像 2 1 4 设计思想 2 2 伪码算法 3 3 函数调用关系图 7 4 结果分析 8 5 结论 13 参考文献 14 致 谢 15 附 录 16 1 绪论绪论 1 1 概述概述 本课程设计是实现进程创建系统 我们还将学到有关进程的相关概念 Linux 操 作系统是面向多用户的 在同一时间可以有许多用户向操作系统发出各种命令 那么操 作系统是怎么实现多用户的环境呢 在现代的操作系统里面 都有程序和进程的概念 那么什么是程序 什么是进程呢 通俗的讲程序是一个包含可以执行代码的文件 是一 个静态的文件 而进程是一个开始执行但是还没有结束的程序的实例 就是可执行文件 的具体实现 一个程序可能有许多进程 而每一个进程又可以有许多子进程 依次循环下 去 而产生子孙进程 当程序被系统调用到内存以后 系统会给程序分配一定的资源 内 存 设备等等 然后进行一系列的复杂操作 使程序变成进程以供系统调用 在系统里面只 有进程没有程序 为了区分各个不同的进程 系统给每一个进程分配了一个 ID 就象我们 的身份证 以便识别 为了充分的利用资源 系统还对进程区分了不同的状态 将进程分 为新建 运行 阻塞 就绪和完成五个状态 新建表示进程正在被创建 运行是进程正在运 行 阻塞是进程正在等待某一个事件发生 就绪是表示系统正在等待 CPU 来执行命令 而 完成表示进程已经结束了 系统正在回收资源 进程和程序的区别 掌握 Linux 中进 程的创建方法 进一步理解进程的并发执行 了解 UNIX 的命令及使用格式 熟悉 UNIX LINUX 的常用基本命令 练习并掌握 UNIX 提供的 vi 编辑器来编译 C 程序 学会 利用 gcc gdb 编译 调试 C 程序 编写程序 使用系统调用 fork 创建两个子进程 当此程序运行时 在系统中有一个父进程和两个子进程活动 让每一个进程在屏幕上 显示一个字符 如父进程显示 a 子进程分别显示字符 b 和字符 c 试观察记录 屏幕上的显示结果 并分析原因 修改程序 每一个进程循环显示一句话 如子进 程显示 daughter 及 son 父进程显示 parent 观察结果 分 析原因 1 21 2 进程及进程创建进程及进程创建 进程是一个程序在一组数据上的一次执行过程 一个 Windows 进程包含自己独立 的虚拟地址空间 用以保护私有的执行代码和数据不被其他的进程破坏 进程由以下方面组成 1 至少一个可执行程序 包括代码和初始数据 一般 在进程创建时说明 2 一个独立的进程用户空间 在进程创建时由操作系统分配 它用于存放进程用户态运行的程序和处理的数据 3 系统资源 这是指在进程创建 时及执行过程中 由操作系统分配给进程的系统资源 包括 I O 设备 文件等 4 一个执行栈区 包含运行现场信息 一般的用户进程都是经历首先被创建 断断续续运行 最后结束的过程 操作系 统提供了进程创建的系统调用 用户程序可以通过 进程创建 系统调用创建新的进 程去运行新的程序 当要把新进程加入到系统时 操作系统创建管理该进程的所要的 系统表格 为进程分配空间并初始化进程空间 准备好执行程序和数据 一个进程可 以创建一个新的进程 被创建的进程称为子进程 创建者进程称为父进程 1 31 3 进程映像进程映像 一个进程至少执行一个可执行程序 这些程序往往以文件形式存放于辅存中 程 序文件中还包含局部变量 全局变量数据以及常数定义 因此 一个进程需要足够的 存储空间来存放进程的程序和数据以便执行 为了执行程序 操作系统还必须为进程 分配一个栈区 用来保存过程调用时的现场 我们把程序 数据 栈的集合称作进程 映像 Process Image 没有进程映像 进程就不知道运行什么程序 1 4 设计思想设计思想 1 使用系统调用 fork 创建两个子进程 当此程序运行时 在系统中有一个父进 程和两个子进程活动 让每一个进程在屏幕上显示一个字符 父进程显示 a 子进程 分别显示字符 b 和字符 c 多次运行此程序 对比运行结果 2 修改上述程序 每一个进程循环显示一句话 子进程显示 daughter 及 son 父进程显示 parent 多次运行 对比结果 3 再次修改 在程序中使用调用 lockf 来给每一个子进程加锁或解锁并运行程 序 对比结果 2 伪码算法伪码算法 对于概要设计中的使用系统调用 fork 创建两个子进程 创建的过程 函数如下 1 函数使用头文件如下 include Using namespace std 2 main 系统调用格式 参数定义 Int p1 p2 调用函数 fork P1 fork If p1 0 cout b 0 P2 fork If p2 0 cout c 0 cout a endl Return 0 使用系统调用 fork 创建两个子进程 include using namespace std int main int p1 p2 p1 fork if p1 0 cout b 0 p2 fork if p2 0 cout c 0 cout a endl return 0 修改程序之后 每一个进程循环显示一句话 include using namespace std int main int p1 p2 p1 fork 获得 fork 函数返回值赋给 P1 if p1 0 for int i 0 i 3 i cout daughter i endl cout b 0 p2 fork if p2 0 for int i 0 i 3 i cout son i endl cout c 0 for int i 0 i 3 i cout parent i endl cout a endl return 0 在程序中使用调用 lockf 来给每一个子进程加锁 include using namespace std int main int p1 p2 p1 fork 获得 fork 函数返回值赋给 P1 if p1 0 lockf 1 1 0 加锁 for int i 0 i 3 i cout daughter i endl cout b 0 p2 fork if p2 0 lockf 1 1 0 加锁 for int i 0 i 3 i cout son i endl cout c 0 for int i 0 i 3 i cout parent i endl cout a 0 Cout 0 Cout c Cout a 图 3 1 函数调用关系图 使用系统调用 fork 创建两个子进程 当此程序运行时 在系统中有一个父进程 和两个子进程活动 让每一个进程在屏幕上显示一个字符 父进程显示 a 子进程分 别显示字符 b 和字符 c 4 结果分析结果分析 1 使用系统调用 fork 创建两个子进程的程序的调试结果如下图 图 4 1 第一次执行结果 图 4 2 第二次执行结果 图 4 3 第三次执行结果 由上面的三个图可以看出来由于程序的并发执行 同一个程序运行的结果会有所 区别 2 修改程序之后 同一个程序运行的结果会有所区别 图 4 4 修改后第一次执行结果 图 4 5 修改后第二次执行结果 图 4 6 修改后第三次执行结果 3 在程序中使用调用 lockf 来给每一个子进程加锁的调试结果如下图 图 4 7 加锁后第一次执行结果 图 4 8 加锁后第二次执行结果 图 4 9 加锁后第三次执行结果 图 4 10 加锁后第四次执行结果 由上面的运行结果可以看出在程序中使用调用 lockf 来给每一个子进程加锁 可以实现进程之间的互斥 5 5 结结论论 经过两周的课程设计生活 从一开始拿到题目到后来的分析 构思 完成设计 这一系列的工作让我受益匪浅 并且通过本学期的操作系统的学习以及这次课程设计 我对操作系统的理解和操作都有了比较大的进步 通过这次课程设计 让我明白了怎 样创建一个进程 经两个星期的学习 我对进程管理中的相关内容进一步的了解了 也更近一步的加深了对编程的理解 知道了自己的不足 通过这次实验 让我明白了怎样创建一个进程 以及如何使用系统调用来调用 fork 函数 当 fork 的返回值为 0 的时候表示当前进程是子进程 当 fork 函数的返回值是大于 0 的时候表示当前进程是父进程 当 fork 返回值是 1 的时候表示创建进程失败 通过实验使我见到了由于程序的并发执行 同一个程序 运行的结果会有所区别 并且知道了使用调用 lockf 来给每一个子进程加锁 来实 现进程之间的互斥 更重要的是通过这次实验使我学会了如何在 linux 的环境下使用 gcc gdb 来编 辑和编译程序 总之通过这次上机实验让我学到了许多书本上面学不到的知识 锻炼 了自己的动手能力和编程的能力 通过该题目的设计过程 我明白了自己的不足我更 加努力 争取在毕业时达到步入社会的要求 为自己的未来打好基础 同时加深了我对进程创建的理解 更加理解了课程设计的重要意义 我知道了 只有将自己的理论与实际相结合 才能更好的将所学的知识应用于实践 加深自己的 理解 更好的理解操作系统的深刻内涵 参考文献参考文献 1 汤子瀛 哲凤屏 计算机操作系统 西安电子科技大学学出版社 2001 2 王清 李光明 计算机操作系统 冶金工业出版社 2003 3 孙钟秀等 操作系统教程 高等教育出版社 2003 4 曾明 Linux 操作系统应用教程 陕西科学技术出版社 2005 5 张丽芬 刘利雄 操作系统实验教程 清华大学出版社 2006 6 孟静 操作系统教程 原理和实例分析 高等教育出版社 2000 7 周长林 计算机操作系统教程 高等教育出版社 2011 8 张尧学 计算机操作系统教程 清华大学出版社 2000 9 任满杰 操作系统原理实用教程 电子工业出版社 2006 10 张坤 操作系统实验教程 清华大学出版社 2006 致致 谢谢 在这次课程设计中 虽然只有短短的两周时间 却让我学会了很多东西 使得我 们将之前的理论知识运用与实践中 从开始一无所知到能够看懂并且理解程序 对操 作系统的更进一步的巩固以及对进程的概念也有了更深刻的理解 对操作系统中进程 的创建的基本概念 工作原理以及设计方法进行了更深入的学习和了解 这次课程设 计使我学到了很多东西 真正做到了理论与实践相结合 得到了软件工程的综合训练 大大地提高了解决实际问题的能力 当然 这与老师的指导和同学们的帮助是分不开 的 在此我要诚心感谢郭文娟老师和贾娟娟老师的耐心指导 在整个设计过程当中给 我提出了很多意见 并指出了许多错误和不足之处 使我受益匪浅 为她付出了个人 的宝贵时间来辅导我们而表示忠心的感谢 还要感谢我们班的同学 他们在这次设计 当中给了我很多帮助 没有他的帮助这次的课设是不可能顺利完成的 附附 录录 源程序代码如下 1 使用系统调用 fork 创建两个子进程的程序清单 include using namespac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【语文】衢州市一年级上册期末复习试题
- 【语文】福建省福州市福州金山小学小学四年级上册期末试题
- 宜春市小学语文六年级下册期末试题(含答案)
- (完整版)初一分班数学真题模拟试题及解析
- 【语文】北京市育英小学小学五年级上册期末试题
- 网络安全笔试题库附答案
- 中级银行从业资格证《法律法规》试题及答案
- 2025年全国管理类专业学位联考真题及答案
- 2025年内蒙古自治区公务员考试行政职业能力测验历年参考题库含答案
- 2025年人力资源管理师高级考试题库与答案解析
- 研发人员晋升管理制度
- 国家保密培训课件
- 2025至2030年中国牛油果行业市场发展前景及投资规模预测报告
- 2025至2030中国快递行业发展现状及发展趋势与投资风险分析
- 雪花啤酒终端销售协议书
- 生产风险管理
- 2025年人保车险考试题及答案
- 《茉莉花》音乐课件
- 2025年云南省职教高考电工技术类《电工基础理论知识》考试复习题库(含答案)
- 工厂交叉作业安全管理协议书(2篇)
- 外墙真石漆工程安全文明施工保证措施及环境保护体系和保证措施
评论
0/150
提交评论