操作系统课程设计并发进程的模拟

上传人:夏** 文档编号:507979242 上传时间:2023-02-18 格式:DOCX 页数:17 大小:236.03KB
返回 下载 相关 举报
操作系统课程设计并发进程的模拟_第1页
第1页 / 共17页
操作系统课程设计并发进程的模拟_第2页
第2页 / 共17页
操作系统课程设计并发进程的模拟_第3页
第3页 / 共17页
操作系统课程设计并发进程的模拟_第4页
第4页 / 共17页
操作系统课程设计并发进程的模拟_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《操作系统课程设计并发进程的模拟》由会员分享,可在线阅读,更多相关《操作系统课程设计并发进程的模拟(17页珍藏版)》请在金锄头文库上搜索。

1、安就琨工犬孝课程设计说明书题目:并发进程的模拟院 系:计算机科学与工程 专业班级:学 号:学生姓名:指导教师:2014年 11 月 12 日安徽理工大学课程设计(论文)任务书计算机科学与工程院系计算机教研室学号学生姓名专业(班级)设计题目并发进程的模拟设 计 技 术参 数(1)系统作业或进程的数目;(2)通过P, V操作量实现进程同步的目的;(3)同步信号灯Sb和Sc的值;(4)进程的先后顺序。设计要求(1)编程用信号灯的p、v操作实现这三个进程的同步。(2) 任务启动后pa先执行,当它结束后,pb、pc可以开始执行,pb、pc都 执行完毕后,任务终止。(3)设两个同步信号灯sb、sc分别表示

2、进程pb和pc能否开始执行,其初值均 为0。工 作 量要求设计说明书的字数在3000字以上。工 作 计 划2014.11.21-2014.11.26根据课程设计的要求,查找相关资料,完成需求分析;2014.11.27-2014.12.02进行系统的概要设计;2014.12.03-2014.12.08进行系统的详细设计和源代码的书写;2014.12.08-2014.12.13对系统进行调试分析,写出课程设计报告。参 考 资 料1 龚沛曾等编Java程序设计教程北京:高等教育出版社,2004.2 谭浩强编著Java程序设计(第二版)北京:清华大学出版社,1999.3 庞丽萍等编著计算机操作系统教程

3、.北京:清华大学出版社,2011.4 汤晓丹等编.操作系统.北京:电子工业出版社,2009.5 刘腾红等编著.操作系统.北京:中国铁道出版社,2008.6 王国辉等编著.Java项目开发西安:西安电子科技大学出版社,2011指导教师签字教研室主任签字2014 年 11月 21 日安徽理工大学课程设计(论文)成绩评定表目录1 问题描述12 需求分析13 概要设计21. P 操作 22.V 操作33.P,V 操作实现进程同步 44. 功能模块设计 54 详细设计71. 主界面的设计程序 72. 进程 Pa 的执行 83. 进程Pb的执行94. 进程Pc的执行95. 按钮的执行 105 调试的分析与

4、运行结果 116 设计体会13参考文献141问题描述在进程并发执行的过程中,进程之间存在协作的关系,例如,有互斥、同步 的关系。该课程设计的是了解进程同步的概念,理解信号量机制的原理,掌握运 用信号量解决进程并发控制问题的方法,进而学会运用进程的同步 ,利用信号灯 的 P ,V 操作实现三个进程的同步。这三个进程的同步关系如下:进程pb和pc能否开始执行,其初值均为0。在现代操作系统中,有大量的并发进程在活动,它们都处在不断的申请资源, 使用资源以及其它进程的相互制约的活动中,这些进程什么时候停止运行,什么 时候该继续向前推进,应根据事先的约定来规范它们的行为,这时我们可以根据 同步信号灯来实

5、现进程的同步协调工作。例如本题中,只有 pa 进程顺利的进行 完, Pb, Pc 这两个进程才能正常的进行。如果进程 Pa 在进行中出现停止或中断, 则 Pb 和 Pc 是不会顺利的完成的;而进程 Pb, Pc 这两个进程是并行执行的,两 个进程的进行是互不干扰的,只要进程Pa完成后,进程Pb和Pc才会正常执行, 否则只有处在等待就绪中。2需求分析进程执行的并发性的意义是关于一组进程的执行在是时间上是重叠的,从宏 观上看,并发性反应的是一个时间段中几个进程都在同一个处理器上,处于运行 还未运行结束状态。从微观上看,任何一个时刻仅有一个进程在处理器上运行。 并发的实质是一个处理器在几个进程之间的

6、多路复用,并发是对有限的物理资源 强制行驶多用户共享,消除计算机部件之间的乎等现象,以提高系统资源利用率。并发进程分为无关的和交往的,无关的并发进程是一组并发进程分别在不同 的变量集合上操作,一个进程的执行与其他并发进程的进展无关。引入进程是为 了更好的解决实际中存在的竞态问题,进程同步的主要任务是对多个相关的进程 在执行次序上进行协调,以便并发执行的诸进程之间能有效的共享资源和相互合 作,从而使执行更具有可再现性。利用进程同步可以更好地解决生活中有先后执 行顺序的问题,进程的交往包括金正与写作,多个进程之间彼此相关或者是无关, 二资源金正的两个控制问题一个是死锁(Deadlock)问题,一个

7、是饥饿(Starvation) 问题,系统中既要解决饥饿问题,又要解决死锁问题。解决进程间的竞争关系(简 介制约关系)的手段是进程互斥,进程互斥指的的就是资源的共享问题,以往内 在同一时刻最多允许一个进程使用,其他进程必须等待,我们这个任务所需要的 就是先执行其中的一个任务,在结束之后进行另外的进程。所以我们解决这个问 题的同时学习并发进程。3概要设计1. P 操作对信号灯的P操作记为P(s)。P(s)是一个不可分割的原语操作,即取信号灯 值减一,若相减结果为负,则调用P(s)的进程被阻,并插入到信号灯的等待队列 中,否则可以继续执行。P 操作的主要动作:a) s 值减一;b) 若相减结果大于

8、或等于 0,则进程继续执行;c) 若相减结果小于 0,则进程被封锁,并将它插入到该信号灯的等待队列 中,然后转进进程调度程序。P 操作的流程图:2. V 操作对信号灯的V操作记为V(s)。V(s)个不可分割的原语操作,即取信号灯值加1,若相加结 果大于 0,进程继续执行,否则,唤醒在信号灯等待队列上的一个进程。V 操作的主要动作a) s 值加一;b) 若相减结果大于 0,则进程继续执行;c) 若相减结果小于或等于 0,则从该信号灯的等待队列中移出一个进程,解除 它的等待状态,然后返回本进程继续执行。V 操作的流程图 :sSso 入口从信号灯的等待队列中取出首元素置篁就绪状态入就绪队列返回3.

9、P,V 操作实现进程同步(1) 编程用信号灯的 p、v 操作实现这三个进程的同步。(2) 任务启动后pa先执行,当它结束后,pb、pc可以开始执行,pb、pc都执行 完毕后,任务终止。(3) 设两个同步信号灯 sb、sc 分别表示进程 pb 和 pc 能否开始执行,其初值均为 0。 其题目的算法描述如下:main ()int SW ;*表示比进程是否幵始执行*int Sc=O*表示比进程是否开始执 行邛cobegincoendFbOPtSb)NOPaQV(Sb)V(Sc;4. 功能模块设计本实验用JAVA语言实现(1) 在 Frame 工程中新建一个 ThreadProcess 类,定义一些静

10、态变量;主函 数main()中定义一个ThreadFrame类,并构造一个对象thFrame,通过调用函数将 界面,窗口展示出来;创建三个线程 threadPa, threadPb, threadPc。(2) ThreadFrame 类继承 JFrame 类,设置每个界面的长宽,调用类方法 ThreadFrame() 显示一些信息。(3) threadPanel类继承JPanel类,调用paintComponent()方法设置进程长 宽以及字体等,还有threadPanel()类方法设置进程前景与背景颜色,从而展示 出进程动态变化,重要一点是开始St art和暂停Stop按钮设置,控制进程开始

11、 与暂停效果。(4) 在类外分别添加三个进程类threadPa, threadPb, threadPc,都继承线程 Thread 类,其中各自有的控制函数 run()。程序执行能够达到实验的要求效果,程序运行后,点击Start按钮进程执行,首 先进程 Pa 先执行, Pa 结束后进程 Pb 和进程 Pc 启动开始执行,而且能够达到系 统资源共享的效果,最后所有结束后告知程序结束。如果一开始点击Stop按钮, 那么进程没响应,等待点击Start按钮,这是并发进程的模拟过程并发进程的模拟中定义四个模块,实现界面进程运行过程。程序执行能够达 到实验的要求效果,程序运行后,点击Start按钮进程执行,

12、首先进程Pa先执 行, Pa 结束后进程 Pb 和进程 Pc 启动开始执行,而且能够达到系统资源共享的 效果,最后所有结束后告知程序结束。并发进程的模拟功能模块流程图如图 5 所示。4详细设计1.主界面的设计程序class ThreadFrame extends JFrame public int WIDTH = 820;public int HEIGHT = 500;public threadPanel threadPanel = new threadPanel();public Container container;public ThreadFrame() this.setTitle(模

13、拟进程并发的过程图);this.setSize(WIDTH, HEIGHT);this.setLocation(250, 150);this.setResizable(false);container = getContentPane();container.add(threadPanel);setVisible(true);2进程Pa的执行class threadPa extends Thread public static boolean flag = true;/ JProgressBar progressBar;private static int i = 0;/* public th

14、readPa(JProgressBar progressBar) ThreadProcess.progressBar1 =* progressBar; */Overridepublic void run() ThreadProcess.sb-;ThreadProcess.sc-;while (i = 0 & ThreadProcess.sc = 0 ) ThreadProcess.threadPb.start(); ThreadProcess.threadPc.start();/System.out.println(ThreadProcess.progressBar1.getValue(); /System.out.println(ThreadPr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号