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

课程设计说明书

题目: 并发进程的模拟

院 系: 计算机科学与工程 专业班级: 学 号: 学生姓名: 指导教师:

2014年 11月 12 日

安徽理工大学课程设计(论文)任务书

2014年11月21日

安徽理工大学课程设计(论文)成绩评定表

目录

1问题描述 . ................................................................................................. 1 2需求分析 . ................................................................................................. 1 3概要设计 . ................................................................................................. 2 1. P 操作 ............................................................................................... 2 2. V 操作 . .............................................................................................. 3 3. P ,V 操作实现进程同步 ................................................................ 4 4. 功能模块设计 ................................................................................. 5 4详细设计 . ................................................................................................. 7 1. 主界面的设计程序 ........................................................................... 7 2. 进程Pa 的执行 ................................................................................. 8 3. 进程Pb 的执行 ................................................................................. 9 4. 进程Pc 的执行 ................................................................................. 9 5. 按钮的执行 ..................................................................................... 10 5 调试的分析与运行结果 ...................................................................... 11 6 设计体会 . .............................................................................................. 13 参考文献 . .................................................................................................. 14

1问题描述

在进程并发执行的过程中,进程之间存在协作的关系,例如,有互斥、同步的关系。该课程设计的是了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程并发控制问题的方法,进而学会运用进程的同步,利用信号灯的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所示。

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) { ThreadProcess.progressBar1 = * progressBar; } */

@Override

public 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(ThreadProcess.sb); } }

3. 进程Pb 的执行

class threadPb extends Thread { public static boolean flag = true; // JProgressBar progressBar; private static int i = 0; /*

* public threadPb(JProgressBar progressBar) { this.progressBar = * progressBar; } */

@Override

public void run() { while (i

4. 进程Pc 的执行

class threadPc extends Thread { public static boolean flag = true; // JProgressBar progressBar; private static int i = 0;

/*

* public threadPc(JProgressBar progressBar) { this.progressBar = * progressBar; } */

@Override

public void run() { while (i

} }

5. 按钮的执行

public threadPanel() { setLayout(null);

// 设置边框按钮的起始左上点的 坐标 setSize(800, 400);

ThreadProcess.progressBar1 = new JProgressBar(); ThreadProcess.progressBar2 = new JProgressBar(); ThreadProcess.progressBar3 = new JProgressBar(); // 设置start 与stop 按钮

buttonstart1 = new JButton("Start"); buttonstop1 = new JButton("Stop");

ThreadProcess.progressBar1.setBackground(new Color(255, 50, 255)); ThreadProcess.progressBar1.setForeground(new Color(10, 90, 90)); ThreadProcess.progressBar1.setBounds(100, 70, 480, 40); buttonstart1.setBounds(600, 10, 80, 40); buttonstop1.setBounds(700, 10, 80, 40); add(ThreadProcess.progressBar1); add(buttonstart1); add(buttonstop1);

buttonstart1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // ThreadProcess.pa(); ThreadProcess.threadPa.start(); /*try { ThreadProcess.threadPa.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ //System.out.println(ThreadProcess.sb+"kl"); /*boolean t1=ThreadProcess.threadPa.isAlive(); int t2=ThreadProcess.sb; int t3=ThreadProcess.sc; int t4=ThreadProcess.progressBar1.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() { @Override public void actionPerformed(ActionEvent arg0) { threadPa.flag = false; } });

ThreadProcess.progressBar2.setBackground(new Color(255, 90, 100)); ThreadProcess.progressBar2.setForeground(new Color(90, 50, 90)); ThreadProcess.progressBar2.setBounds(100, 190, 480, 40); add(ThreadProcess.progressBar2);

ThreadProcess.progressBar3.setBackground(new Color(100, 100, 255)); ThreadProcess.progressBar3.setForeground(new Color(100, 90, 90)); ThreadProcess.progressBar3.setBounds(100, 300, 480, 40); add(ThreadProcess.progressBar3); }

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] 龚沛曾等编.Java 程序设计教程. 北京:高等教育出版社,2004. [2] 谭浩强编著.Java 程序设计(第二版). 北京:清华大学出版社,1999. [3] 庞丽萍等编著. 计算机操作系统教程. 北京:清华大学出版社,2011. [4] 汤晓丹等编. 操作系统. 北京:电子工业出版社,2009. [5] 刘腾红等编著. 操作系统. 北京:中国铁道出版社,2008.

[6] 王国辉等编著. Java项目开发. 西安:西安电子科技大学出版社,2011.

课程设计说明书

题目: 并发进程的模拟

院 系: 计算机科学与工程 专业班级: 学 号: 学生姓名: 指导教师:

2014年 11月 12 日

安徽理工大学课程设计(论文)任务书

2014年11月21日

安徽理工大学课程设计(论文)成绩评定表

目录

1问题描述 . ................................................................................................. 1 2需求分析 . ................................................................................................. 1 3概要设计 . ................................................................................................. 2 1. P 操作 ............................................................................................... 2 2. V 操作 . .............................................................................................. 3 3. P ,V 操作实现进程同步 ................................................................ 4 4. 功能模块设计 ................................................................................. 5 4详细设计 . ................................................................................................. 7 1. 主界面的设计程序 ........................................................................... 7 2. 进程Pa 的执行 ................................................................................. 8 3. 进程Pb 的执行 ................................................................................. 9 4. 进程Pc 的执行 ................................................................................. 9 5. 按钮的执行 ..................................................................................... 10 5 调试的分析与运行结果 ...................................................................... 11 6 设计体会 . .............................................................................................. 13 参考文献 . .................................................................................................. 14

1问题描述

在进程并发执行的过程中,进程之间存在协作的关系,例如,有互斥、同步的关系。该课程设计的是了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程并发控制问题的方法,进而学会运用进程的同步,利用信号灯的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所示。

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) { ThreadProcess.progressBar1 = * progressBar; } */

@Override

public 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(ThreadProcess.sb); } }

3. 进程Pb 的执行

class threadPb extends Thread { public static boolean flag = true; // JProgressBar progressBar; private static int i = 0; /*

* public threadPb(JProgressBar progressBar) { this.progressBar = * progressBar; } */

@Override

public void run() { while (i

4. 进程Pc 的执行

class threadPc extends Thread { public static boolean flag = true; // JProgressBar progressBar; private static int i = 0;

/*

* public threadPc(JProgressBar progressBar) { this.progressBar = * progressBar; } */

@Override

public void run() { while (i

} }

5. 按钮的执行

public threadPanel() { setLayout(null);

// 设置边框按钮的起始左上点的 坐标 setSize(800, 400);

ThreadProcess.progressBar1 = new JProgressBar(); ThreadProcess.progressBar2 = new JProgressBar(); ThreadProcess.progressBar3 = new JProgressBar(); // 设置start 与stop 按钮

buttonstart1 = new JButton("Start"); buttonstop1 = new JButton("Stop");

ThreadProcess.progressBar1.setBackground(new Color(255, 50, 255)); ThreadProcess.progressBar1.setForeground(new Color(10, 90, 90)); ThreadProcess.progressBar1.setBounds(100, 70, 480, 40); buttonstart1.setBounds(600, 10, 80, 40); buttonstop1.setBounds(700, 10, 80, 40); add(ThreadProcess.progressBar1); add(buttonstart1); add(buttonstop1);

buttonstart1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // ThreadProcess.pa(); ThreadProcess.threadPa.start(); /*try { ThreadProcess.threadPa.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ //System.out.println(ThreadProcess.sb+"kl"); /*boolean t1=ThreadProcess.threadPa.isAlive(); int t2=ThreadProcess.sb; int t3=ThreadProcess.sc; int t4=ThreadProcess.progressBar1.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() { @Override public void actionPerformed(ActionEvent arg0) { threadPa.flag = false; } });

ThreadProcess.progressBar2.setBackground(new Color(255, 90, 100)); ThreadProcess.progressBar2.setForeground(new Color(90, 50, 90)); ThreadProcess.progressBar2.setBounds(100, 190, 480, 40); add(ThreadProcess.progressBar2);

ThreadProcess.progressBar3.setBackground(new Color(100, 100, 255)); ThreadProcess.progressBar3.setForeground(new Color(100, 90, 90)); ThreadProcess.progressBar3.setBounds(100, 300, 480, 40); add(ThreadProcess.progressBar3); }

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] 龚沛曾等编.Java 程序设计教程. 北京:高等教育出版社,2004. [2] 谭浩强编著.Java 程序设计(第二版). 北京:清华大学出版社,1999. [3] 庞丽萍等编著. 计算机操作系统教程. 北京:清华大学出版社,2011. [4] 汤晓丹等编. 操作系统. 北京:电子工业出版社,2009. [5] 刘腾红等编著. 操作系统. 北京:中国铁道出版社,2008.

[6] 王国辉等编著. Java项目开发. 西安:西安电子科技大学出版社,2011.


相关内容

  • [因纳特市场营销综合实训室]整体方案-lz
  • 目 录 一.方案结构 ...................................................................................... 2 二.实训室效果图 ......................................... ...

  • 操作系统模拟题
  • 计算机操作系统模拟试题一 一.选择题(选择最确切的一个答案,将其代码填入括号中,每空2分,共20分) 1.把逻辑地址转变为内存的物理地址的过程称做( ). A. 编译 B.连接 C. 运行 D. 重定位 2.进程和程序的一个本质区别是( ). A. 前者分时使用CPU ,后者独占CPU B .前者存 ...

  • 性能测试_实用面试题
  • 软件性能测试模拟笔试题目(一) 注:本试卷中题目所涉及性能测试工具如无特殊说明则均为LoadRunner. 一. 1. 简答题(2*10=20分) 客户交付一个性能测试项目,请阐述你的实施流程. 答案: 测试设计阶段: 1)了解被测系统的性能需求,定义测试目标和范围: 2)了解系统的技术信息,如系统 ...

  • [嵌入式系统设计]实验指导书-
  • 电子科技大学 微机课程组 嵌入式系统设计 实验指导书 2015年9月 目录 第一部分嵌入式系统仿真实验系统简介 1 第一节.开发平台软件资源及文档 1 第二节.开发平台软件安装 第二部分 实验项目说明 第一节.实验项目列表 第二节.实验项目使用建议 第三部分 嵌入式开发系统实验案例指导 实验一.多任 ...

  • 操作系统进程调度
  • 1. 实验目的: 进程是操作系统最重要的概念之一,进程调度又是操作系统核心的重要内容.通过该实验,要求同学们了解各进程在执行过程中的状态和参数的变化情况,以便于观察诸进程的调度过程 2. 内容与要求: 按剥夺式优先数法对三个进程P1,p2,p3进行模拟调度,各进程的优先数静态设置,其中P1的优先数最 ...

  • 计算机科学概论重点
  • <计算机科学概论 >知识梳理 1.1 学生应具备的素质和能力 •5个方面的能力 –自学能力 –自控能力 –创新能力 –表达能力 –组织能力 1.1 学生应具备的素质和能力 •计算机专业人才的"专业基本能力"归纳为四个方面: 一是计算思维能力:二是算法设计与分析能力:三 ...

  • 高速公路岗位技能和业务培训方案及平台
  • E学云海 高速公路岗位技能培训平台 解决方案 1 目录 第一部分:高速公路岗位技能培训平台 1.1 平台定位 1.2 平台价值 1.3 平台所具特点 第二部分:高速公路岗位技能培训平台需求分析 一.高速公路岗位技能培训平台功能清单(学员管理端)二.高速公路岗位技能培训平台功能清单(后台管理端)第三部 ...

  • 网络编程课程设计报告
  • 网络程序设计 课程设计报告 123301班 20124738王恩阳 20124696孟德龙 2014年12月23日 目录 第1章 课设内容与要求 ............................................................................. ...

  • 事业单位考试计算机专业试题
  • 事业单位招考计算机专业考试试卷 计算机专业考试试卷 一. 单项选择题:(共35分,1-35题每题1分) 1. 以帧为传送数据单位的是:( D ) A. 会话层B. 数据链路层C. 网络层D. 传输层 2. ATM传输数据的单位是信元,每个信元( D )是个字节. A. 5 B. 48 C. 53 D ...