操作系統(tǒng)-基本分頁(yè)存儲(chǔ)管理(內(nèi)有代碼)_第1頁(yè)
操作系統(tǒng)-基本分頁(yè)存儲(chǔ)管理(內(nèi)有代碼)_第2頁(yè)
操作系統(tǒng)-基本分頁(yè)存儲(chǔ)管理(內(nèi)有代碼)_第3頁(yè)
操作系統(tǒng)-基本分頁(yè)存儲(chǔ)管理(內(nèi)有代碼)_第4頁(yè)
操作系統(tǒng)-基本分頁(yè)存儲(chǔ)管理(內(nèi)有代碼)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、基本分頁(yè)存儲(chǔ)管理實(shí)驗(yàn)?zāi)康倪B續(xù)內(nèi)存分配方式會(huì)形成許多“碎片”,雖然可以通過(guò)“緊湊”方法將許多 碎片拼接成可用的大塊空間,但須為之付出很大開(kāi)銷(xiāo)。如果允許將一個(gè)進(jìn)程直接 分散地裝入到許多不相鄰接的分區(qū)中,則無(wú)需再進(jìn)行“緊湊” ?;谶@一思想而 產(chǎn)生了離散分配方式。如果離散分配的基本單位是頁(yè),則稱(chēng)為分頁(yè)存儲(chǔ)管理方式; 如果離散分配的基本單位是段,則稱(chēng)為分段存儲(chǔ)管理方式。在分頁(yè)存儲(chǔ)管理方式中,如果不具備頁(yè)面兌換功能,則稱(chēng)為基本的分頁(yè)存儲(chǔ) 管理方式,或稱(chēng)為純分頁(yè)存儲(chǔ)管理方式,它不具備支持虛擬存儲(chǔ)器的功能,它要 求把每個(gè)作業(yè)全部裝入內(nèi)存后方能運(yùn)行。本實(shí)驗(yàn)通過(guò)程序模擬操作系統(tǒng)的基本分頁(yè)存儲(chǔ)管理方式,進(jìn)一步理解

2、這一內(nèi)存分配方式的原理和特點(diǎn),加深對(duì)理論知識(shí)的掌握。實(shí)驗(yàn)要求1、用C語(yǔ)言或Java語(yǔ)言編寫(xiě)程序模擬操作系統(tǒng)對(duì)內(nèi)存的基本分頁(yè)存儲(chǔ)管理 方式2、程序要能正確對(duì)“內(nèi)存”進(jìn)行“分配”和“回收”,能接受用戶(hù)的輸入, 顯示內(nèi)存的分配情況,并有一定的容錯(cuò)能力。3、每個(gè)人獨(dú)立按時(shí)完成實(shí)驗(yàn)內(nèi)容。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)假定內(nèi)存空間已經(jīng)按塊劃分,目標(biāo)程序無(wú)需關(guān)心內(nèi)存塊大小等底層細(xì) 節(jié),只需按算法對(duì)內(nèi)存塊進(jìn)行分配即可。程序應(yīng)該實(shí)現(xiàn)以下功能:1、內(nèi)存初始化。假定內(nèi)存塊共有 N個(gè),初始化后的內(nèi)存空間應(yīng)該有一部分 已經(jīng)被使用,這可以用隨機(jī)數(shù)或程序內(nèi)部的其他算法完成。2、程序應(yīng)該能接受用戶(hù)輸入的進(jìn)程信息,并為之分配內(nèi)存,返回分配結(jié)果

3、(成功或失?。?,注意,此處應(yīng)該考慮到不合法的輸入并進(jìn)行相應(yīng)處理。3、程序能回收用戶(hù)指定的進(jìn)程所占用的內(nèi)存空間,因此,程序可能需要為每個(gè)進(jìn)程分配一個(gè)唯一的進(jìn)程號(hào)并給出詳細(xì)的提示信息。4、能直觀合理地顯示內(nèi)存分配情況。5、程序界面友好,便于操作和查看運(yùn)行結(jié)果。#include #include #define N 100/共有100個(gè)內(nèi)存塊int processNN+1; 存放每個(gè)進(jìn)程的頁(yè)表int blockN;/內(nèi)存塊狀態(tài)標(biāo)志數(shù)組,0:空閑,1:使用int blockCount;/記錄當(dāng)前內(nèi)存剩余空間int processCount;/記錄當(dāng)前進(jìn)程數(shù)bool flag = true;void i

4、nit();void output();bool createProcess();bool endProcess();void init()int i, j;/初始化內(nèi)存狀態(tài)標(biāo)志數(shù)組for (i=0; iN; i+)blocki = 0;for (i=0; i20; i+)blockrand()%(N-1) = 1;blockCount = 0;for (i=0; iN; i+)if (blocki = 0) blockCount+;/初始化存放進(jìn)程的數(shù)組for (i=0; iN; i+)processi0 = 0;for (j=1; jN; j+)processij = -1;process

5、Count = 0;printf(初始化結(jié)果如下:);output();flag = false;void output()printf(n內(nèi)存總量:%d塊,已用空間:%d塊,剩余空間:%d塊,進(jìn)程總 數(shù):%d 個(gè)n, N, N-blockCount, blockCount, processCount);if (flag & blockCount N)printf(已使用的內(nèi)存塊(d): n, N-blockCount);for (int k=0,count=0; k 0)printf(內(nèi)存詳細(xì)使用情況如下:n);for (int i=0; i 0)printf(進(jìn)程號(hào):%d n 占用內(nèi)存塊(

6、2d): , i, processi0); for (int j=1,count=0; j 0)printf(空閑內(nèi)存塊(d): n, blockCount);for (int k=0,count=0; k 99)printf(錯(cuò)誤!進(jìn)程號(hào)過(guò)大!n);goto loop;if (pages blockCount)return false;blockCount -= pages;processpid0 = pages;for (int i=1; i=pages; i+)while (blockk=1 & k100)k+;processpidi = k;blockk = 1;k+;processC

7、ount+;return true; bool endProcess() int pid, pages;if (processCount 1) printf(當(dāng)前內(nèi)存沒(méi)有進(jìn)程!nn);return false;printf(當(dāng)前內(nèi)存中的進(jìn)程有 %d個(gè),進(jìn)程號(hào)為:, processCount);for (int i=0; i 0) printf(%2d , i);putchar(n);printf(請(qǐng)輸入您要結(jié)束的進(jìn)程號(hào)(小于d): , N);scanf(%d, &pid);pages = processpid0;if (pages = 0) printf(對(duì)不起!該進(jìn)程不存在!n);retur

8、n false;for (int j=1; j 創(chuàng)建進(jìn)程n 2 -結(jié)束進(jìn)程n 3 -查看內(nèi)存n 0 -退出 程序n);printf(請(qǐng)輸入您要進(jìn)行的操作:);scanf(%d, &choice);switch (choice) case 1:if (createProcess()printf(創(chuàng)建新進(jìn)程成功!nn);elseprintf(抱歉!內(nèi)存空間不足,創(chuàng)建新進(jìn)程失??!nn);break;case 2:if (endProcess()printf(進(jìn)程已結(jié)束! nn);elseprintf(進(jìn)程結(jié)束失??! nn);break;case 3:output();break;case 0:ret

9、urn ;default:printf(對(duì)不起!您的選擇有誤!請(qǐng)重新選擇!nn);void main()init();menu();9E入碗企即泉作桑菊基本分貝Debuga.ain. exe同嘴優(yōu)結(jié)果如下:作卷息量:100塊.已用空間:19塊.剩余空間;82祗進(jìn)程總數(shù):a個(gè) 己值用的內(nèi)存塊S611 16 25 29 34 41 S3 54 G1 62 67 7S 82 90 9396 97當(dāng)前內(nèi)存無(wú)進(jìn)程I u I- X/X/S -曹建 2 m E主月主丹刈3. I . | 1. -I-數(shù) 面 貝 需 所1和:作的2 3 0王陰王國(guó) L CH. 一人入期 -一存序建霍出創(chuàng)結(jié)查退-您進(jìn)進(jìn)數(shù)面貝需所

10、i和:作眄 操F1 TJr I 一行功 旺號(hào)成 -S12 25操作菜單二1 創(chuàng)建進(jìn)矍2 一 蹙瞿3 - Stfi#0 退田屋住請(qǐng)輸入您要能行的操作 3內(nèi)存總量1100塊.已用空間工63塊.剩余空間137塊,進(jìn)程總數(shù) 2個(gè) gg肯細(xì)?用情況如下;占癰內(nèi)存塊孫;8 1 2 3 4 5 G 7 8 9 10 12 13 14 1517 18 19 2Q 21旭翟筆2占用內(nèi)存塊(25: 22 23 24 26 27 28 30 31 32 33 35 36 37 38 394B 42 43 44 4S 4G 47 48 49 50操作菜鄲結(jié)T-入內(nèi)人已 -H量細(xì):存 總詳口薪 414 用%緝杳 LA

11、菜 7-入 作:二輸作2程 的嗡K仃進(jìn)束 進(jìn)的結(jié) 一要中要事 您結(jié),小2 個(gè)-(? 7號(hào)作菜單;創(chuàng)健進(jìn)谷-結(jié)蠢噓一查看內(nèi)存-退出嚼輸入您要在行的操作 3塊況0情10用的篇 一行進(jìn)束 進(jìn)的結(jié) 要中要奧 您底a結(jié)號(hào)M 程呢 進(jìn)T1可51 用; 己T-624232443424,小2 個(gè)-(; 7號(hào) 作工程43塊.剩余空間;界塊,進(jìn)程總數(shù);1個(gè)27 28 30 31 32 33 35 36 37394S 46 47 48 49 50號(hào)-九 程隴 進(jìn)T1行總善100塊,已用空間;1塊.剩余空間;般塊,進(jìn)程總都e個(gè) 胃內(nèi)薦無(wú)進(jìn)程I實(shí)驗(yàn)總結(jié)基本分頁(yè)的思想是比較簡(jiǎn)單的,而且實(shí)驗(yàn)前老師已經(jīng)給出了一種可行的數(shù)據(jù)

12、結(jié)構(gòu)來(lái)存儲(chǔ)程序中需要用到的數(shù)據(jù),因此這個(gè)實(shí)驗(yàn)在構(gòu)思上是沒(méi)有多少難度的。 由于程序中主要使用的是數(shù)組,操作起來(lái)比較方便,不像前兩個(gè)實(shí)驗(yàn)需要用到大 量的鏈表操作。在這次試驗(yàn)中,我主要遇到了以下一些問(wèn)題:1、程序剛寫(xiě)完時(shí),記錄“內(nèi)存”中的進(jìn)程數(shù)的變量和當(dāng)前剩余總內(nèi)存的變量的值不正確,經(jīng)檢查后發(fā)現(xiàn)是在結(jié)束進(jìn)程時(shí)沒(méi)有同時(shí)更新這些數(shù)據(jù)。2、內(nèi)存使用情況應(yīng)該以哪種形式輸出以及輸出哪些信息。最終我選擇了盡 可能詳細(xì)地輸出有用信息,通過(guò)空格、空行、對(duì)齊等手段盡力使輸出格式簡(jiǎn)潔美 觀。比如,在輸出每個(gè)進(jìn)程的內(nèi)存使用情況時(shí),首先輸出該進(jìn)程占用的總內(nèi)存, 然后以統(tǒng)一的對(duì)齊方式依次輸出各個(gè)內(nèi)存塊編號(hào)。當(dāng)然,對(duì)于不同的模塊輸出的信息也應(yīng)該不一樣,比如,內(nèi)存初始化結(jié)束后 應(yīng)該輸出哪個(gè)內(nèi)存塊被占用了,否則無(wú)法判斷后續(xù)的內(nèi)存分配是否正確, 但在以 后查看內(nèi)存使用情況時(shí)則不必把所有已占用的內(nèi)存塊輸出,因?yàn)槊總€(gè)進(jìn)程都會(huì)單獨(dú)把自己占用的內(nèi)存塊顯示出來(lái)。 為了達(dá)到這種效果,我使用了一個(gè)全局變量作 為判斷依據(jù),詳細(xì)情況見(jiàn)附錄中代碼。3、程序的容錯(cuò)性。這是一個(gè)容易被忽略的問(wèn)題。這個(gè)程序起初基本沒(méi)考慮 這個(gè)問(wèn)題,但在后來(lái)的調(diào)試過(guò)程中,逐漸加上了一

溫馨提示

  • 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)論