资源简介
一、 课程设计目的
在多道程序环境下,进程同步问题十分重要,通过解决“生产者-消费者”问题,可以帮助我们更好的理解进程同步的概念及实现方法。掌握线程创建和终止的方法,加深对线程和进程概念的理解,会用同步与互斥方法实现线程之间的进行操作。
在学习操作系统课程的基础上,通过实践加深对进程同步的认识,同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。
二、 课程设计内容
模拟仿真“生产者-消费者”问题的解决过程及方法。
三、 系统分析与设计
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源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论