📄 memory.java
字号:
}
class BarThread extends Thread {
JProgressBar progressBar;
public BarThread(JProgressBar bar) {
progressBar = bar;
}
public void run() {
int minimum = progressBar.getMinimum();
int maximum = progressBar.getMaximum();
Runnable runner = new Runnable() {
public void run() {
int value = progressBar.getValue();
progressBar.setValue(value + 1);
}
};
for (int i = minimum; i < maximum; i++) {
if(flag){
omgtime = i;
}
try {
SwingUtilities.invokeAndWait(runner); // Our task for each step is to just sleep
Thread.sleep(DELAY);
} catch (InterruptedException ignoredException) {
} catch (InvocationTargetException ignoredException) {
}
}
}
}
class MyWindowMonitor extends WindowAdapter {
public void windowClosing(WindowEvent e) {
setVisible(false);
// notconnect();
System.exit(0);
}
}
/*class BgetLis implements ActionListener {
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e) {
try {
String name1 = tp_name.getText();
int time1 = Integer.parseInt(tp_time.getText());
int pri1 = Integer.parseInt(tp_priority.getText());
String state1 = "ready";
int mem=Integer.parseInt(tp_memory_size.getText());
if((memvalue+mem)>maxmem){
tcpuinfo.setText(" 内存溢出!");
repaint();
}
else{
if (tp_name.getText().equalsIgnoreCase("")) {
}// NAME输入不能为空
else {
memvalue=memvalue+mem;
System.out.println(name1);
Lready.removeAll();
PCB rrpcb = new PCB(name1, time1, pri1, state1,mem);
fenpei(rrpcb);
tp_name.setText("");
tp_priority.setText("");
tp_time.setText("");
tp_memory_size.setText("");
pcbs.add(rrpcb);
tcpuinfo.setText("置入就绪队列成功!");
sort(pcbs);
repaint();
}
}
} catch (Exception e1) {
}
}
}*/
class BCpuLis implements ActionListener {
public void actionPerformed(ActionEvent e) {
//if(pcbs.size()<5){
if(Hpcbs.size()>0){
int mem=0;
while((Hpcbs.size())>0&&((memvalue+mem)<maxmem)/*&&pcbs.size()<5*/){
mem=Hpcbs.get(0).getSize();
if((memvalue+mem)>maxmem){
tcpuinfo.setText(" 内存溢出!");
}
else{
memvalue=memvalue+mem;
Hpcbs.get(0).setState("ready");
fenpei(Hpcbs.get(0));
pcbs.add(Hpcbs.get(0));
Hpcbs.remove(0);
}
}
}
//}
int j = 40000, k;
for (int i = 0; i < pcbs.size(); i++) {
k = pcbs.get(i).getPriority();
if (j > k) {
FirstPcb = pcbs.get(i);
j = k;
}
}
if(pcbs.size()>0){
timer.schedule(new MyTask(), FirstPcb.getTime()*1000);
}
//在1秒后执行此任务,每次间隔2秒,假如传递一个Data参数,就可以在某个固定的时间执行这个任务.
BCpuscheduler.setEnabled(false);
//BgetP_s.setEnabled(false);
//Bgetp_s_r.setEnabled(false);
if(pcbs.size()>0){
DELAY= 100* FirstPcb.getTime();
aJProgressBar.setValue(0);
Thread stepper = new BarThread(aJProgressBar);
stepper.start();
aJProgressBar.setValue(0);
Lwaiting.removeAll();
}
FirstPcb.setState("running");
sort(pcbs);
repaint();
}
}
class BgetP_sLis implements ActionListener{
public void actionPerformed(ActionEvent e) {
flag = false;
System.out.println("omgtime="+omgtime);
try {
int Gua=Lready.getSelectedIndex();
PCB GuaPcb=new PCB();
GuaPcb=pcbs.get(Gua);
int time = (int) (GuaPcb.getTime()*0.1*omgtime);
GuaPcb.setTime(GuaPcb.getTime()-time);
pcbs.remove(GuaPcb);
huishou(GuaPcb);
GuaPcb.setState("waiting");
Gpcbs.add(GuaPcb);
memvalue = memvalue-GuaPcb.getSize();
//aJProgressBar.setValue(0);
repaint();
tcpuinfo.setText(" 挂起成功!"); //里面执行的工程只有将就绪队列选中的进程去到 然后添加到挂起中 内存也释放
}catch (Exception e1) {
}
}
}
class Bgetp_s_rLis implements ActionListener{
public void actionPerformed(ActionEvent e) {
try {
int JGua=Lsuspend.getSelectedIndex();
PCB JGuaPcb=new PCB();
JGuaPcb=Gpcbs.get(JGua);
Gpcbs.remove(JGuaPcb);
JGuaPcb.setState("ready");
fenpei(JGuaPcb);
pcbs.add(JGuaPcb);
Lready.removeAll();
sort(pcbs);
repaint();
tcpuinfo.setText(" 解挂成功!");
memvalue = memvalue+JGuaPcb.getSize();
}catch (Exception e1) {
}
}
}
class BRestoreLis implements ActionListener{
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e) {
try {
String name1 = tp_name.getText();
int time1 = Integer.parseInt(tp_time.getText());
int pri1 = Integer.parseInt(tp_priority.getText());
String state1 = "Restore";
int mem=Integer.parseInt(tp_memory_size.getText());
if(mem>maxmem){
tcpuinfo.setText(" 内存过大,错误进程!");
return;
}
if ((tp_name.getText().equalsIgnoreCase(""))) {
}// NAME输入不能为空
else {
System.out.println(name1);
Lwaiting.removeAll();
PCB rrpcb = new PCB(name1, time1, pri1, state1,mem);
tp_name.setText("");
tp_priority.setText("");
tp_time.setText("");
tp_memory_size.setText("");
Hpcbs.add(rrpcb);
tcpuinfo.setText("置入后备队列成功!");
repaint();
}
} catch (Exception e1) {
}
}
}
class randomLis implements ActionListener{ // 随机按钮监听
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e) {
if(pcbs.size()<=0){
for(int i=1;i<6;i++){
String name = "pro"+i;
int timenum = (int) (Math.random()*10)+1;
int prinum = (int) (Math.random()*19)+1;
int memnum = (int) (Math.random()*10)+1; //为1~20的随机数
String state="ready";
PCB pcb = new PCB(name,timenum,prinum,state,memnum);
memvalue = memvalue+memnum;
fenpei(pcb);
pcbs.add(pcb);
}
sort(pcbs);
repaint();
}
}
}
/*
private class PaintThread implements Runnable {
public void run() {
while(true) {
repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}*/
public void paint(Graphics g){
Color c =g.getColor();
Color c1= new Color(0,0,0);
g.setColor(c1);
g.fillRoundRect(165,250-60,400,20,5,5);
g.fillRoundRect(165,300-80,400,20,5,5);
g.fillRoundRect(165,220-60,400,20,5,5);
g.fillRoundRect(640,220-60,100,20,5,5);
g.fillRoundRect(100, 300-80, 60, 20, 5, 5);
g.fillRoundRect(100, 250-60, 60, 20, 5, 5);
g.fillRoundRect(100, 220-60, 60, 20, 5, 5);
g.fillRoundRect(150, 300, 400, 50, 5, 5);
g.setColor(Color.green);
g.drawLine(150, 300, 150, 350);
g.drawLine(150, 300, 550, 300);
g.drawLine(550, 300, 550, 350);
g.drawLine(150, 350, 550, 350);
g.setColor(Color.red);
g.fillRoundRect(150, 300, 40, 50, 5, 5);
g.setColor(Color.green);
for(int i=0;i<notables.size();i++){
notable ta=notables.get(i);
if(!ta.isState()){
int st=ta.getStmem();
int size= ta.getSize();
g.fillRoundRect(150+st*4, 300, size*4, 50, 5, 5);
}
}
g.setColor(Color.white);
for(int i=1;i<20;i++){
g.drawLine(150+i*20, 300, 150+i*20,350);
}
g.setColor(Color.orange);
g.drawString("后备队列", 100, 315-80);
g.drawString("就绪队列", 100, 265-60);
g.drawString("CPU", 100, 235-60);
g.setColor(Color.BLUE);
g.fillRoundRect(640,220-60,memvalue,20,5,5);
g.setColor(Color.orange);
g.drawString(memvalue+"%", 680, 235-60);
for(int i=0;i<pcbs.size();i++){
PCB pro = new PCB();
pro = pcbs.get(i);
if(pro.getState().equalsIgnoreCase("ready")){
pro.draw(g, i*50+165, 250-60, 50, 20);
}
else{
pro.draw(g, 165, 220-60, 130, 20);
}
}
for(int i=0;i<Hpcbs.size();i++){
PCB pro = new PCB();
pro = Hpcbs.get(i);
pro.draw(g, i*50+165, 220, 50, 20);
}
Lready.removeAll();
for (int i = 0; i < pcbs.size(); i++) {
PCB rpcb = pcbs.get(i);
String name = rpcb.getName();
int time = rpcb.getTime();
int pri = rpcb.getPriority();
String state=rpcb.getState();
int size=rpcb.getSize();
String s = "name=" + name + ",time=" + time + ",Priority="
+ pri+"state=" + state +","+size+"MB";
System.out.println(s);
Lready.add(s);
if(state.equalsIgnoreCase("running")){
Lready.select(i);
}
}
Lsuspend.removeAll();
for (int i = 0; i < Gpcbs.size(); i++) {
PCB rpcb = Gpcbs.get(i);
String name = rpcb.getName();
int time = rpcb.getTime();
int pri = rpcb.getPriority();
String state=rpcb.getState();
String s = "name=" + name + ",time=" + time + ",Priority="
+ pri+"state=" + state;
System.out.println(s);
Lsuspend.add(s);
}
Lwaiting.removeAll();
for (int i = 0; i < Hpcbs.size(); i++) {
PCB rpcb = Hpcbs.get(i);
String name = rpcb.getName();
int time = rpcb.getTime();
int pri = rpcb.getPriority();
String state=rpcb.getState();
String s = "name=" + name + ",time=" + time + ",Priority="
+ pri+"state=" + state;
System.out.println(s);
Lwaiting.add(s);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -