电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

操作系统课程设计-张为晓

  • 资源ID:46064849       资源大小:468.48KB        全文页数:40页
  • 资源格式: DOC        下载积分:8金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要8金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

操作系统课程设计-张为晓

课程设计说明书课程设计说明书课程名称: 操作系统课程设计 专 业: 计算机科学与技术 班级: 2012-2 设 计 人: 晁子墨 山山 东东 科科 技技 大大 学学20152015 年年 1 1 月月 1414 日日2山山 东东 科科 技技 大大 学学课课 程程 设设 计计 任任 务务 书书一、课程设计题目: 操作系统 二、设计原始资料: 操作系统 (第三版) 、 现代操作系统 三、设计应解决下列各主要问题:1、 生产者-消费者问题 2、 内存管理 3、 快速文件系统 四、设计说明书应附有下列图纸: 五、小组分工说明: 晁子墨生产者-消费者问题、内存管理、快速文件系统六、命题发出日期: 2014-9-24 设计完成日期: 2015-1-15 3指导教师评语指导教师评语成绩:成绩: 指导教师(签章):指导教师(签章): 年年 月月 日日4目目 录录题目一题目一 生产者生产者- -消费者问题消费者问题1 1需求分析说明需求分析说明 51.1 问题描述5 1.2 原理分析62 2概要设计说明概要设计说明62.1 功能描述6 2.2 数据结构分析7 2.3 数据结构图73 3详细设计说明详细设计说明83.1 主函数模块8 3.2 程序流程图83.2.1 生产者93.2.2 消费者104 4调试分析调试分析114.1 遇到的问题11 4.2 测试结果135 5用户使用说明用户使用说明13题目二题目二 内存管理系统内存管理系统1 1 需求分析说明需求分析说明 171.1 问题描述17 1.2 原理分析182 2 概要设计说明概要设计说明182.1 函数定义说明1953 3 详细设计说明详细设计说明213.1 代码实现264 4 调试分析调试分析264.1 运行结果274.2 运行结果分析285 5 用户使用说明用户使用说明30题目三题目三 快速文件系统快速文件系统1 1 需求分析说明需求分析说明 371.1 设计目的371.2 问题描述381.3 原理说明382 2 概要设计说明概要设计说明392.1 函数定义说明403 3 详细设计说明详细设计说明413.1 代码实现434 4 调试分析调试分析434.1 运行结果434.2 运行结果分析445 5 用户使用说明用户使用说明455.1 用户操作指南46课程设计总结课程设计总结486题目一题目一 生产者生产者- -消费者问题消费者问题1 需求分析说明需求分析说明生产者-消费者问题的总体目标:在 Windows 的开发环境下,利用所学C+语言和数据结构的相关知识,利用程序实现经典的生产者-消费者问题的输出,以帮助我们更好的理解和应用进程同步的原理。1问题描述问题描述有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区中取走产品,也不允许生产者向一个已经放入产品的缓冲区中再次投放产品。这就是生产者-消费者问题。2原理分析原理分析在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。2 概要设计说明概要设计说明1功能描述功能描述 1.1 生产者功能描述在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然 后将物品放置在一个空缓冲区中供消费者线程消费。当生产者线程生产 物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程 释放出一个空缓冲区。71.2 消费者功能描述 消费者线程从缓冲区中获得物品,然后释放缓冲区。当消费者线程 消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新 的物品被生产出来。 2数据结构分析数据结构分析 2.1 生产者与消费者实现: 这其中主要是通过多线程,来实现生产者和消费者之间的协调问题。2.2 生产者(producer)消费者(consumer): 通过一些记录性变量,来记录模拟实现生产者的行为,程序采用 OO 设计模式,缓存区采用队列结构存储。 3 3程序结构图程序结构图3 详细设计说明详细设计说明1主函数模块主函数模块1.1 创建互斥信号量、已占用的缓存区和未被占用的缓存区并进行初始化。81.2 创建生产者线程和消费者线程。1.3 当输入回车时,结束程序。2程序流程图程序流程图2.1 生产者NYYN开 始生产产品P(empty)empty0P (mutex)Mutex=1addTail()Empty-V (mutex)V (occupy)缓冲区内已满,已 无可用缓冲区缓冲区正被其他进 程占用结 束92.2 消费者NYYN开 始P (full) 消费请求full0Wait (mutex)Mutex=1消 费full -V(mutex)V (empty)缓冲区内产品已空, 不能进行消费缓冲区正被其他进 程占用结 束103、程序主要代码public class HoldIntegerSynchronizedprivate int buffer; /缓冲区private int occupiedBufferCount = 0;private int readPosition = 0, writePosition = 0;/下一个读到的位置和写到的位置public HoldIntegerSynchronized(int capacity)buffer = new intcapacity;public int BufferSizegetreturn buffer.Length;public int Buffergetint bufferCopy;/ 加锁lock (this)11while (occupiedBufferCount = 0) /多个消费者,所以此处改用whileConsole.WriteLine(Thread.CurrentThread.Name + “ tries to read. “);DisplayState(“Buffer Empty. “ + Thread.CurrentThread.Name + “ waits.“);Monitor.Wait(this);/ 为临界区之外等待的生产者放行,让他来“生产“/ 一直到生产者生产结束,调用了Monitor.PauseAll()/ 才能继续执行下去,此时,消费者自动重新获得this的锁-occupiedBufferCount;bufferCopy = bufferreadPosition;readPosition = (readPosition + 1) % buffer.Length;DisplayState(Thread.CurrentThread.Name + “ reads “ + bufferCopy);/ 通知,让等待的 生产者线程 进入Started状态,如果生产者处于临界区之外,这句话执行完后他仍然在临界区之外Monitor.PulseAll(this);/ 释放锁/lockreturn bufferCopy;set/ 加锁lock (this)while (occupiedBufferCount = buffer.Length)12Console.WriteLine(Thread.CurrentThread.Name + “ tries to write. “);DisplayState(“Buffer Full. “ + Thread.CurrentThread.Name + “ waits.“);Monitor.Wait(this);/ 为临界区之外等待消费者放行,让他来“消费“/ 一直到消费者调用了Monitor.Pause()/ 才能继续执行下去,此时,生产者自动重新获得this的锁bufferwritePosition = value;+occupiedBufferCount;writePosition = (writePosition + 1) % buffer.Length;DisplayState(Thread.CurrentThread.Name + “ writes “ + value);/ 通知,让Wait状态的 消费者 进入Started状态,如果消费者处于临界区之外,这句话执行完后他仍然在临界区之外Monitor.PulseAll(this);/ 释放锁4 调试分析调

注意事项

本文(操作系统课程设计-张为晓)为本站会员(依依)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.