ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:444.59KB ,
资源ID:11514342      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11514342.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实现内存动态分区分配首次算法.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实现内存动态分区分配首次算法.docx

1、实现内存动态分区分配首次算法实 验 报 告 课程名称: 计算机操作系统 实验名称:用首次适应算法实现内存动态分区分配 任课教师: 霍 林林 专 业: 计算机科学与技术 班 级: 学 号: _姓 名:蓝冠恒_ _ 完成日期: 2009年10月15日 一、实验目的:了解和掌握操作系统的动态分区分配的基本原理和实现方法,包括内存的动态分配和内存的回收。二、主要实验内容及要求:用首次适应算法编程实现对操作系统内存动态分区分配,主要功能包括分配内存和回收内存。三、设计思路:1.内存分配:(1)若非法输入或请求内存过大或内存分配块数达到上限,则提示相关信息,需重新输入或等待。(2) 若输入数据合法,则按首

2、次适应算法分配内存,将分配的内存地址和大小存BusyTable(内存分配表)中;并在SpareTable(内存空闲管理表)修改剩余内存地址和大小,若是首次分配,需要同时建立这两张表。(3)将刚分配的内存地址写入consumeCombo(等待消费的内存地址下拉框)。2.消费内存(释放内存):(1)从consumeCombo选出可消费内存地址,进行消费。(2)从consumeCombo中删除刚消费的内存地址,并将该地址写入recoverCom(等待回收的内存地址下拉框)。3.回收内存:(1)若回收区同时与插入点的前、后两分区邻接,将三个分区合并,合并后分区地址为此插入点的前一分区地址,大小为三个分

3、区大小之和;然后从SpareTable表中去掉分区前后一分区的表项。(2)若回收区与插入点的前分区邻接,则将前分区与回收分区合并,合并后的分区地址为此前前一分区的内存地址,大小为合并前两者大小之和,SpareTable表长度不变。(3) 若回收区与插入点的后分区邻接,则将后分区与回收分区合并,合并后的分区地址为回收的内存地址,大小为合并前两者大小之和,SpareTable表长度不变。(4)若都不满足上述情况,这是应在SpareTable表插入点处单独建立一个表项,填写回收的地址和大小。(5)执行以上任何一步后,立即从BusyTable中删除刚回收的内存所在的表项,同时从recoverCombo

4、中删除刚回收的内存的地址。(6)显示回收过程以及回收的内存地址和大小、合并后的内存地址和大小的信息。四、实验结果与结论:(经调试正确的源程序和程序的运行结果)编程员:蓝冠恒程序源代码:package myPackage;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Label;import or

5、g.eclipse.swt.widgets.Text;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Combo;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import com.swtdesigner.SWTResourceManager;public class MemoryManagement protected Shell shell; private Com

6、posite mainComposite; private Composite firstComposite; private Label requestLabel; private Text requestText; private Button requestOK; private Label consumeLabel; private Combo consumeCombo; private Button consumeOK; private Label recoverLabel; private Combo recoverCombo; private Button recoverOK;

7、private Label informationLabel; private Text informationText; private Label CanUseLabel; private final int MinLimitSize=200; SpareNode SpareTable; private static int SpareTLength=0; BusyNode BusyTable; private static int BusyTLength=0; private Text CanUseText; private Text HaveUseText; private Label

8、 HaveUseLabel; private final static int MaxProcessNum=100; public class SpareNode private int Address; private int Size; protected void Copy(SpareNode SN) this.Address=SN.Address; this.Size=SN.Size; protected SpareNode(int address, int size) super(); Address = address; Size = size; protected int get

9、Address() return Address; protected void setAddress(int address) Address = address; protected int getSize() return Size; protected void setSize(int size) Size = size; public class BusyNode private int Address; private int Size; private boolean ISConsume; protected BusyNode(int address, int size) sup

10、er(); Address = address; Size = size; ISConsume=false; protected void Copy(BusyNode BN) this.Address=BN.Address; this.Size=BN.Size; this.ISConsume=BN.ISConsume; protected int getAddress() return Address; protected void setAddress(int address) Address = address; protected boolean getIsISConsume() ret

11、urn ISConsume; protected void setISConsume(boolean consume) ISConsume = consume; protected int getSize() return Size; protected void setSize(int size) Size = size; public static void main(String args) try MemoryManagement window = new MemoryManagement(); window.open(); catch (Exception e) e.printSta

12、ckTrace(); /*Open the window.*/ public void open() Display display = Display.getDefault(); createContents(); shell.open(); shell.layout(); while (!shell.isDisposed() if (!display.readAndDispatch() display.sleep(); /* Create contents of the window.*/ protected void createContents() shell = new Shell(

13、); shell.setForeground(SWTResourceManager.getColor(SWT.COLOR_GREEN); shell.setSize(680, 418); shell.setText(操作系统内存管理); SpareTable=new SpareNodeMaxProcessNum+1; SpareTable0=new SpareNode(0,20000); SpareTLength=1; BusyTable=new BusyNodeMaxProcessNum; mainComposite = new Composite(shell, SWT.NONE); mai

14、nComposite.setBounds(0, 0, 664, 382); firstComposite = new Composite(mainComposite, SWT.BORDER); firstComposite.setBounds(0, 0, 295, 382); requestLabel = new Label(firstComposite, SWT.NONE); requestLabel.setForeground(SWTResourceManager.getColor(0, 0, 255); requestLabel.setFont(SWTResourceManager.ge

15、tFont(微软雅黑, 12, SWT.NORMAL); requestLabel.setBounds(0, 25, 97, 27); requestLabel.setText(申请资源大小); requestText = new Text(firstComposite, SWT.BORDER); requestText.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_HIGHLIGHT_SHADOW); requestText.setFont(SWTResourceManager.getFont(微软雅黑, 12, SWT

16、.NORMAL); requestText.setBounds(103, 26, 104, 27); requestOK = new Button(firstComposite, SWT.NONE); requestOK.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_HIGHLIGHT_SHADOW); requestOK.addSelectionListener(new SelectionAdapter() public void widgetSelected(SelectionEvent e) int size = 0

17、;boolean Y=false; if(BusyTLength=MaxProcessNum) informationText.setText(); informationText.insert(进程数量达到上限,不能再申请!); else try size= Integer.parseInt(requestText.getText(); requestText.setText(); catch(Exception ex) Y= true; informationText.setText(); informationText.insert(输入有误,请重新输入(整数)!n); if(!Y) A

18、llocateResources(size); ); requestOK.setBounds(229, 23, 52, 29); requestOK.setText(OK); consumeLabel = new Label(firstComposite, SWT.NONE); consumeLabel.setForeground(SWTResourceManager.getColor(0, 0, 255); consumeLabel.setFont(SWTResourceManager.getFont(微软雅黑, 12, SWT.NORMAL); consumeLabel.setBounds

19、(0, 59, 97, 27); consumeLabel.setText(消费资源地址); consumeCombo = new Combo(firstComposite, SWT.READ_ONLY); consumeCombo.setFont(SWTResourceManager.getFont(微软雅黑, 10, SWT.NORMAL); consumeCombo.setBounds(103, 61, 104, 27); consumeOK = new Button(firstComposite, SWT.NONE); consumeOK.addSelectionListener(ne

20、w SelectionAdapter() public void widgetSelected(SelectionEvent e) String str=consumeCombo.getText(); informationText.setText(); tryint ConsumeAddress=Integer.parseInt(str); Consume( ConsumeAddress); catch(Exception ex) ); consumeOK.setBounds(229, 58, 52, 27); consumeOK.setText(OK); recoverLabel = ne

21、w Label(firstComposite, SWT.NONE); recoverLabel.setForeground(SWTResourceManager.getColor(0, 0, 255); recoverLabel.setFont(SWTResourceManager.getFont(微软雅黑, 12, SWT.NORMAL); recoverLabel.setBounds(0, 99, 97, 27); recoverLabel.setText(回收资源地址); recoverCombo = new Combo(firstComposite, SWT.READ_ONLY); r

22、ecoverCombo.setForeground(SWTResourceManager.getColor(0, 255, 0); recoverCombo.setFont(SWTResourceManager.getFont(微软雅黑, 10, SWT.NORMAL); recoverCombo.setBounds(103, 101, 104, 27); recoverOK = new Button(firstComposite, SWT.NONE); recoverOK.addSelectionListener(new SelectionAdapter() public void widg

23、etSelected(SelectionEvent e) String str=recoverCombo.getText(); boolean IsNull=false; int RecoverAddress = 0; informationText.setText(); try RecoverAddress=Integer.parseInt(str); catch(Exception ex)IsNull=true; if(!IsNull)Recover(RecoverAddress); ); recoverOK.setBounds(229, 101, 52, 27); recoverOK.s

24、etText(OK); informationLabel = new Label(firstComposite, SWT.CENTER); informationLabel.setForeground(SWTResourceManager.getColor(SWT.COLOR_RED); informationLabel.setFont(SWTResourceManager.getFont(微软雅黑, 12, SWT.NORMAL); informationLabel.setBounds(0, 142, 253, 27); informationLabel.setText(操作信息提示); i

25、nformationText = new Text(firstComposite, SWT.BORDER | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CANCEL); informationText.setForeground(SWTResourceManager.getColor(255, 0, 0); informationText.setFont(SWTResourceManager.getFont(微软雅黑, 10, SWT.NORMAL); informationText.setBounds(10, 175, 271, 19

26、3); CanUseLabel = new Label(mainComposite, SWT.HORIZONTAL | SWT.SHADOW_IN | SWT.CENTER); CanUseLabel.setBackground(SWTResourceManager.getColor(SWT.COLOR_CYAN); CanUseLabel.setForeground(SWTResourceManager.getColor(0, 0, 255); CanUseLabel.setFont(SWTResourceManager.getFont(微软雅黑, 12, SWT.NORMAL); CanU

27、seLabel.setBounds(624, 9, 40, 167); CanUseLabel.setText(可n用n内n存n状n态n信n息); CanUseText = new Text(mainComposite, SWT.BORDER | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CANCEL); CanUseText.setForeground(SWTResourceManager.getColor(0, 0, 255); CanUseText.setBackground(SWTResourceManager.getColor

28、(SWT.COLOR_WHITE); CanUseText.setBounds(310, 10, 316, 167); HaveUseText = new Text(mainComposite, SWT.BORDER | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CANCEL); HaveUseText.setForeground(SWTResourceManager.getColor(0, 0, 205); HaveUseText.setBackground(SWTResourceManager.getColor(SWT.COLOR_

29、WHITE); HaveUseText.setBounds(310, 183, 316, 189); HaveUseLabel = new Label(mainComposite, SWT.CENTER); HaveUseLabel.setBackground(SWTResourceManager.getColor(SWT.COLOR_YELLOW); HaveUseLabel.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN); HaveUseLabel.setFont(SWTResourceManager.getFont(微软雅黑, 12, SWT.NORMAL); HaveUseLabel.setBounds(624, 183, 40, 188); HaveUseLabel.setText(内n存n占n用n情n况n信n息); /createContents public void AllocateResources(int size) boolean success=false; if(SpareTLength=1) int AddressTemp=SpareTable0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1