• 大小: 48KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-19
  • 语言: Java
  • 标签: java  操作系统  

资源简介

一、 课程设计目的 在多道程序环境下,进程同步问题十分重要,通过解决“生产者-消费者”问题,可以帮助我们更好的理解进程同步的概念及实现方法。掌握线程创建和终止的方法,加深对线程和进程概念的理解,会用同步与互斥方法实现线程之间的进行操作。 在学习操作系统课程的基础上,通过实践加深对进程同步的认识,同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。 二、 课程设计内容 模拟仿真“生产者-消费者”问题的解决过程及方法。 三、 系统分析与设计 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

评论

共有 条评论