资源简介
一、 课程设计目的
在多道程序环境下,进程同步问题十分重要,通过解决“生产者-消费者”问题,可以帮助我们更好的理解进程同步的概念及实现方法。掌握线程创建和终止的方法,加深对线程和进程概念的理解,会用同步与互斥方法实现线程之间的进行操作。
在学习操作系统课程的基础上,通过实践加深对进程同步的认识,同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。
二、 课程设计内容
模拟仿真“生产者-消费者”问题的解决过程及方法。
三、 系统分析与设计
1、 系统分析
在OS中引入进程后,虽然提高了资源的利用率和系统的吞吐量,但由于进程的异步性,也会给系统造成混乱,尤其是在他们争用临界资源时。为了对多个相关进程在执行次序上进行协调,以使并发执行的诸程序之间能有效地共享资源和相互合作,使程序的执行具有可再现性,所以引入了进程同步的概念。信号量机制是一种卓有成效的进程同步工具。
在生产者---消费者问题中应注意(信号量名称以多个生产者和多个消费者中的为例):首先,在每个程序中用于互斥的wait(mutex)和signal(mutex)必须成对出现;其次,对资源信号量empty和full的wait和signal操作,同样需要成对地出现,但它们分别处于不同的程序中。生产者与消费者进程共享一个大小固定的缓冲区。其中,一个或多个生产者生产数据,并将生产的数据存入缓冲区,并有一个或多个消费者从缓冲区中取数据。
2、 系统设计:
系统的设计必须要体现进程之间的同步关系,所以本系统采用2个生产者、2个消费者
和20个缓冲区的框架体系设计。为了更能体现该系统进程之间的同步关系,系统的生产者、
消费者的速度应该可控,以更好更明显的表现出结果。
为了使本系统以更加简单、直观的形式把“消费者-生产者”问题表现出来,我选择了使
用可视化界面编程。
代码片段和文件信息
package new_last;
import java.awt.*;
import javax.swing.*;
//import ceshi2.ProducerAndConsumer;
import java.awt.event.*;
public class Login extends Jframe implements ActionListener {
JLabel lbl1 = new JLabel(“用户名“);
JLabel lbl2 = new JLabel(“密 码“);
JTextField txt = new JTextField(15);
JPasswordField pf = new JPasswordField(6);
JButton btn1 = new JButton(“确定“);
JButton btn2 = new JButton(“取消“);
int num = 0;
public Login(String str) {
this.settitle(str);
final JPanel jp = (JPanel) this.getContentPane();
jp.setLayout(new GridLayout(3 2 10 10));
jp.add(lbl1);
jp.add(txt);
jp.add(lbl2);
jp.add(pf);
jp.add(btn1);
jp.add(btn2);
btn1.addActionListener(this);
btn2.addActionListener(this);
addWindowListener(new WindowAdapter() {// 如果按 X 关闭窗口
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void actionPerformed(final ActionEvent ae) {
if (ae.getSource() == btn1) {
// System.out.println(“输入错误:“ + txt.getText());
if ((txt.getText().equals(“user“) == true)
&& (pf.getText().equals(“user“))) {
// System.exit(0);
this.setVisible(false);// 隐藏登陆窗口
JOptionPane.showMessageDialog(null “登陆成功!“);
Work_interface frm = new Work_interface(“07计算3_生产者消费演示“);
frm.setSize(300 400);
frm.setLocation(400 120);
frm.setResizable(false);
frm.setVisible(true);
} else {
JOptionPane.showMessageDialog(null “用户名或密码错误!“);
num = num + 1;
}
if (num == 3) {
JOptionPane.showMessageDialog(null “超过3次密码错误窗口将关闭!“);
System.exit(0);
}
}
if (ae.getSource() == btn2) {
// txt.setText(““);
// pf.setText(““);
System.exit(0);
}
}
public static void main(final String arg[]) {
Jframe.setDefaultLookAndFeelDecorated(false);
final Login frm = new Login(“生产者消费者演示系统“);
frm.setSize(400 200);
frm.setLocation(400 230);
frm.setResizable(false);
frm.setVisible(true);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-03-18 15:06 生产者与消费者\
目录 0 2012-03-18 15:07 生产者与消费者\报告\
文件 119808 2012-03-18 15:06 生产者与消费者\报告\操作系统课程设计报告电子档.doc
目录 0 2012-03-18 15:06 生产者与消费者\源程序\
文件 2094 2010-07-11 21:06 生产者与消费者\源程序\Login.java
文件 7047 2010-07-11 21:03 生产者与消费者\源程序\Work_interface.java
- 上一篇:Java编写的姐希尔伯特矩阵
- 下一篇:《JAVA程序设计》考试成绩分析模板
相关资源
- 《JAVA程序设计》考试成绩分析模板
- Java编写的姐希尔伯特矩阵
- 学生学籍管理系统java 数据库
- 2019最新JAVA开发面试题、技巧、经验合
- Java程序员面试笔试宝典何昊、薛鹏、
- Java网络编程第四版-清晰版-带完整目
- java runtime environment 1.8.0_45 64bit
- 基于javaweb+mvc结构+源码+数据库语句
- javafx_scenebuilder-2_0-macosx-universal.dmg
- Java经典编程300例经典收藏
- 史上最全的各大公司的java面试题总结
- 基于JavaWeb的网上购物系统的设计与实
- Java网络编程第四版
- 采用java 来访问PI ,所使用的的驱动包
- 深入理解 Java 虚拟机: JVM 高级特性与
- 《Java设计模式》源代码
- 基于java的电子邮件系统--工具软件
- Java Web整合开发实战 随盘源代码10-2
- Java web项目开发案例精粹完整版PDF
- java网络编程英文高清完整第四版.pd
- Java EE项目开发教程第2版随书源码
- effective java 中英文2本
- eclipse-java-mars-2-win32-x86_64
- Java Web整合开发实战 随盘源代码1-9章
- jdk-12_linux-x64_bin.tar.gz
- 狐狸和兔子代码-Java
- jdk1.8.0_144
- Java核心技术卷 高清完整版 最新第十
- 高清完整版 Java多线程编程实战指南
- Java程序设计经典300例随书源代码全
评论
共有 条评论