• 大小: 17KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Java
  • 标签:

资源简介

在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。 1、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) 2、结合实验一,PCB增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针} 3、采用最先适应算法分配主存空间; 4、进程完成后,回收主存,并与相邻空闲分区合并。

资源截图

代码片段和文件信息

/**
 * @(#)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;
  
  //用以实现table的方法
  DefaultTableModel runtableModeltableModel;
  
  //i用作记录当前在runModel中的进程数
  int i = 0;
  
  //y用作记录当前runModel中优先权最高的进程
  int y = 0;
  
  //用作记录创建进程的编号
  int count = 0;

  //用作记录未分分区表内的行数
  int u = 0;

  //记录进程的内存长度
  int size = 0;
  //获取当前未分分区表的起始地址
  int address = 0;
  
  //获取当前未分分区表的长度
  int Long = 0;
  
  //用作记录在未分分区表中的起始地址的数组
  int a[] = new int[10];
  
  //用作记录在未分分区表中的长度的数组
  int b[] = new int[10];
  //记录分配点
  int Dpoint = 0;
  //记录新的未分分区表的起址
  int tablestart = 0;
  //记录新的未分分区表的长度
  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= {“起址““长度““状态“};
  String[][] data = new String[0][3];
  String[][] data1 = new String[0][3];

  //构造函数
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();

//创建一个table的Model的属性
runtableModel = new DefaultTableModel(dataNames);
tableModel = new DefaultTableModel(data1Names);


   //创建组建
   nameLab = new JLabel(“主存储器空间的分配和回收“);
   reseverLab = new JLabel(“后备队列“);
   readyLab = new JLabel(“就绪队列“);
   runLab = new JLabel(“内存中进程“);
   runtableLab = new JLabel(“CPU运行进程内存分配“);
   tableLab = new JLabel(“未分分区表“);
   runCPULab = new JLabel(“CPU运行进程“);
   finishLab = new JLabel(“完成队列“);
   pcbNameLab = new JLabel(“PCB名:“);
   runtimeLab = new JLabel(“运行时间:“);
   priorityLab = new JLabel(“优先权:“);
   memoryLab = new JLabel(“内存大小:“);
   noteLab = new JLabel(“注释:PCB名运行时间优先权内存大小起址地址“);
   setJb = new JButton(“创建“);
   inputJb = new JButton(“增加“);
   exitJb = new JButton(“退出“);

   //给runtable实例化
   runtable = new JTable(runtableMode

评论

共有 条评论

相关资源