教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

操作系统原理课程设计

来源:网络收集 时间:2026-09-03
导读: 经常论文资料 免费奉献 操作系统原理课程设计 题 目: 姓 名: 学 院: 专 业: 班 级: 学 号: 指导教师: “哲学家就餐问题”模拟系统 尹岩,刘宇凡,丁磊 信息科技学院 计算机科学技术系 计科61 1926103、1926110、1926101 姜海燕 职称: 副教授 2009 年3月 12

经常论文资料 免费奉献

操作系统原理课程设计

题 目: 姓 名: 学 院: 专 业: 班 级: 学 号: 指导教师:

“哲学家就餐问题”模拟系统

尹岩,刘宇凡,丁磊

信息科技学院 计算机科学技术系

计科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; } …… 此处隐藏:3084字,全部文档内容请下载后查看。喜欢就下载吧 ……

操作系统原理课程设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/135744.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)