【操作系统】实验2:进程管理
注:本文记录 WHUT-计算机学院-操作系统 课程 实验2:进程管理
>>点击查看武汉理工大学计算机专业课程资料汇总
纸上得来终觉浅,觉知此事需躬行!
1、实验内容:
实验预备:掌握进程管理的相关内容,对进程的同步和互斥,及信号量机制有深入的理解
实验内容:模拟实现用信号量机制解决哲学家就餐问题 (或其他经典的同步问题)
具体要求:
- 任选一种计算机高级语言编程实现
- 实现5个哲学家(5只筷子)的顺利就餐
- 需避免出现死锁
- 使用信号量、及信号量的等待队列
- 使用P操作、V操作
- 能够显示每个哲学家、及每只筷子的状态
2、运行截图:
3、源代码:
package test2;/*每个哲学家安排一个线程*/
class Philosopher extends Thread{private String name;private Chopsticks Chopsticks;public Philosopher(String name,Chopsticks Chopsticks){super(name);this.name=name;this.Chopsticks=Chopsticks;}//重构public void run(){while(true){//哲学家的状态就是:思考→进餐→思考 循环thinking();Chopsticks.P();eating();Chopsticks.V();}}public void eating(){int i = Integer.parseInt(name);System.out.println("哲学家 " + name + "号 开始拿着筷子 "+ i +" 和 "+ (i+1)%5 + "进餐!");//打印哲学家状态和筷子状态try {sleep(2000);//假设吃饭时间为5秒钟} catch (InterruptedException e) {e.printStackTrace();}}public void thinking(){System.out.println("哲学家 " + name + "号 陷入了思考!");try {sleep(2000);//假设思考4秒钟} catch (InterruptedException e) {e.printStackTrace();}}
}class Chopsticks{/*5只筷子,初始为1,即未被用*/private int[] ChopStatus={1,1,1,1,1};//避免死锁/*P操作:只有当左右手的筷子都未被使用时,才允许获取筷子,且必须同时获取左右手筷子*/public synchronized void P(){//获得当前线程的名字(哲学家)String name = Thread.currentThread().getName();int i = Integer.parseInt(name);//当当前线程哲学家左右手的筷子已经被占用while(ChopStatus[i]==0||ChopStatus[(i+1)%5]==0){try {System.out.println("哲学家 "+ name +"号 正在等待筷子!");//当前哲学家线程进入等待状态 wait(); } catch (InterruptedException e) {e.printStackTrace();}}//获得左右筷子,修改筷子状态ChopStatus[i]-=1 ;ChopStatus[(i+1)%5]-=1;}/*V操作:同时释放左右手的筷子*/public synchronized void V(){//获得当前线程的名字(哲学家)String name = Thread.currentThread().getName();int i = Integer.parseInt(name);//释放左右筷子ChopStatus[i]+=1;ChopStatus[(i+1)%5]+=1;//唤醒等待序列中的线程notifyAll();}
}public class Think_Eat {public static void main(String []args){Chopsticks Chopsticks = new Chopsticks();new Philosopher("0",Chopsticks).start();new Philosopher("1",Chopsticks).start();new Philosopher("2",Chopsticks).start();new Philosopher("3",Chopsticks).start();new Philosopher("4",Chopsticks).start();}
}
【操作系统】实验2:进程管理相关推荐
- 操作系统实验二 进程管理
进程管理 一.实验目的 1. 理解进程的概念,明确进程和程序的区别. 2. 理解并发执行的实质. 3. 掌握进程的创建.睡眠.撤销等进程控制方法. 二.实验内容与基本要求 用C语言编写程序,模拟实现创 ...
- 操作系统——实验二 进程管理
1.实验目的 (1)加深对进程概念的理解,明确进程和程序的区别. (2)进一步认识并发执行的实质. (3)分析进程竞争资源现象,学习解决进程互斥的方法. 2.实验预备内容 (1)阅读Linux的sch ...
- 计算机操作系统实验二 进程管理
一.实验目的 1.掌握进程的概念,明确进程的含义 2.认识并了解并发执行的实质 二.实验内容 1.编写一段程序,使用系统调用fork( )创建两个子进程.当此程序运行时,在系统中有一个父进程和两个子进 ...
- 操作系统 实验一 进程管理与进程同步
理解安全性算法和银行家算法的核心机制: 针对3类资源.5个进程的情况,设计相应的数据结构,分别表示每个进程占用各类资源的情况: 编程实现安全性算法函数,编制主函数,动态输入资源的占用情况,进程的资源申 ...
- 操作系统实验一 Linux基本操作|实验二 进程管理
由于当时没存代码,只有实验文档代码截图,文末也可直接获取实验文档. 操作系统实验 目录 实验一 Linux基本操作 实验二进程管理 实验一 Linux基本操作 1实验目的 1.熟悉在Linux操作系统 ...
- linux进程管理命令实验,实验2Linux进程管理.doc
实验2Linux进程管理 实验2 Linux进程管理 实验目的 1.加深对进程概念的理解,明确进程和程序的区别 2.进一步认识并发执行的实质 3.分析进程争用资源的现象,学习解决进程互斥的方法 实验性 ...
- (王道408考研操作系统)第二章进程管理-第三节10:经典同步问题之哲学家进餐问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 (王道408 ...
- (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...
- (王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题
注意:生产者与消费者问题Linux系统编程专栏有案例讲解 Linux系统编程39:多线程之基于阻塞队列生产者与消费者模型 Linux系统编程40:多线程之基于环形队列的生产者与消费者模型 本文接:(王 ...
- 笔记篇:操作系统第二章 进程管理
笔记篇:操作系统第二章 进程管理 目录 笔记篇:操作系统第二章 进程管理 2.1 进程的基本概念 2.1.1 程序的顺序执行及其特征 2.1.2 前驱图 2.1.3 程序的并发执行及其特征 2.1.4 ...
最新文章
- Python使用shape计算矩阵的行和列
- excel 复制数据 sql server 粘贴_win32 实现 excel 快速复制粘贴
- 不能比较或排序text、ntext和image数据类型,除非使用IS NULL 或 LIKE 运算符。
- php 文件上传$_FILES中error返回值详解
- TortoiseSVN 使用详细步骤(三):安装
- 大众点评运维架构图文详解
- ryuyan 方差分析_R语言之方差分析篇
- love2d环境搭配
- 现控计控中基于留数法Z变换与Z反变换的MATLAB实现
- 那些年踩过的坑-之《Android Q-高通平台UAC(USB Audio Class)调试记录》
- 研发人员技术定级的一些思考
- 图像的对比度、亮度、色彩饱和度调节以及灰度化
- 《IT老外在中国》第22期:“中国餐桌”上的法式创新
- 西南科技大学计算机考研好考吗,西南科技大学考研难吗?一般要什么水平才可以进入?...
- 如何利用RFM分析模型进行数据分析?
- 零基础教你Unity制作像素鸟游戏 【文末源码】
- 机房动力环境监控系统
- 狗都能看懂的变化检测网络Siam-NestedUNet讲解——解决工业检测的痛点
- 数据结构学习笔记之快速排序(非递归)
- 服务器上显示存储脱机,使存储空间直通服务器脱机以进行维护
热门文章
- Docker安装Graylog
- 搞清楚字符编码08-万国码[4](utf-8)
- python实现二叉树的俯视图
- 教你如何设置微信“拍一拍”用表情包自动回复
- ubuntu jsoncpp 1.9.5 编译使用
- 名人故事之 Jon S. von Tetzchner
- 缺少计算机所需的介质驱动程序w10,安装Win10系统提示“缺少电脑需要的媒体驱动”怎么办?...
- 施乐 著名的帕洛阿尔托研究中心
- Python编程从入门到实践课后答案:第七章
- Java响应式编程框架