欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统原理课程设计.pdf

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

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统原理课程设计.pdf

    操作系统原理课程设计操作系统原理课程设计 提优论文提优论文 题 目:“哲学家就餐问题”模拟系统 姓 名:尹岩,刘宇凡,丁磊 学 院:信息科技学院 专 业:计算机科学技术系 班 级:计科 61 学 号:1926103、1926110、1926101 指导教师:姜海燕 职称:副教授 2009 年 3 月 12 日 “哲学家就餐问题”模拟系统 计科 61 丁磊,尹岩,刘宇凡 指导教师:姜海燕 摘要:现代操作系统引入并发程序设计技术之后,程序的执行不再是顺序的。在多个进程并发运行的过程中,进程之间可能产生相互制约的关系,即竞争和协作。而如果一个进程集合中的每个进程都在等待只能由此集合中的其他进程才能引发的事件,就会出现死锁。操作系统中经典的 5 位哲学家吃面问题正反映了进程并发执行这一情况。在问题中,哲学家思考就餐等待的过程正体现了进程在并发执行中对临界资源的互斥访问,同时也因此可能出现死锁现象。本课程设计所完成的正是对“哲学家就餐问题”的模拟。此系统根据操作系统中并发进程、临界区、同步等基本概念及理论进行设计,用 C#语言实现,在模拟实现“哲学家就餐问题”的基础上还提供了解决死锁的三种基本方法。本系统较好的模拟了“哲学家就餐问题”,对于进程互斥、临界区、死锁等问题的深入理解有重要意义。关键字:操作系统 哲学家就餐问题 模拟 c#The Simulation System of The Philosophers Eating Problem Yin Yan Liu Yufan Ding Lei Abstract:Programs have executed with not orders since concurrent programming was used in OS.Concurrent processes should have two relationships during a program is running:competing and cooperation.If each process is waiting for a event which must be called by other processes,then deadlock appears.The Five Philosophers Eating Problem conducts the concurrent conditions.Philosophers refer to the processes and chopsticks refer to the critical resources.This course emulates the problem.There is the conception of synchronism,concurrent processes and critical region in this system.At the same time,we provide three methods to prevent deadlock.Our program is accomplished with C#.Our course helps us to improve the apprehension of critical region,deadlock and other problems in OS.一、研究目的与意义:本课程设计通过模拟计算机操作系统中经典的“哲学家就餐问题”,巩固在操作系统原理课上所学的知识,加深对操作系统中进程互斥、临界区、死锁等问题的认识和理解,同时又了解了软件生成的流程、方法以及思想,提高了分析设计以及编程的能力,最后将此作品用于课堂理论教学的演示之用,增强课堂教学的趣味性。二、理论分析:现代操作系统引入并发程序设计技术之后,程序的执行不再是顺序的,一个程序为执行完而另一个程序就已经开始执行,程序外部的顺序特性消失,程序与计算不再一一对应。于是人们引入进程来描述这种变化。一组进程在执行时间上是重叠的,进程即并发执行。在多个进程并发运行的过程中,进程之间可能是无关的,也可能是交互的。交互进程之间可能产生的关系,包括竞争和协作。并发进程中与共享变量有关的程序段成为临界区,共享变量所代表的资源成为临界资源。有多种方法可以实现对临界区、临界资源的管理。其中最基本的方法是设置相应的信号量和P、V操作。在并发进程执行的过程中,对共享资源的竞争可能产生死锁问题,既一个进程集合中的每个进程都在等待只能由此集合中的其他进程才能引发的事件,而无限期陷入僵持的局面。解决死锁问题的方法包括:通过指定资源申请占有及释放的策略来彻底防止死锁的发生;根据特殊算法决定资源分配和去配策略,避免死锁的发生;对死锁情况进行检测并解除。综上,本模拟程序应当模拟进程的并发执行,对临界资源的互斥访问和死锁情况的发生和防止。三、核心技术:本模拟程序的核心技术是模拟进程的并发执行和对临界资源的互斥访问。模拟程序的编写过程所使用的技术路线为:由于算法简单,不定义独立的 P、V 操作,而是将之融入对资源的申请及释放操作之中。对于进程的模拟对象即“哲学家”只定义必要的状态包括“思考”(不申请资源的状态)、“等待”(申请资源但无法获得全部资源的等待状态)和“吃面”(获得所申请的所有资源的运行状态)以及占有资源的数量。而对于资源即“筷子”,除了确定资源是否被利用的状态之外定义了资源是否有其他的申请者这一状态值。所有状态值都是用枚举表示。防止死锁产生的策略采用方法为:如果不能申请并占有到两支“筷子”(所有的资源),那么就不占有任何一支。这个方法实际上是破坏了产生死锁的第二个条件即“占有和等待条件”。对于 Windows 界面应用程序中的绘图(及重绘),采用了根据“哲学家”和“筷子”的状态信息进行操作的方法。四、功能设计及结构设计:1)功能设计:在这个模拟程序中,使用者需要的功能非常简单:根据使用者控制“哲学家拿筷子”和“哲学家放下筷子”这两个动作,实现五位“哲学家”和五支“筷子”状态的变化。同时,使用者可以选择改变资源分配策略,防止死锁或不防止死锁。最后,使用者还可以退出程序或重置“哲学家”及“筷子”的状态。下图为模拟系统(程序)的用例图:2)结构设计:A.基本数据结构、枚举类型及类的定义:哲学家结构体以及筷子结构体。public struct Phi/哲学家:状态和持有资源状态 status Phi_status;/哲学家所处的状态 R_status Phi_resource;/拥有筷子的数量 public status Phi_Status/取得或设置对应属性值的方法 get return Phi_status;set Phi_status=value;public R_status Phi_Resource get return Phi_resource;set Phi_resource=value;public struct KuaiZi/筷子 K_status exist;/存在状态 K_status ordered;/预约状态 public K_status Exist get return exist;set exist=value;public K_status Ordered get return ordered;set ordered=value;相关枚举类型。/*枚举类型定义*/public enum status/哲学家所处的状态 Thinking=1,Eatting=2,Waiting=3 public enum R_status/哲学家又有筷子的数量 None=0,One=1,Two=2 public enum K_status/筷子的预约/存在状态 Yes=1,No=0 public enum W_status/工作方式选择状态,这个数字排列不太整齐 SS=1,USS01=0,USS02=2,USS03=3 哲学家类定义(核心程序)。/*哲学家类定义*/class PHI/哲学家类 private static KuaiZi Resource=new KuaiZi5;/资源数组 private static Phi Phis=new Phi5;/哲学家 int Max;/第三种不允许死锁方法所用的计数器 public static void FirstMenu()/显示菜单函数。用于核心程序。public PHI()/构造函数。public void Init()/初始化函数。和构造函数是一样的。/调度方法一:public void a_Process(int input)/过程函数。根据输入的数字进行操作。允许死锁。/调度方法二:public void b_Process(int input)/过程函数。“如果不能得到所有资源就不占有任何资源”的分配方法。不允许死锁。/调度方法三:public void c_Process(int input)/过程函数。“偶数号先取左筷子,奇数号先取右筷子”的分配方法。/调度方法四:public void d_Process(int input)/过程函数。“最多只有4个人申请吃面”的分配方法。public bool Print()/显示函数。用于核心程序。static void Main(string args)/主函数。之后对核心程序进行修改,完成了用户界面程序。主要添加了以下方法:protected override void OnPaint(PaintEventArgs e)/重载的 OnPaint 方法,用于绘图 private void NumberCheck(object sender,KeyEventArgs e)/相应键盘事件的函数。private void DoWorkPaint(object sender,DoWorkEventArgs e)/backgroundworker 的工作函数。负责提供重绘事件。private void SS(object sender,EventArgs e)private void USS01(object sender,EventArgs e)private void USS02(object sender,EventArgs e)private void USS03(object sender,EventArgs e)/对于改变判断方式的事件响应方法。最后为了方便图片信息的载入,定义了一个相关的索引器。/*声明索引器的类*/public class ImageIndex public Image picture=new Image5;public Image thisint index/要使用this关键字 get return pictureindex;set pictureindex=value;B.相关算法设计:由于算法相对简单,所以这里只给出流程图。无意义操作 申请资源(处在“思考”或“等待”状态)是否标号超出范围或已拥有两个资源 是 否 进程拥有资源的情况 未拥有资源 已拥有一个资源 左边是否有空闲资源 右边是否有空闲资源 否 是 是 把 哲 学 家 设 成“等待”状态,并设置资源“预约”分配资源并修改进程和资源的状态 否 分配资源并修改进程和资源的状态,并把哲学家设成“进食”状态 结束操作 无意义操作 释放资源(处于“进食”状态)是否标号超出范围 是 否 进程已占有资源的状态 右边是否处于“等待”右边是否处于“等待”否 是 是 释放资源。设置资源状态为“未预约”。释放资源并修改等待进程拥有资源量和资源的预约状态 否 释放资源,并把哲学家设成“进食”状态 结束操作 释 放 资源 并 把哲 学 家设成“思考”状态 C.程序执行流程:对于核心程序和用户界面程序,程序执行的流程基本相同,只是核心程序为命令行显示,而用户界面程序为图形动画演示。D.用户界面设计及操作方法的指定:请参考附件中的使用说明。五、调试分析:1)编程平台使用:Microsoft Visual Studio 2008 环境为:Microsoft.NET Framework 3.5 2)调试未出现问题。这里附上 Windows 用户界面程序调试截图:初始化类(建立Form 实例)检查哲学家和筷子的状态,输出信息(绘制图形)执行分配及去配资源方法 更改处理方法状态 改变分配资源方法 输入操作对象的数字(键盘按钮事件响应)初始化哲学家和筷子状态 退出程序(此为进入程序后的初始界面)(死锁情况发生)(哲学家状态的变化)(工作方式设置按钮(菜单)六、结语:由于时间紧促以及个人能力的不足,模拟系统在功能上尚存在一些问题,在很多方面都有改进的空间。主要表现在:程序健壮性不强,对于不少异常情况缺乏对应的解决手段;图形重绘过程过于简单,算法效率低下,直接导致程序运行所占资源较多;没有使用专用的软件,程序的结构框架设计较为粗糙。不过总的来说,本模拟系统还是较好的实现了它应有的功能。参考文献:【1】汤子瀛等 计算机操作系统【m】.修订版.西安:西安电子科技大学出版社,2001:8.【2】Bill Evjen(美)等著 李铭 译 黄静 校 c#高级编程(第六版).北京:清华大学出版社,2008:10.【3】何炎祥 计算机操作系统【m】.北京:清华大学出版社,2004:1.【4】黄干平,陈洛资等.计算机操作系统【m】.北京:科学出版社,1989.【5】黄祥喜 计算机操作系统实验教程【m】.广州:中山大学出版社,1994.【6】冯耀霖,杜瞬国.操作系统【m】.西安:西安电子科技大学出版社,1992.

    注意事项

    本文(操作系统原理课程设计.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开