-
大小: 17KB文件類型: .java金幣: 1下載: 0 次發(fā)布日期: 2021-05-16
- 語言: Java
- 標(biāo)簽:
資源簡介
在可變分區(qū)管理方式下,采用最先適應(yīng)算法實現(xiàn)主存空間的分配和回收。
1、自行假設(shè)主存空間大小,預(yù)設(shè)操作系統(tǒng)所占大小并構(gòu)造未分分區(qū)表;
表目內(nèi)容:起址、長度、狀態(tài)(未分/空表目)
2、結(jié)合實驗一,PCB增加為:
{PID,要求運行時間,優(yōu)先權(quán),狀態(tài),所需主存大小,主存起始位置,PCB指針}
3、采用最先適應(yīng)算法分配主存空間;
4、進程完成后,回收主存,并與相鄰空閑分區(qū)合并。
代碼片段和文件信息
/**
?*?@(#)Main.java
?*
?*
?*?@author?楊啟帆
?*?@version?1.00?2010/11/16
?*/
package?os;
import?java.util.Vector;
import?javax.swing.event.*;
import?java.awt.*;
import?javax.swing.*;
import?java.awt.event.*;
import?java.util.*;
import?java.io.*;
import?java.net.*;
import?javax.swing.table.*;
public?class?Mainframe1?{
??Jframe?jf;
??JPanel?jp;
??
??//注冊組件
??JLabel?nameLabreseverLabreadyLabrunLabruntableLabtableLabrunCPULabfinishLabpcbNameLabruntimeLabpriorityLabmemoryLabnoteLab;
??JButton?setJbinputJbexitJb;
??JList??reseverJLreadyJLrunJLrunCPUJLfinishJL;
??JScrollPane?reseverJSPreadyJSPrunJSPrunCPUJSPfinishJSP;
??DefaultListModel?reseverModelreadyModelrunModelrunCPUModelfinishModelmemoryModel;
??JTextField?pcbTf;
??JComboBox?runtimeJCBpriorityJCBmemoryJCB;
??JTable?runtabletable;
??
??//用以實現(xiàn)table的方法
??DefaultTableModel?runtableModeltableModel;
??
??//i用作記錄當(dāng)前在runModel中的進程數(shù)
??int?i?=?0;
??
??//y用作記錄當(dāng)前runModel中優(yōu)先權(quán)最高的進程
??int?y?=?0;
??
??//用作記錄創(chuàng)建進程的編號
??int?count?=?0;
??//用作記錄未分分區(qū)表內(nèi)的行數(shù)
??int?u?=?0;
??//記錄進程的內(nèi)存長度
??int?size?=?0;
??//獲取當(dāng)前未分分區(qū)表的起始地址
??int?address?=?0;
??
??//獲取當(dāng)前未分分區(qū)表的長度
??int?Long?=?0;
??
??//用作記錄在未分分區(qū)表中的起始地址的數(shù)組
??int?a[]?=?new?int[10];
??
??//用作記錄在未分分區(qū)表中的長度的數(shù)組
??int?b[]?=?new?int[10];
??//記錄分配點
??int?Dpoint?=?0;
??//記錄新的未分分區(qū)表的起址
??int?tablestart?=?0;
??//記錄新的未分分區(qū)表的長度
??int?tablesize?=?0;
??//記錄cpu運行隊列中的進程起址
??int?start?=?0;
??
??PCB?pcb?=?new?PCB();
??String?c?=?String.valueOf(count);
??//啟動線程
??Thread?listen?=?new?Listen();
??????Thread?listen1?=?new?Listen1();
??????String[]?Names=?{“起址““長度““狀態(tài)“};
??String[][]?data?=?new?String[0][3];
??String[][]?data1?=?new?String[0][3];
??//構(gòu)造函數(shù)
public?Mainframe1()
{???
jf?=?new?Jframe(“主存儲器空間的分配和回收“);
???? jp?=?new?JPanel();
?? Container?c?=?jf.getContentPane();
?? pcbTf?=?new?JTextField(20);
reseverModel=new?DefaultListModel();
????????readyModel?=new?DefaultListModel();
runModel=new?DefaultListModel();
runCPUModel?=?new?DefaultListModel();
finishModel=new?DefaultListModel();
//創(chuàng)建一個table的Model的屬性
runtableModel?=?new?DefaultTableModel(dataNames);
tableModel?=?new?DefaultTableModel(data1Names);
?? //創(chuàng)建組建
?? nameLab?=?new?JLabel(“主存儲器空間的分配和回收“);
?? reseverLab?=?new?JLabel(“后備隊列“);
?? readyLab?=?new?JLabel(“就緒隊列“);
?? runLab?=?new?JLabel(“內(nèi)存中進程“);
?? runtableLab?=?new?JLabel(“CPU運行進程內(nèi)存分配“);
?? tableLab?=?new?JLabel(“未分分區(qū)表“);
?? runCPULab?=?new?JLabel(“CPU運行進程“);
?? finishLab?=?new?JLabel(“完成隊列“);
?? pcbNameLab?=?new?JLabel(“PCB名:“);
?? runtimeLab?=?new?JLabel(“運行時間:“);
?? priorityLab?=?new?JLabel(“優(yōu)先權(quán):“);
?? memoryLab?=?new?JLabel(“內(nèi)存大小:“);
?? noteLab?=?new?JLabel(“注釋:PCB名運行時間優(yōu)先權(quán)內(nèi)存大小起址地址“);
?? setJb?=?new?JButton(“創(chuàng)建“);
?? inputJb?=?new?JButton(“增加“);
?? exitJb?=?new?JButton(“退出“);
?? //給runtable實例化
?? runtable?=?new?JTable(runtableMode
- 上一篇:java基于udp的聊天服務(wù)端
- 下一篇:JSP API chm
評論
共有 條評論