基本分頁存儲管理_第1頁
基本分頁存儲管理_第2頁
基本分頁存儲管理_第3頁
基本分頁存儲管理_第4頁
基本分頁存儲管理_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)課程實驗報告實驗名稱:基本分頁儲存管理精選文檔8實驗五基本分頁存儲管理 實驗?zāi)康模菏煜げ⒄莆栈痉猪摯鎯芾淼乃枷?。熟悉并掌握基本分頁存儲管理的分配和回收方式,并能夠模擬實現(xiàn)。用高級語言模擬實現(xiàn)基本分頁存儲管理,要求:實驗內(nèi)容:1、內(nèi)存空間的初始化一一可以由用戶輸入初始內(nèi)存空間各個物理 塊情況。(用二維矩陣的方式按物理塊號,逐行給出每個物理塊的 狀態(tài),1表示已分配,0表示未分配,并能夠?qū)⑿袠?biāo)、列標(biāo) 轉(zhuǎn)換為對應(yīng)的物理塊號,以查看或修改每一個塊的狀態(tài),要求:初 始時部分物理塊已分配)基本分頁的分配過程:由用戶輸入作業(yè)號和作業(yè)的大?。ㄟ@里的 大小是邏輯頁面數(shù)),實現(xiàn)分配過程:空間充足,分配,

2、修改狀態(tài) 矩陣的相應(yīng)位置的值(值由0轉(zhuǎn)變?yōu)?),并用專門的數(shù)據(jù)記錄下 該作業(yè)占用的物理塊的塊號,以備刪除作業(yè)時回收空間。作業(yè)空間的的回收:用戶輸入作業(yè)號,實現(xiàn)分區(qū)回收(通過相應(yīng) 的數(shù)據(jù)結(jié)構(gòu)找到該作業(yè)占有的物理塊號,將塊號轉(zhuǎn)變成對應(yīng)的行 標(biāo)、列標(biāo),將對應(yīng)位置的值由1轉(zhuǎn)變成0就完成了回收)分區(qū)的顯示:任何時刻,可以查看當(dāng)前內(nèi)存的情況(顯示記錄內(nèi) 存情況的矩陣的值)要求考慮:(1)內(nèi)存空間不足的情況,要有相應(yīng)的顯示;(2)作業(yè)不能同名,但是刪除后可以再用這個名字;(3)作業(yè)空間回收是輸入作業(yè)名,回收相應(yīng)的空間,如果這個作業(yè)名 不存在,也要有相應(yīng)的提示。三、實驗代碼#i nclude #i nclud

3、e vwin dows.h#define N 100/共有100個內(nèi)存塊/內(nèi)存塊狀態(tài)標(biāo)志數(shù)組,0:空閑,1:使用/記錄當(dāng)前內(nèi)存剩余空間/記錄當(dāng)前進(jìn)程數(shù)int processNN+1; /存放每個進(jìn)程的頁表 int blockN;int blockCo unt;int p rocessCo unt;bool flag = true;void in it();void out put();bool create Process。; bool endP rocess();void in it()int i, j;/初始化內(nèi)存狀態(tài)標(biāo)志數(shù)組 for (i=0; iN; i+)blocki = 0;for

4、 (i=0; i20; i+) blockra nd()%(N-1) = 1;blockCou nt = 0;for (i=0; iN; i+) if (blocki = 0) blockCou nt+;/初始化存放進(jìn)程的數(shù)組 for (i=0; ivN; i+)p rocessi0 = 0;for (j=1; jN; j+)p rocessij = -1;p rocessCo unt = 0;printf(初始化結(jié)果如下:); out pu t();flag = false; void out pu t()printf(n內(nèi)存總量:%d塊,已用空間:%d塊,剩余空間:%d塊,進(jìn)程總 數(shù):%d

5、 個n, N, N-blockCount, blockCount, processCount);if (flag & blockCou nt N)printf(已使用的內(nèi)存塊(%d): n, N-blockCount);for (i nt k=0,cou nt=O; k 0)printf(內(nèi)存詳細(xì)使用情況如下:n);for (i nt i=0; i 0) printf(進(jìn)程號:%d n 占用內(nèi)存塊(2d): , i, processi0); for (int j=1,co un t=0; j 0)printf(空閑內(nèi)存塊(%d): n, blockCount); for (i nt k=0,c

6、ou nt=0; k 99)printf(錯誤!進(jìn)程號過大! n);goto loop;if (p ages blockCo unt)return false;blockCo unt -= p ages;p rocess pi d0 = p ages;for (i nt i=1; iv=p ages; i+)while (blockk=1 & k100) k+;p rocess pidi = k;blockk = 1;k+;p rocessCo un t+;return true; bool endP rocess()int p id, p ages;if (p rocessCo unt 1)

7、printf(當(dāng)前內(nèi)存沒有進(jìn)程! nn);return false;printf(當(dāng)前內(nèi)存中的進(jìn)程有 %d個, 進(jìn)程號為:,p rocessCou nt); for (i nt i=0; i 0)prin tf(%2d , i);pu tchar(n);printf(請輸入您要結(jié)束的進(jìn)程號(小于%d): , N);sca nf(%d, &p id);p ages = p rocess pi d0;if (p ages = 0)n);printf(對不起!該進(jìn)程不存在! return false;for (i nt j=1; j 創(chuàng)建進(jìn)程 n 2 -程序n););printf(請輸入您要進(jìn)行的操

8、作:scan f(%d, & choice);switch (choice)case 1:if (create Process。)printf(創(chuàng)建新進(jìn)程成功!nn);elseprintf(抱歉!內(nèi)存空間不足,創(chuàng)建新進(jìn)程失敗!nn);break;case 2:if (endP rocess()printf(進(jìn)程已結(jié)束! nn);elseprintf(進(jìn)程結(jié)束失?。?nn);break;case 3:out pu t();break;case 0:return ;default:printf(對不起!您的選擇有誤!請重新選擇! nn); void main()in it(); menu();四、實驗結(jié)果.號 低2程 操皐 建曇鮒鬍 /? T 7 7入岡入己 -麹賀暑 1 3 3 au甫當(dāng)二屛2個個為1號.程TO羣郃結(jié)查退 作:-輸1 fr- 二二一輸12 3 9三冃臨譌第翳己肛咼吹論弧*說進(jìn)琨總數(shù):B個五、實驗總結(jié)在存儲器管理中,連續(xù)分配方式會形成許多“碎片”,雖然可通過“緊湊” 方法將許多碎片拼接成可用的大塊空間,但須為之付出很大開銷。如果允許將一個進(jìn)程直接分散地裝入到許多不相鄰的分區(qū)中,則無須再進(jìn)行“

溫馨提示

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

評論

0/150

提交評論