操作系统分区实验源代码(整理_第1页
操作系统分区实验源代码(整理_第2页
操作系统分区实验源代码(整理_第3页
操作系统分区实验源代码(整理_第4页
操作系统分区实验源代码(整理_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.import java.awt.Color;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedOutputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;import java.util.LinkedList;import javax.swing.JButton;imp

2、ort javax.swing.JPanel;import javax.swing.JTextArea;/* * Created on 2004-5-19 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */* * author 李秋军() * * To change the template for this generated type comment go to * Window&

3、gt;Preferences>Java>Code Generation>Code and Comments */public class BestMemAlloc extends JPanel implements RunnableLinkedList memList = new LinkedList(); /用于存放整个内存信息的链表LinkedList spaceMemList = new LinkedList(); /用于存放空闲内存信息的链表MemAreaInfo memAreaInfo;JTextArea text = new JTextArea(20, 12);J

4、Button bt = new JButton(最佳适应算法演示);private boolean controlFlag = false;private boolean stopFile = false;PrintStream ps;public BestMemAlloc()init();bt.addActionListener(new ActionListener()public void actionPerformed(ActionEvent arg0)if (!controlFlag)text.setText();memList.clear();spaceMemList.clear()

5、;stopFile = true;init();controlFlag = true;repaint(););this.add(text); /将文本区加入面板this.add(bt); /将按钮加入面板/初始化链表和文件void init()memAreaInfo = new MemAreaInfo(0, 640, false, -1);memList.add(memAreaInfo);spaceMemList.add(memAreaInfo);if (stopFile)tryps =new PrintStream(new BufferedOutputStream(new FileOutpu

6、tStream(bestMem.txt); catch (IOException e)System.out.println(e);ps.println( 最佳适应算法rn);print(内存初始状态);/分配内存public boolean alloc(int memSize, int id)MemAreaInfo mem;for (int i = 0; i = memSize)if (mem.getLength() = memSize)mem.setAlloc(true);mem.setId(id);spaceMemList.remove(i); elseMemAreaInfo newMem

7、 =new MemAreaInfo(mem.getStartAddr(), memSize, true, id);mem.setStartAddr(mem.getStartAddr() + memSize);mem.setLength(mem.getLength() - memSize);spaceMemList.remove(i);insertMemList(newMem);insertSpaceMemList(mem);break;if (stopFile)print(作业 + id + 分配 + memSize + M内存后);repaint();return true;/向内存链表里插

8、入一条内存信息void insertMemList(MemAreaInfo mem)MemAreaInfo mai;boolean flg = true;for (int i = 0; i memList.size(); i+)mai = (MemAreaInfo) (memList.get(i);if (mem.getStartAddr() = mai.getStartAddr()memList.add(i, mem);flg = false;break;if (flg)memList.addLast(mem);/向空闲内存链表里插入一条内存信息void insertSpaceMemList

9、(MemAreaInfo mem)MemAreaInfo mai;boolean flag = true;for (int i = 0; i spaceMemList.size(); i+)mai = (MemAreaInfo) (spaceMemList.get(i);if (mem.getLength() = mai.getLength()spaceMemList.add(i, mem);flag = false;break;if (flag)spaceMemList.add(mem);/向空闲内存链表里删除一条内存信息void deleteFromSpaceMemList(MemArea

10、Info mem)MemAreaInfo mai;for (int i = 0; i spaceMemList.size(); i+)mai = (MemAreaInfo) (spaceMemList.get(i);if (mem.getStartAddr() = mai.getStartAddr()& mem.getLength() = mai.getLength()spaceMemList.remove(i);break;/释入内存public boolean dealloc(int id)int a = 0, b = 0;MemAreaInfo mem = null, preMem =

11、null, nextMem = null;for (int i = 0; i 0& !(preMem = (MemAreaInfo) memList.get(i - 1).isAlloc()deleteFromSpaceMemList(preMem);mem.setStartAddr(preMem.getStartAddr();mem.setLength(mem.getLength() + preMem.getLength();a = i - 1;if (i 0)memList.remove(b);if (a 0)memList.remove(a);a = 0;if (a 0)memList.

12、remove(a);insertSpaceMemList(mem);if (stopFile)print(作业 + id + 释放内存后);repaint();return true;/绘图函数public void paintComponent(Graphics g)g.setColor(Color.pink);g.fillRect(0, 0, 1024, 768);g.setColor(Color.magenta);g.drawString(作业情况:, 230, 90);text.setBackground(new Color(192, 123, 152);text.setLocatio

13、n(220, 100);bt.setLocation(120, 20);for (int i = 0; i memList.size(); i+)memAreaInfo = (MemAreaInfo) memList.get(i);if (memAreaInfo.isAlloc()g.setColor(Color.blue);g.fillRect(50,(memAreaInfo.getStartAddr() + 100) * 2 / 3,120,memAreaInfo.getLength() * 2 / 3); elseg.setColor(Color.white);g.fillRect(50

14、,(memAreaInfo.getStartAddr() + 100) * 2 / 3,120,memAreaInfo.getLength() * 2 / 3);g.setColor(Color.magenta);g.drawString(String.valueOf(memAreaInfo.getStartAddr() + M,180,(memAreaInfo.getStartAddr() + 110) * 2 / 3);g.drawString(640M, 180, (640 + 110) * 2 / 3);g.setColor(Color.blue);g.fillRect(50, 510

15、, 60, 20);g.drawString(已分配内存, 120, 523);g.setColor(Color.white);g.fillRect(50, 540, 60, 20);g.drawString(空闲内存, 120, 553);/线程的run()函数public void run()while (true)tryThread.sleep(100); catch (InterruptedException e)System.out.println(e);if (controlFlag)repaint();tryalloc(130, 1);text.append(作业1申请130Kn

16、);Thread.sleep(1000);alloc(60, 2);text.append(作业2申请60Kn);Thread.sleep(1000);alloc(100, 3);text.append(作业3申请100kn);Thread.sleep(1000);dealloc(2);text.append(作业2释放60Kn);Thread.sleep(1000);alloc(200, 4);text.append(作业4申请200Kn);Thread.sleep(1000);dealloc(3);text.append(作业3释放100Kn);Thread.sleep(1000);dea

17、lloc(1);text.append(作业1释放130Kn);Thread.sleep(1000);alloc(140, 5);text.append(作业5申请140Kn);Thread.sleep(1000);alloc(60, 6);text.append(作业6申请60Kn);Thread.sleep(1000);alloc(50, 7);text.append(作业7申请50Kn);Thread.sleep(1000);dealloc(6);text.append(作业6释放60Kn);if (stopFile)ps.close();stopFile = false;text.ap

18、pend(n详细内存分区信息在n文件(bestMem.txt)中); catch (InterruptedException e)System.out.println(e.toString();controlFlag = false;void print(String s)ps.print(rn- + s + -rn);ps.println( 起始地址 长度tt目前状态rn);for (int i = 0; i memList.size(); i+)MemAreaInfo m = (MemAreaInfo) memList.get(i);ps.println(m);ps.println(rn)

19、;2. import java.awt.Color;import java.awt.Graphics;import javax.swing.JApplet;public class DrawApplet extends JAppletpublic static void main(String args)public void init()this.setSize(600, 400);start();public void paint(Graphics g)tryThread.sleep(100); catch (InterruptedException e)/ TODO Auto-gener

20、ated catch blocke.printStackTrace();g.setColor(Color.blue);g.fillRect(100, 100, 100, 200);g.drawRect(100, 300, 100, 100);g.drawLine(100,150, 200, 150);g.drawString(200, 205, 150);import java.awt.Color;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;imp

21、ort java.io.BufferedOutputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;import java.util.LinkedList;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JTextArea;/* * Created on 2004-5-19 * * To change the template for this generated

22、 file go to * Window>Preferences>Java>Code Generation>Code and Comments */* * author 李秋军() * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */public class MemAlloc extends JPanel implements RunnableLi

23、nkedList memList = new LinkedList();MemAreaInfo memAreaInfo;JTextArea text = new JTextArea(20, 12);JButton bt = new JButton(首次适应算法演示);private boolean controlFlag = false;private boolean stopFile = false;PrintStream ps;public MemAlloc()init();bt.addActionListener(new ActionListener()public void actio

24、nPerformed(ActionEvent arg0)if (!controlFlag)text.setText();memList.clear();stopFile = true;init();controlFlag = true;repaint(););this.add(text); /将文本区加入面板this.add(bt); /将按钮加入面板/初始化链表void init()memAreaInfo = new MemAreaInfo(0, 640, false, -1);memList.add(memAreaInfo);if (stopFile)tryps =new PrintStr

25、eam(new BufferedOutputStream(new FileOutputStream(firstMem.txt); catch (IOException e)System.out.println(e);ps.println( 首次适应算法rn);print(内存初始状态);/分配内存public boolean alloc(int memSize, int id)for (int i = 0; i = memSize)if (memAreaInfo.getLength() = memSize)memAreaInfo.setId(id);memAreaInfo.setAlloc(t

26、rue); elseMemAreaInfo newMemArea =new MemAreaInfo(memAreaInfo.getStartAddr(),memSize,true,id);memAreaInfo.setStartAddr(memAreaInfo.getStartAddr() + memSize);memAreaInfo.setLength(memAreaInfo.getLength() - memSize);memList.add(i, newMemArea);break;if (stopFile)print(作业 + id + 分配 + memSize + M内存后);rep

27、aint();return true;/释入内存public boolean dealloc(int id)int a = 0, b = 0;for (int i = 0; i 0 & !(MemAreaInfo) memList.get(i - 1).isAlloc()(MemAreaInfo) memList.get(i - 1).setLength(MemAreaInfo) memList.get(i - 1).getLength()+ memAreaInfo.getLength();a = i;if (i 0)(MemAreaInfo) memList.get(i - 1).setLe

28、ngth(MemAreaInfo) memList.get(i - 1).getLength()+ (MemAreaInfo) memList.get(i + 1).getLength();b = i + 1; else if (a = 0)memAreaInfo.setLength(memAreaInfo.getLength()+ (MemAreaInfo) memList.get(i + 1).getLength();b = i + 1;break;if (b 0)memList.remove(b);if (a 0)memList.remove(a);a = 0;if (a 0)memLi

29、st.remove(a);if (stopFile)print(作业 + id + 释放内存后);repaint();return true;public void paintComponent(Graphics g)g.setColor(new Color(123, 193, 193);g.fillRect(0, 0, 1024, 768);g.setColor(Color.magenta);g.drawString(作业情况:, 230, 90);text.setBackground(new Color(123, 180, 123);text.setLocation(220, 100);b

30、t.setLocation(120, 20);for (int i = 0; i memList.size(); i+)memAreaInfo = (MemAreaInfo) memList.get(i);if (memAreaInfo.isAlloc()g.setColor(Color.blue);g.fillRect(50,(memAreaInfo.getStartAddr() + 100) * 2 / 3,120,memAreaInfo.getLength() * 2 / 3); elseg.setColor(Color.white);g.fillRect(50,(memAreaInfo

31、.getStartAddr() + 100) * 2 / 3,120,memAreaInfo.getLength() * 2 / 3);g.setColor(Color.magenta);g.drawString(String.valueOf(memAreaInfo.getStartAddr() + M,180,(memAreaInfo.getStartAddr() + 110) * 2 / 3);g.drawString(640M, 180, (640 + 110) * 2 / 3);g.setColor(Color.blue);g.fillRect(50, 510, 60, 20);g.d

32、rawString(已分配内存, 120, 523);g.setColor(Color.white);g.fillRect(50, 540, 60, 20);g.drawString(空闲内存, 120, 553);/线程的run()函数public void run()while (true)tryThread.sleep(100); catch (InterruptedException e)System.out.println(e);if (controlFlag)repaint();tryalloc(130, 1);text.append(作业1申请130Kn);Thread.slee

33、p(1000);alloc(60, 2);text.append(作业2申请60Kn);Thread.sleep(1000);alloc(100, 3);text.append(作业3申请100kn);Thread.sleep(1000);dealloc(2);text.append(作业2释放60Kn);Thread.sleep(1000);alloc(200, 4);text.append(作业4申请200Kn);Thread.sleep(1000);dealloc(3);text.append(作业3释放100Kn);Thread.sleep(1000);dealloc(1);text.

34、append(作业1释放130Kn);Thread.sleep(1000);alloc(140, 5);text.append(作业5申请140Kn);Thread.sleep(1000);alloc(60, 6);text.append(作业6申请60Kn);Thread.sleep(1000);alloc(50, 7);text.append(作业7申请50Kn);Thread.sleep(1000);dealloc(6);text.append(作业6释放60Kn);if (stopFile)ps.close();stopFile = false;text.append(n详细内存分区信

35、息在n文件(firstMem.txt)中); catch (InterruptedException e)System.out.println(e.toString();controlFlag = false;void print(String s)ps.print(rn- + s + -rn);ps.println( 起始地址 长度tt目前状态rn);for (int i = 0; i memList.size(); i+)MemAreaInfo m = (MemAreaInfo) memList.get(i);ps.println(m);ps.println(rn);3.class Mem

36、AreaInfoprivate int startAddr; /内存块起始地址private int length; /内存块的长度private boolean isAlloc; /内存块是否已分配private int id; /若已分配, id对应作业号, 否则为-1public MemAreaInfo()public MemAreaInfo(int startAddr, int length, boolean isAlloc, int id)this.startAddr = startAddr;this.length = length;this.isAlloc = isAlloc;th

37、is.id = id;public String toString()StringBuffer sb = new StringBuffer();sb.append( );sb.append(startAddr);sb.append(K );sb.append(length);sb.append(M );sb.append(isAlloc = true ? 已分配 : 空闲);return sb.toString();/* * return */public int getId()return id;/* * return */public boolean isAlloc()return isAlloc;/*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论