操作系統(tǒng)實(shí)驗(yàn) 內(nèi)存管理_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn) 內(nèi)存管理_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn) 內(nèi)存管理_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn) 內(nèi)存管理_第4頁(yè)
操作系統(tǒng)實(shí)驗(yàn) 內(nèi)存管理_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、操作系統(tǒng)實(shí)驗(yàn)報(bào)告 計(jì)算機(jī)學(xué)院 (院、系) 網(wǎng)絡(luò)工程 專(zhuān)業(yè) 082 班 組 課學(xué)號(hào) 20 姓名 區(qū)德智 實(shí)驗(yàn)日期 教師評(píng)定 實(shí)驗(yàn)四 內(nèi)存管理一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)實(shí)驗(yàn)使學(xué)生了解可變式分區(qū)管理使用的主要數(shù)據(jù)結(jié)構(gòu),分配、回收的主要技術(shù),了解最優(yōu)分配、最壞分配、最先分配等分配算法?;灸苓_(dá)到下列具體的目標(biāo):1、 掌握初步進(jìn)程在內(nèi)存中的映像所需要的內(nèi)存需求。2、 內(nèi)存的最先分配算法首先實(shí)現(xiàn),再逐步完成最優(yōu)和最壞的分配算法。二、實(shí)驗(yàn)內(nèi)容1、 在進(jìn)程管理的基礎(chǔ)上實(shí)現(xiàn)內(nèi)存分配。2、 運(yùn)用java實(shí)現(xiàn)整體的布局與分配內(nèi)存時(shí)的動(dòng)態(tài)圖畫(huà)顯示。三、實(shí)驗(yàn)步驟 1.構(gòu)建一個(gè)Process的對(duì)象類(lèi),每分配一次內(nèi)存就實(shí)例化一個(gè)對(duì)象

2、。這對(duì)象包含分配內(nèi)存的名字,內(nèi)存大?。╞yte),繪畫(huà)的起點(diǎn)像素,繪畫(huà)的終點(diǎn)像素。主要代碼:public class Process private String name;private int size;private int beginPx;private int endPx;public int getBeginPx() return beginPx;public void setBeginPx(int beginPx) this.beginPx = beginPx;public int getEndPx() return endPx;public void setEndPx(int

3、endPx) this.endPx = endPx;public String getName() return name;public void setName(String name) = name;public int getSize() return size;public void setSize(int size) this.size = size;2.根據(jù)用戶(hù)輸入而分配內(nèi)存的大小,若輸入的大小大于目前可分配內(nèi)存的大小則拒絕分配操作,否則增加一個(gè)新進(jìn)程入鏈表中,并在已分配表中增加進(jìn)程的名字,更新剩余內(nèi)存大小。分配內(nèi)存流程圖:繪畫(huà)paint()方法的主要代碼:pu

4、blic void paint(Graphics g) super.paint(g);/刷新頁(yè)面 Color c=g.getColor(); g.setColor(Color.WHITE); g.fillRect(20, 400, 450, 50);/若已有分配內(nèi)存 if(myList.size()!=0) g.setColor(Color.BLACK); /從已分配的內(nèi)存中循環(huán)獲取像素起點(diǎn)位置和像素的大小 for(int i=0;imyList.size();i+) g.fillRect(myList.get(i).getBeginPx(), 400,myList.get(i).getEnd

5、Px()-myList.get(i).getBeginPx(), 50); g.setColor(c); 顯示已分配進(jìn)程名字的showListName()方法主要代碼:public void showListName(ArrayList myList) Process newProcess=null; showList.removeAll(); for(int i=0;i(m*1024*1024+k*1024+b)JOptionPane.showMessageDialog(null,所剩內(nèi)存不足,警告對(duì)話(huà)框,JOptionPane.WARNING_MESSAGE);elseString nam

6、e=JOptionPane.showInputDialog(null,輸入進(jìn)程名字,輸入對(duì)話(huà)框,JOptionPane.PLAIN_MESSAGE);/獲得分配內(nèi)存名字Process newProcess=new Process();newProcess.setName(name);newProcess.setSize(Integer.parseInt(mbField.getText()*1024*1024+Integer.parseInt(kbField.getText()*1024+Integer.parseInt(byteField.getText(); size=newProcess.

7、getSize(); fsize=size;/把size轉(zhuǎn)成float類(lèi)型計(jì)算,小數(shù)計(jì)算必須要化成整形 px=(int)(450/p*fsize);/獲得像素的長(zhǎng)度newProcess.setBeginPx(index);newProcess.setEndPx(index+px);index=index+px;myList.add(newProcess);/把進(jìn)程添加到鏈表中/繪圖repaint(); showListName(myList);/顯示所用進(jìn)程的名字 /三個(gè)輸入框清空 mbField.setText();kbField.setText(); byteField.setText()

8、; /更改剩余內(nèi)存值 int leftSize=(m*1024*1024+k*1024+b)-size; m=leftSize/(1024*1024); k=leftSize/1024%1024; b=leftSize%1024; notice2.setText(可分配最大內(nèi)存:+m+MB +k+KB +b+Byte); 輸入要分配的內(nèi)存大?。簣D1 分配內(nèi)存輸入名字:圖2 輸入名字分配兩個(gè)內(nèi)存:圖3 分配兩個(gè)內(nèi)存3.用戶(hù)選擇已分配的內(nèi)存名字而回收相應(yīng)的內(nèi)存模塊: 回收流程圖:回收內(nèi)存主要代碼:public class CollectMemoryListener implements Actio

9、nListenerpublic void actionPerformed(ActionEvent arg0) int num=showList.getSelectedIndex();/獲得被選中的序號(hào)/更新剩余內(nèi)存值 int releaseSize=myList.get(num).getSize(); m=m+releaseSize/(1024*1024); k=k+releaseSize/1024%1024; b=b+releaseSize%1024; notice2.setText(可分配最大內(nèi)存:+m+MB +k+KB +b+Byte); /從鏈表中刪去該進(jìn)程myList.remove(

10、num);showListName(myList);repaint();回收第一個(gè)內(nèi)存后,繪圖更新,剩余內(nèi)存更新:圖4 回收第一個(gè)已分配的內(nèi)存重新整合內(nèi)存主要代碼:public class RefreshMemoryListener implements ActionListenerpublic void actionPerformed(ActionEvent e) if(myList.size()!=0)index=20;for(int i=0;imyList.size();i+) size=myList.get(i).getSize(); fsize=size;/把size轉(zhuǎn)成float類(lèi)型計(jì)算 px=(int)(450/p*fsize);/獲得像素的長(zhǎng)度myList.get(i).setBeginPx(index);myList.get(i).setEndPx(index+px);index=index+px;repaint();圖5 重新整合內(nèi)存四、實(shí)驗(yàn)總結(jié)通過(guò)本次實(shí)驗(yàn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論