版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浏阳市人民医院2025年公开招聘编外合同制人员备考题库及参考答案详解1套
- 湖南省株洲市2023-2024学年九年级上学期期末考试物理试卷(含答案)
- 2026年住宅装修设计合同
- 2025年第十三师中级人民法院聘用制书记员招聘备考题库及1套参考答案详解
- 中国人民银行所属企业网联清算有限公司2026年度校园招聘26人备考题库及参考答案详解
- 2026年科技成果评估作价入股合同
- 2025年招商银行佛山分行社会招聘备考题库及1套参考答案详解
- 2025年青岛市李沧区人民法院公开招聘司法辅助人员备考题库及答案详解1套
- 长沙市望城区人民医院2025年面向社会公开招聘编外合同制专业技术人员备考题库及1套完整答案详解
- 青岛日报社招聘事业单位工作人员笔试真题2024
- 香薰蜡烛基础知识培训
- 混凝土及外加剂知识培训课件
- 1-视频交换矩阵
- 收养政策知识培训内容课件
- 石化企业应急预案
- 船舶航次计划总结
- 2025-2026学年统编版一年级上册道德与法治教学计划
- 《机器学习》课件-第6章 强化学习
- 早产合并新生儿呼吸窘迫综合征护理查房
- 2025-2026学年人教鄂教版三年级科学上册(全册)教学设计(附目录)
- 2025年机关司机面试常见问题及答案集
评论
0/150
提交评论