




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计 论文 课程设计 论文 题 目 吃水果问题 进程同步 院 系 信息与控制技术 专业班级 计算机 2012 姓 名 李敏 学 号 201206060111 指导教师 董丽丽 2015 年 1 月 23 日 西安建筑科技大学华清学院课程设计 论文 第 1 页 西安建筑科技大学华清学院西安建筑科技大学华清学院课程设计 论文 任务书课程设计 论文 任务书 专业班级 计算机1201班 学生姓名 李敏 指导教师 签名 董丽丽 一 课程设计 论文 题目一 课程设计 论文 题目 吃水果问题 进程同步 桌子上有一只盘子 最多可容纳两个水果 每次只 能放入或者取出一个水果 爸爸专门向盘子中放苹果 妈妈专门向盘子中放橘 子 两个儿子专门等待吃盘子中的橘子 两个女儿专门等吃盘子中的苹果 二 本次课程设计 论文 应达到的目的二 本次课程设计 论文 应达到的目的 操作系统课程实践性比较强 课程设计是加强学生实践能力的一个强有力手段 课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告 严格 实施课程设计这一环节 对于学生基本程序设计素养的培养和软件工作者工作 作风的训练 将起到显著的促进作用 本题目要达到目的 了解信号量机制 了解并掌握进行同步和机制 熟悉信号 量的操作函数 利用信号量实现对共享资源的控制 三 本次课程设计 论文 任务的主要内容和要求 包括原始数据 三 本次课程设计 论文 任务的主要内容和要求 包括原始数据 技术参数 设计要求等 技术参数 设计要求等 这是进程同步问题的模拟 可以把向盘子放或取水果的每一个过程可以转为一 个进程的操作 这些进程是互斥的 同时也存在一定的同步关系 进行编程时 实际是随机的调用一个进程的操作 而这些进程的操作相当于程序中的函数调 用 而计算机在执行时每一个时刻只能执行一个操作 这就默认了互斥 同步 的模拟可以类似于函数调用时的前提关系即先决条件 这样进程同步模拟就完 全可以通过函数的调用来实现 具体的每一个操作的对应的函数的关系 爸爸 向盘子中放一个苹果 Father 妈妈向盘子中放一个橘子 Mother 儿子 1 从盘子取一个橘子 Son1 儿子 2 从盘子取一个橘子 Son2 女儿 1 从盘 子取一个苹果 Daugther1 女儿 2 从盘子取一个苹果 Daugther2 四 应收集的资料及主要参考文献 四 应收集的资料及主要参考文献 操作系统经典算法的编程实现资料非常丰富 可以在图书馆找书籍或在因特网上找资料 都 很容易找到 但是大部分代码是不全的 不能直接运行 希望大家只是把它当参考 编码还 是自己做 参考文献 参考文献 1 汤小丹 梁红兵 哲凤屏 汤子瀛 编著 计算机操作系统 第三版 西安 西安电子科技大学出版社 2007 5 2 史美林编 计算机操作系统教程 北京 清华大学出版社 1999 11 3 徐甲同编著 操作系统教程 西安 西安电子科技大学出版社 1996 8 4 Clifford A Shaffer 编著 数决结构与算法分析 C 版 北京 电子工业 西安建筑科技大学华清学院课程设计 论文 第 2 页 出版社 2005 7 5 蒋立翔编著 C 程序设计技能百练 北京 中国铁道出版社 2004 1 五 审核批准意见五 审核批准意见 教研室主任 签字 教研室主任 签字 西安建筑科技大学华清学院课程设计 论文 第 3 页 设计总说明 题目内容 桌子上有一只盘子 最多可容纳两个水果 每次只能放入或者 取出一个水果 爸爸专门向盘子中放苹果 妈妈专门向盘子中放 橘子 两个儿子专门等待吃盘子中的橘子 两个女儿专门等吃盘 子中的苹果 设计思路 吃水果问题可以利用进程同步的转换 以函数的方式来设计 实现方法 通过函数的调用的方法来实现 设计结果 得出盘子中的苹果和橘子数 功能模块 放水果 爸爸往盘子中放苹果 妈妈往盘子中放橘子 取水果两女儿在盘子中取苹果 两儿子在盘子中取橘子 关键字 苹果 橘子 C 目录 1 设计目的 1 2 问题描述 2 3 需求分析 3 4 概要设计 4 5 详细设计 6 6 调试分析 12 7 使用说明 14 8 设计总结 15 9 参考文献 16 10 程序源代码 17 西安建筑科技大学华清学院课程设计 论文 第 0 页 操作系统 课程设计 吃水果问题 进程同步 1 设计目的设计目的 操作系统 是计算机专业的核心专业课 操作系统课程设计 是理解和巩固操作系统基本理论 原理和方法的重要的实践环节 操作系统课程主要讲述的内容是多道操作系统的原理与技术 与 其它计算机原理 编译原理 汇编语言 计算机网络 程序设计 等专业课程关系十分密切 本课程设计的目的综合应用学生所学 知识 建立系统和完整的计算机系统概念 理解和巩固操作系统 基本理论 原理和方法 掌握操作系统基本理论与管理方式 在 算法基础上 解决实际的管理功能的问题 提高学生实际应用 编程的能力 课程设计要求学生在完成程序设计的同时能够撰写比较规范的设 计报告 严格实施课程设计这一环节 对于学生基本程序设计素 养的培养和软件工作者工作作风的训练 将起到显著的促进作用 西安建筑科技大学华清学院课程设计 论文 第 1 页 2 问题描述问题描述 桌子上有一只盘子 最多可容纳两个水果 每次只能放入或者 取出一个水果 爸爸专门向盘子中放苹果 妈妈专门向盘子中 放橘子 两个儿子专门等待吃盘子中的橘子 两个女儿专门等 吃盘子中的苹果 西安建筑科技大学华清学院课程设计 论文 第 2 页 3 需求分析需求分析 3 1 数据需求 爸爸向盘子中放一个苹果 Father 妈妈向盘子中放一个橘子 Mother 儿子 1 从盘子取一个橘子 Son1 儿子 2 从盘子取一个橘子 Son2 女儿 1 从盘子取一个苹果 Daugther1 儿子 1 从盘子取一个苹果 Daugther2 3 2 基本功能需求 吃水果问题的需求 主要是放水果和取水果的事情 而这吃水 果问题是进程同步问题的模拟 可以把向盘子放或取水果的每 一个过程可以转为一个进程的操作 这些进程是互斥的 同时 也存在一定的同步关系 我通过这次编程实践时 调用一个进 程的操作 计算机在执行时每一个时刻只能执行一个操作 这 就默认了互斥 放取水果也向我们展示了进程同步 3 3 非功能性需求 用户界面需求 简洁 易用 易懂 友好的用户界面 硬件要求 装有Visual C 6 0的计算机 可靠性需求 保证用户在正常使用本系统时 用户的操作或误操 作不会产生数据的丢失 西安建筑科技大学华清学院课程设计 论文 第 3 页 4 概要设计概要设计 4 1 数据结构 1 用一个整型变量 Plate Size 表示盘子 初始值为 0 当 放水果时 Plate Size 加 1 取水果时 Plate Size 减 1 变量 Plate Size 的最大值为 2 当为 2 时表示盘子已经满 此时 若进行放水果操作 放水果将处于等待状态 为 0 时表示盘 子为空 此时若进行取水果操作 取水果操作将处于等待状 态 2 整型变量 orange 和 apple 分别表示盘子中的橘子和苹果 数目 初始都为 0 Plate Size apple orange 3 用 6 个 bool 型的变量 Father lag Mother lag Son1 lag Son2 lag Daughter1 lag Daughter2 lag 表示六个进程是否处于等待状态 处于 等待时 变量值为 true 4 两个放水果进程进程同时处于等待状态时 若有取水果 的操作将自动执行等待的放水果进程 执行按等待的先后顺 序 两个取苹果或橘子进程同时候处于等待状态 若有放苹 果或橘子的操作将自动执行等待的取进程 进行按等待的先 后顺序 5 用一个随机的函数产生 0 5 的 6 个整数 分别对应六个 进程的调用 4 2 系统包含的函数 主函数 用一个随机的函数产生 0 5 的 6 个整数 分别对应六个进 程的调用 调用的次数可以自己输入 本程序共产生了 10 次随 机的调用进程 西安建筑科技大学华清学院课程设计 论文 第 4 页 6 个进程函数 爸爸向盘子中放一个苹果操作 Father 妈妈向盘子中放一个橘子操作 Mother 儿子 1 从盘子取一个橘子操作 Son1 儿子 2 从盘子取一个橘子操作 Son2 女儿 1 从盘子取一个橘子操作 Daugther1 女儿 2 从盘子取一个橘子操作 Daugther2 Print 函数 此函数主要功能是用于得到输出盘子中苹果和橘子的个数 以及水果总个数并且是哪些进程处于等待状态 4 3 函数间的关系 6 个进程函数和 print 函数共同影响着主函数 而 6 个进程 函数则决定着主函数和 print 函数的运行 4 4 系统功能模块图 吃水果 放 水 果 爸爸 放苹 果 取 水 果 妈妈 放橘 子 两儿 子取 橘子 两女 儿取 苹果 西安建筑科技大学华清学院课程设计 论文 第 5 页 图 4 1 系统功能模块图 5 详细设计详细设计 5 1 结构体的详细定义 int Plate Size 0 表示盘子中当前有几个水果 int orange 0 apple 0 表示盘子中 orange 和 apple 的个数 bool Father lag Mother lag Son1 lag Son2 lag Daughter1 lag Daughter2 lag 六个进程处于等待时 变量值为 true 5 2 系统函数详细介绍 主函数 void main main 函数 实现其他功能函数的调用 void Print 函数声明 void Father void Mother void Son1 void Son2 void Daughter1 void Daughter2 int k srand unsigned time NULL srand 函数产生一个以当前 时间开始的随机种子 Print 函数 void Print Print 函数 打印盘子剩余水果及各进程等待状态 西安建筑科技大学华清学院课程设计 论文 第 6 页 cout 现在盘子里有 apple 个苹果 orange 个橘子 共有 apple orange 个水果 endl if Father lag true cout Father 进程处于等待状态 if Mother lag true cout Mother 进程处于等待状态 if Son1 lag true cout Son1 进程处于等待状态 if Son2 lag true cout Son2 进程处于等待状态 if Daughter1 lag true cout Daughter1 进程处于等待状态 if Daughter2 lag true cout Daughter2 进程处于等待状态 if Father lag false 6 个进程函数 void Father Father 进程 apple Print void Mother Mother 进程 orange Print void Son1 Son1 进程 orange Print void Son2 Son2 进程 orange Print 西安建筑科技大学华清学院课程设计 论文 第 7 页 void Daughter1 Daughter1 进程 apple Print void Daughter2 Daughter2 进程 apple Print 5 3 系统功能模块介绍 最主要的是放水果和取水果模块 其中爸爸和妈妈分别放苹果和 橘子 而儿子和女儿分别取橘子和苹果 5 4 具体模块设计 放水果操作 A 爸爸放苹果进程的操作流程图 西安建筑科技大学华清学院课程设计 论文 第 8 页 Father 操作 Plate Size 2 否 否 Daugther1 或 Daugher2 处 于等待状态 是 按等待先后顺序调用 Daugther1 或 Daughter2 操作 是 Father 进程处于等待状态 Father 进程调用 apple 1 Plate Size 1 Print 函数调用 返回 图 5 1 爸爸放苹果图 B 妈妈放橘子进程的操作流程图 西安建筑科技大学华清学院课程设计 论文 第 9 页 Mothe 操作 Plate Size 2 否 否 Son1 或 Son2 处于等待状 态 是 按等待先后顺序调用 Son1 或 Son2 操作 是 Mather 进程处于等待状态 Mather 进程调用 orange 1 Plate Size 1 Print 函数调 用 返回 图 5 2 妈妈放橘子图 西安建筑科技大学华清学院课程设计 论文 第 10 页 取水果操作 儿子 i 取橘子的操作流程图 Son i 操作 Plate Size 0 否 否 Mother 处于等待状态 是 调用 Mother 操作 是 Son i 进程处于等待状 态 Son i 进程调用 orange 1 Plate Size 1 Print 函数调用 返回 图 5 3 儿子取橘子图 西安建筑科技大学华清学院课程设计 论文 第 11 页 女儿 i 取苹果的操作流程图 Douther i 操作 Plate Size 0 否 否 Father 处于等待状态 是 调用 Father 操作 是 Dauther i 进程处于等待 状态 Douther i 进程调用 apple 1 Plate Size 1 Print 函数调用 返回 图 5 4 女儿取苹果图 西安建筑科技大学华清学院课程设计 论文 第 12 页 6 调试分析调试分析 1 测试数据 第一次运行 图 6 1 第一次运行结果 西安建筑科技大学华清学院课程设计 论文 第 13 页 第二次运行 图 6 2 第二次运行结果 2 算法改进设想 程序有些代码部分有重的 可以把这些重复执行的代码写 成函数 需要用时直接调用代码函数 西安建筑科技大学华清学院课程设计 论文 第 14 页 7 使用说明使用说明 1 打开 microsoft visual C 6 0 2 点击下面图标 sds cpp 3 得到结果 图 7 1 使用说明图 西安建筑科技大学华清学院课程设计 论文 第 15 页 8 8 设计总结设计总结 此次试验是个人完成的 我首先进行了分析问题 从而把 问题转化为编程问题 同时对进程同步有了比较深刻的理解 其次我用了个随机函数来调用相应的进程函数 这对进程间的 同步和等待状态有了很好的说明和全面的阐述 之后 我设了六个 bool 型的变量来表示各进程时候处于等 待状态 还设置了相应的整型变量来解决等待进程在适当的条 件下自动调用的先后问题 总的来说这次试验比较成功 加深了我对进程的理解 同 时也提高了自己的编程的能力 编程是个长久的过程 平时要 多去动手实践 去提高自己分析问题 发现问题 解决问题的 能力 这样才能更好的发挥自己的设计能力 西安建筑科技大学华清学院课程设计 论文 第 16 页 9 参考文献参考文献 1 汤小丹 梁红兵 哲凤屏 汤子瀛 编著 计算机操作系 统 第三版 西安 西安电子科技大学出版社 2007 5 2 史美林编 计算机操作系统教程 北京 清华大学出版 社 1999 11 3 徐甲同编著 操作系统教程 西安 西安电子科技大学 出版社 1996 8 4 Clifford A Shaffer 编著 数决结构与算法分析 C 版 北京 电子工业出版社 2005 7 5 蒋立翔编著 C 程序设计技能百练 北京 中国铁道出 版社 2004 1 西安建筑科技大学华清学院课程设计 论文 第 17 页 10 程序源代码程序源代码 include 用到了 time 函数 所以要有这个头文件 include 用到了 srand 函数 所以要有这个头文件 include int Plate Size 0 表示盘子中当前有几个水果 int orange 0 apple 0 表示盘子中 orange 和 apple 的个数 bool Father lag Mother lag Son1 lag Son2 lag Daughter1 lag Daughter2 lag 六个进程处于等待时 变量值为 true void main main 函数 实现其他功能函数的调用 void Print 函数声明 void Father void Mother void Son1 void Son2 void Daughter1 void Daughter2 int k srand unsigned time NULL srand 函数产生一个以当前时间开 始的随机种子 for k 0 k 10 k cout 第 k 1 次操作 endl printf 第 d 次操作 n k 1 int i rand 6 随进生成 6 以内的整数 即 0 5 的 6 个整 数 Plate Size apple orange int MonFa c Daughter b Son a for 语句的局部变量 控制进 程等待的优先次序 MonFa c 2 Mather 执行 MonFa c 1 Father 执行 switch i 0 为 Father 调用 1 为 Mother 调用 2 3 为 Son1 Son2 调 4 5 为 Daughteri 调用 case 0 cout Father 调用 endl if Plate Size 2 西安建筑科技大学华清学院课程设计 论文 第 18 页 Father lag true Father 等待 Print if Mother lag false MonFa c 1 else Father if Daughter1 lag true Daughter1 等待取消 Daughter1 处于等待的 Daughter1 自动 调用 Daughter b 2 优先级让给 Daughter2 else Daughter2 lag false Daughter2 等待取消 Daughter2 处于等待的 Daughter2 自动 调用 Daughter b 1 优先级让给 Daughter1 else if Daughter1 lag true Daughter1 lag false Daughter1 等待取消 Daughter1 处于等待的 Daughter1 自动调 用 Daughter b 0 没有等待的 Dauther 进程 else if Daughter2 lag true Daughter2 lag false Daughter2 等待取消 Daughter2 处于等待的 Daughter2 自动 西安建筑科技大学华清学院课程设计 论文 第 19 页 调用 Daughter b 0 break case 1 cout Mother 调用 endl if Plate Size 2 Mother lag true Mother 等待 Print if Father lag false MonFa c 2 else Mother if Son1 lag true Son1 等待取消 Son1 处于等待的 Son1 自动调 用 Son a 2 优先级让给 Son2 else Son2 lag false Son2 等待取消 Son2 处于等待的 Son2 自动调 用 Son a 1 优先级让给 Son1 else 西安建筑科技大学华清学院课程设计 论文 第 20 页 if Son1 lag true Son1 lag false Son1 等待取消 Son1 处于等待的 Son1 自动 调用 Son a 0 else if Son2 lag true Son2 lag false Son2 等待取消 Son2 处于等待的 Son2 自 动调用 Son a 0 break case 2 cout Son1 调用 endl if orange 0 Son1 lag true Son1 处于等待 Print if Son2 lag false Son a 1 用于判断 Son1 和 Son2 等 待的先后性 else Son1 if Father lag true Father MonFa c 2 西安建筑科技大学华清学院课程设计 论文 第 21 页 else Father 和 Mother 同时处于等待 但 Mother 先等待 因此先调用 Mother lag false Mother MonFa c 1 else if Father lag true 只有 Father 处于等待 调 用 Father lag false Father MonFa c 0 else if Mother lag true 只有 Mother 处于等待 调用 Mother lag false Mother MonFa c 0 break case 3 cout Son2 调用 endl if orange 0 Son2 lag true Son2 处于等待 Print if Son1 lag false Son a 2 else 西安建筑科技大学华清学院课程设计 论文 第 22 页 Son2 if Father lag true Father MonFa c 2 else Father 和 Mother 同时处于等待 但 Mother 先等待 因此先调用 Mother lag false Mother MonFa c 1 else if Father lag true 只有 Father 处于等待 调 用 Father Father lag false Father MonFa c 0 else if Mother lag true 只有 Mother 处于等待 调用 Mother Mother lag false Mother MonFa c 0 break 西安建筑科技大学华清学院课程设计 论文 第 23 页 case 4 cout Daughter1 调用 endl if apple 0 Daughter1 lag true Daughter1 等待 Print if Daughter2 lag false Daughter b 1 else Daughter1 if Father lag true Father MonFa c 2 else Father 和 Mother 同时处于等待 但 Mother 先等待 因此先调用 Mother lag false Mother MonFa c 1 else if Father lag true 只有 Father 处于等待 调用 Father lag false Father MonFa c 0 else if Mother lag true 只有 Mother 处于等待 西安建筑科技大学华清学院课程设计 论文 第 24 页 调用 Mother lag fa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售团队出差费用报销及市场拓展合同
- 个人艺术收藏借款合同范本
- 民政殡葬专业考试题及答案
- 孤独症康复专业试题及答案
- 医师专业面试题及答案
- 转专业考试语言试题及答案
- 社交媒体医械信任度提升-洞察及研究
- 木材加工技术革新与政策法规应对策略-洞察及研究
- 2025至2030中央商务区行业产业运行态势及投资规划深度研究报告
- 2025至2030中国湿喷混凝土机行业运营态势与投资前景调查研究报告
- 苏教版四年级下册科学知识点全册
- 儿童口腔保健及不良习惯课件
- 高中英语词汇3500词(含音标)
- 凝结水泵解体检修课件
- 软件系统运维方案
- TDTG提升机说明书
- 管线打开作业工作安全分析(JSA)记录表
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 住院病人药物使用情况评价表
- 阳宅风水培训讲义课件
- 1《材料科学基础》第一章晶体学基础课件
评论
0/150
提交评论