操作系统课程设计推荐.doc

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计推荐

操作系统 课 程 设 计 书 学院 专业 班级 题目 操作系统实验报告 教师 学生 目 录 一、 实验题目与要求 1 实验一 进程创建及进程通信 1 实验二 生产者-消费者问题 1 实验三 存储管理实验 1 二、总的设计思想及环境语言、工具等 1 三、数据结构与模块说明 2 3.1数据结构设计 2 3.2模块说明 2 四、源程序及运行结果 4 4.1、实验一 进程创建及进程通信 4 exam1:创建子进程示例1 4 exam2:创建子进程示例2 5 exam3:利用管道实现单向通信 5 exam4:利用管道实现父子进程双向通信 6 4.2、实验二 生产者-消费者问题 7 exam5:实现进程互斥示例程序 7 exam6:实现进程同步示例程序 11 exam7:生产者和消费者问题 15 4.3、实验三 存储管理实验 20 exam8:请求页式存储管理页面置换算法比较 20 五、自我评价和总结 25 六、课程设计教材及主要参考资料 26 实验题目与要求 实验一 进程创建及进程通信 实验目的:掌握linux进程创建的基本方法及进程间的通信 实验要求:利用fork()创建子进程,利用pipe()实现进程间的通信。 实验二 生产者-消费者问题 实验目的:掌握进程之间的同步与互斥 实验要求:利用信号量实现生产者-消费者问题。 实验三 存储管理实验 实验目的:通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。 实验要求: (1).通过随机数产生一个页地址流,共640页 (2).用户内存容量为4页到32页 (3).计算并输出下述各种算法在不同内存容量下的命中率。 a.FIFO 先进先出算法 b.LRU 最近最少使用页面算法 c.OPT 最佳淘汰算法 二、总的设计思想及环境语言、工具等 总的设计思想: 1.利用fork()创建子进程,利用pipe()实现进程间的通信。 2.利用信号量实现生产者-消费者问题。 3.(1)通过随机数产生一个页地址流,共640页 (2)用户内存容量为4页到32页 (3)计算并输出下述各种算法在不同内存容量下的命中率。 a.FIFO 先进先出算法 b.LRU 最近最少使用页面算法 c.OPT 最佳淘汰算法 环境语言: cygwin环境C语言 工具: cygwin2.738 三、数据结构与模块说明 3.1数据结构设计 a.实验一 1.利用fork()创建一个新进程。 2.利用pipe()实现进程间的通信。使子进程与父进程之间实现同步。 3.子进程将信息写入管道并向父进程发出信号,父进程接到信号后从管道中读取信息,并将信息输出,如果读取失败则输出“fork error”。 b.实验二 生产者进程的功能:生产东西,供消费者消费; 消费者进程的功能:消费生产者生产的东西。生产者生产产品并存入缓冲区供消费者取走使用,消费者从缓冲器内取出产品去消费; 在生产者和消费者同时工作时,必须禁止生产者将产品放入已装满的缓冲器内,禁止消费者从空缓冲器内取产品。 c.实验三 系统功能流程图: 3.2模块说明 a.实验一 系统功能模块文字说明: 图3.2.1 进程的创建及通信模块演示 b.实验二 系统功能模块图: 图3.2.2 生产消费者进程模块演示 c.实验三 系统功能模块图: 图3.2.3 页式存储管理模块划分 四、源程序及运行结果 4.1、实验一 进程创建及进程通信 exam1: //父进程创建一个子进程,父进程显示金木水火土,子进程显示日月星辰,多次运行该程序会得到不同的运行结果。 #include unistd.h #include stdio.h #include stdlib.h main() { int pid,n=0; srand(getpid());/*设置随机种子*/ if ((pid=fork())!=0) while(n5) {printf(%d,n++); printf(金木水火土\n); sleep(rand()%3);} //睡眠 else while(n5) {printf(%d,n++); printf(日月星辰\n); sleep(rand()%3); } } 运行结果: exam2: //子进程改变了全局变量globa 和局部变量vari的值。通过调试运行,体会进程的运动轨迹。 #include s

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档