




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书题目: 并发进程的模拟 院 系: 计算机科学与工程 专业班级: 学 号: 学生姓名: 指导教师: 2014年 11月 12 日 安徽理工大学课程设计(论文)任务书 计算机科学与工程 院系 计算机 教研室学 号学生姓名专业(班级)设计题目并 发 进 程 的 模 拟设计技术参数(1) 系统作业或进程的数目;(2) 通过P,V操作量实现进程同步的目的;(3) 同步信号灯Sb和Sc的值;(4) 进程的先后顺序。设计要求(1) 编程用信号灯的p、v操作实现这三个进程的同步。(2) 任务启动后 pa先执行,当它结束后,pb、pc可以开始执行, pb、pc 都执行完毕后,任务终止。(3) 设两个同步信号灯sb、sc分别表示进程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 庞丽萍等编著.计算机操作系统教程.北京:清华大学出版社,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 调试的分析与运行结果116 设计体会13参考文献141问题描述在进程并发执行的过程中,进程之间存在协作的关系,例如,有互斥、同步的关系。该课程设计的是了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程并发控制问题的方法,进而学会运用进程的同步,利用信号灯的P,V操作实现三个进程的同步。这三个进程的同步关系如下:从上图中可以看出:任务启动后 pa先执行,当它结束后,pb、pc可以开始执行, pb、pc 都执行完毕后,任务终止;设两个同步信号灯sb、sc分别表示进程pb和pc能否开始执行,其初值均为0。在现代操作系统中,有大量的并发进程在活动,它们都处在不断的申请资源,使用资源以及其它进程的相互制约的活动中,这些进程什么时候停止运行,什么时候该继续向前推进,应根据事先的约定来规范它们的行为,这时我们可以根据同步信号灯来实现进程的同步协调工作。例如本题中,只有pa进程顺利的进行完,Pb,Pc这两个进程才能正常的进行。如果进程Pa在进行中出现停止或中断,则Pb和Pc是不会顺利的完成的;而进程Pb,Pc这两个进程是并行执行的,两个进程的进行是互不干扰的,只要进程Pa完成后,进程Pb和Pc才会正常执行,否则只有处在等待就绪中。2需求分析进程执行的并发性的意义是关于一组进程的执行在是时间上是重叠的,从宏观上看,并发性反应的是一个时间段中几个进程都在同一个处理器上,处于运行还未运行结束状态。从微观上看,任何一个时刻仅有一个进程在处理器上运行。并发的实质是一个处理器在几个进程之间的多路复用,并发是对有限的物理资源强制行驶多用户共享,消除计算机部件之间的乎等现象,以提高系统资源利用率。并发进程分为无关的和交往的,无关的并发进程是一组并发进程分别在不同的变量集合上操作,一个进程的执行与其他并发进程的进展无关。引入进程是为了更好的解决实际中存在的竞态问题,进程同步的主要任务是对多个相关的进程在执行次序上进行协调,以便并发执行的诸进程之间能有效的共享资源和相互合作,从而使执行更具有可再现性。利用进程同步可以更好地解决生活中有先后执行顺序的问题,进程的交往包括金正与写作,多个进程之间彼此相关或者是无关,二资源金正的两个控制问题一个是死锁(Deadlock)问题,一个是饥饿(Starvation)问题,系统中既要解决饥饿问题,又要解决死锁问题。解决进程间的竞争关系(简介制约关系)的手段是进程互斥,进程互斥指的的就是资源的共享问题,以往内在同一时刻最多允许一个进程使用,其他进程必须等待,我们这个任务所需要的就是先执行其中的一个任务,在结束之后进行另外的进程。所以我们解决这个问题的同时学习并发进程。3概要设计1. P操作对信号灯的P操作记为P(s)。P(s)是一个不可分割的原语操作,即取信号灯值减一,若相减结果为负,则调用P(s)的进程被阻,并插入到信号灯的等待队列中,否则可以继续执行。P操作的主要动作:a) s值减一;b) 若相减结果大于或等于0,则进程继续执行;c) 若相减结果小于0,则进程被封锁,并将它插入到该信号灯的等待队列 中,然后转进进程调度程序。P操作的流程图:2. V操作对信号灯的V操作记为V(s)。V(s)一个不可分割的原语操作,即取信号灯值加1,若相加结果大于0,进程继续执行,否则,唤醒在信号灯等待队列上的一个进程。V操作的主要动作a) s值加一;b) 若相减结果大于0,则进程继续执行;c) 若相减结果小于或等于0,则从该信号灯的等待队列中移出一个进程,解除它的等待状态,然后返回本进程继续执行。V操作的流程图:3. P,V操作实现进程同步(1)编程用信号灯的p、v操作实现这三个进程的同步。(2)任务启动后 pa先执行,当它结束后,pb、pc可以开始执行, pb、pc 都执行完毕后,任务终止。(3)设两个同步信号灯sb、sc分别表示进程pb和pc能否开始执行,其初值均为0。其题目的算法描述如下:4. 功能模块设计本实验用JAVA语言实现(1) 在Frame工程中新建一个ThreadProcess类,定义一些静态变量;主函 数main()中定义一个ThreadFrame类,并构造一个对象thFrame,通过调用函数将界面,窗口展示出来;创建三个线程threadPa, threadPb, threadPc。(2) ThreadFrame类继承JFrame类,设置每个界面的长宽,调用类方法ThreadFrame()显示一些信息。(3) threadPanel类继承JPanel类,调用paintComponent()方法设置进程长宽以及字体等,还有threadPanel()类方法设置进程前景与背景颜色,从而展示出进程动态变化,重要一点是开始Start和暂停Stop按钮设置,控制进程开始与暂停效果。(4) 在类外分别添加三个进程类threadPa, threadPb, threadPc,都继承线程Thread类,其中各自有的控制函数run()。程序执行能够达到实验的要求效果,程序运行后,点击Start按钮进程执行,首先进程Pa先执行,Pa结束后进程Pb和进程Pc启动开始执行,而且能够达到系统资源共享的效果,最后所有结束后告知程序结束。如果一开始点击Stop按钮,那么进程没响应,等待点击Start按钮,这是并发进程的模拟过程并发进程的模拟中定义四个模块,实现界面进程运行过程。程序执行能够达到实验的要求效果,程序运行后,点击Start按钮进程执行,首先进程Pa先执行,Pa结束后进程Pb和进程Pc启动开始执行,而且能够达到系统资源共享的效果,最后所有结束后告知程序结束。并发进程的模拟功能模块流程图如图5所示。 进程Pc类threadPc继承Thread类Frame工程ThreadProcess类主函数main()调用ThreadFrame类中方法setDefaultCloseOperation(),show();并创建三个进程ThreadFrame类继承JFrame类threadPanel类继承JPanel类进程设置函数paintComponent()进程Pa类threadPa继承Thread类进程Pb类threadPb继承Thread类Run()Run( )Run( )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(模拟进程并发的过程图);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 threadPa(JProgressBar progressBar) ThreadPgressBar1 = * progressBar; */Overridepublic void run() ThreadProcess.sb-;ThreadProcess.sc-;while (i = 0 & ThreadProcess.sc = 0 ) ThreadProcess.threadPb.start();ThreadProcess.threadPc.start();/System.out.println(ThreadPgressBar1.getValue();/System.out.println(ThreadProcess.sb);3.进程Pb的执行class threadPb extends Thread public static boolean flag = true;/ JProgressBar progressBar;private static int i = 0;/* * public threadPb(JProgressBar progressBar) gressBar = * progressBar; */Overridepublic void run() while (i = 100) i += 1;ThreadPgressBar2.setValue(i);try Thread.currentThread().sleep(30); catch (InterruptedException e) e.printStackTrace();4.进程Pc的执行class threadPc extends Thread public static boolean flag = true;/ JProgressBar progressBar;private static int i = 0;/* * public threadPc(JProgressBar progressBar) gressBar = * progressBar; */Overridepublic void run() while (i = 100) i += 1;ThreadPgressBar3.setValue(i);try Thread.currentThread().sleep(30); catch (InterruptedException e) e.printStackTrace();5.按钮的执行public threadPanel() setLayout(null);/ 设置边框按钮的起始左上点的 坐标setSize(800, 400);ThreadPgressBar1 = new JProgressBar();ThreadPgressBar2 = new JProgressBar();ThreadPgressBar3 = new JProgressBar();/ 设置start与stop按钮buttonstart1 = new JButton(Start);buttonstop1 = new JButton(Stop);ThreadPgressBar1.setBackground(new Color(255, 50, 255);ThreadPgressBar1.setForeground(new Color(10, 90, 90);ThreadPgressBar1.setBounds(100, 70, 480, 40);buttonstart1.setBounds(600, 10, 80, 40);buttonstop1.setBounds(700, 10, 80, 40);add(ThreadPgressBar1);add(buttonstart1);add(buttonstop1);buttonstart1.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / ThreadProcess.pa();ThreadProcess.threadPa.start();/*try ThreadProcess.threadPa.join(); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();*/System.out.println(ThreadProcess.sb+kl);/*boolean t1=ThreadProcess.threadPa.isAlive();int t2=ThreadProcess.sb;int t3=ThreadProcess.sc;int t4=ThreadPgressBar1.getValue();*/*System.out.println(t1);System.out.println(t2);System.out.println(t3);*/System.out.println(ThreadProcess.temp);/if(!ThreadProcess.threadPa.isAlive() ;/ threadPa.flag = true;);buttonstop1.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) threadPa.flag = false;);ThreadPgressBar2.setBackground(new Color(255, 90, 100);ThreadPgressBar2.setForeground(new Color(90, 50, 90);ThreadPgressBar2.setBounds(100, 190, 480, 40);add(ThreadPgressBar2);ThreadPgressBar3.setBackground(new Color(100, 100, 255);ThreadPgressBar3.setForeground(new Color(100, 90, 90);ThreadPgressBar3.setBounds(100, 300, 480, 40);add(ThreadPgressBar3);5 调试的分析与运行结果1.初次运行程序界面运行并发进程模拟程序出现初次界面,如图6所示。图6 并发进程模拟初次界面2.进程Pa运行点击Start按钮,程序执行进程Pa,而进程Pb和Pc等待,如图7所示。图6 Pa执行过程3.进程Pb和Pc运行当进程Pa执行完毕,进程Pb和Pc开始执行,如图8所示。图8 Pa完毕后Pb和Pc执行界面4.并发进程的模拟程序结束Pb和Pc执行完毕,并发进程模拟程序结束,如图9所示。图9 并发进程模拟结束6 设计体会通过本次试验,更加深入的了解了平时上课所学的知识,在平时学习中没有认真学习,在实际中就反应了出来,所以我这次试验,可以说是非常的困难,从最
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《T实施与管理》课件
- 小学舞蹈团队活动方案
- 《黄山的云海课件语文A版》
- 《化学误差理论》课件
- 烟草包装设备的快速更换技术考核试卷
- 聚己内酰胺纤维应用考核试卷
- 《血小板减少性疾病的诊断与治疗》课件
- 粮食仓储农业废弃物利用考核试卷
- 塑料零件在汽车行业的应用考核试卷
- 纺织原料企业的生产计划与调度考核试卷
- 备战2025年高考英语抢分秘籍(新高考专用)猜押语法填空(话题+体裁)(学生版+解析)
- 船舶与海洋工程2025年相关知识考试试卷及答案
- 吉林银行笔试题库及答案
- 《危险化学品企业安全生产标准化规范》专业深度解读与应用培训指导材料之8:5管理要求-5.8作业安全(雷泽佳编制-2025A0)
- 江苏省南京市、盐城市2025届高三年级5月第二次模拟考试英语(南京盐城二模)
- Unit6Integration(A-C)课件译林版(2024)英语七年级下册
- (二模)2024~2025学年度苏锡常镇四市高三教学情况调研(二)物理试卷(含答案)
- 甘肃开放大学2024年《信息技术与信息管理》形考作业1-4答案
- 2024年大学生电子版三方协议书模板
- ISO9001-ISO14001-ISO45001三体系内部审核检查表
- 模糊控制――文献综述(共13页)
评论
0/150
提交评论