![C語言基本分頁存儲管理_第1頁](http://file4.renrendoc.com/view/c3967d91797ea4cb794ff2641f92f952/c3967d91797ea4cb794ff2641f92f9521.gif)
![C語言基本分頁存儲管理_第2頁](http://file4.renrendoc.com/view/c3967d91797ea4cb794ff2641f92f952/c3967d91797ea4cb794ff2641f92f9522.gif)
![C語言基本分頁存儲管理_第3頁](http://file4.renrendoc.com/view/c3967d91797ea4cb794ff2641f92f952/c3967d91797ea4cb794ff2641f92f9523.gif)
![C語言基本分頁存儲管理_第4頁](http://file4.renrendoc.com/view/c3967d91797ea4cb794ff2641f92f952/c3967d91797ea4cb794ff2641f92f9524.gif)
![C語言基本分頁存儲管理_第5頁](http://file4.renrendoc.com/view/c3967d91797ea4cb794ff2641f92f952/c3967d91797ea4cb794ff2641f92f9525.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、操 作 系 統(tǒng) 實(shí) 驗(yàn) 報 生 口姓名:盧學(xué)號: 201607010209學(xué)校:清華大學(xué)專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級: 2008 級 2 班基本分頁存儲管理實(shí)驗(yàn)?zāi)康倪B續(xù)內(nèi)存分配方式會形成許多“碎片” ,雖然可以通過“緊湊”方法將許多碎片拼接成可用的大塊空間, 但須為之付出很大開銷。 如果允許將一個進(jìn)程直接分散地裝入到許多不相鄰接的分區(qū)中,則無需再進(jìn)行“緊湊” ?;谶@一思想而產(chǎn)生了離散分配方式。如果離散分配的基本單位是頁, 則稱為分頁存儲管理方式; 如果離散分配的基本單位是段, 則稱為分段存儲管理方式。在分頁存儲管理方式中,如果不具備頁面兌換功能,則稱為基本的分頁存儲管理方式,或稱為純分頁存儲管
2、理方式, 它不具備支持虛擬存儲器的功能, 它要求把每個作業(yè)全部裝入內(nèi)存后方能運(yùn)行。本實(shí)驗(yàn)通過程序模擬操作系統(tǒng)的基本分頁存儲管理方式, 進(jìn)一步理解這一內(nèi)存分配方式的原理和特點(diǎn),加深對理論知識的掌握。實(shí)驗(yàn)要求、用 C 語言或 Java 語言編寫程序模擬操作系統(tǒng)對內(nèi)存的基本分頁存儲管理方式、程序要能正確對“內(nèi)存”進(jìn)行“分配”和“回收” ,能接受用戶的輸入,顯示內(nèi)存的分配情況,并有一定的容錯能力。3、每個人獨(dú)立按時完成實(shí)驗(yàn)內(nèi)容。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)假定內(nèi)存空間已經(jīng)按塊劃分, 目標(biāo)程序無需關(guān)心內(nèi)存塊大小等底層細(xì)節(jié), 只需按算法對內(nèi)存塊進(jìn)行分配即可。程序應(yīng)該實(shí)現(xiàn)以下功能:1 、 內(nèi)存初始化。 假定內(nèi)存塊共有N
3、個, 初始化后的內(nèi)存空間應(yīng)該有一部分已經(jīng)被使用,這可以用隨機(jī)數(shù)或程序內(nèi)部的其他算法完成。2、程序應(yīng)該能接受用戶輸入的進(jìn)程信息,并為之分配內(nèi)存,返回分配結(jié)果(成功或失?。?,注意,此處應(yīng)該考慮到不合法的輸入并進(jìn)行相應(yīng)處理。3、程序能回收用戶指定的進(jìn)程所占用的內(nèi)存空間,因此,程序可能需要為每個進(jìn)程分配一個唯一的進(jìn)程號并給出詳細(xì)的提示信息。4、能直觀合理地顯示內(nèi)存分配情況。5、程序界面友好,便于操作和查看運(yùn)行結(jié)果。實(shí)驗(yàn)結(jié)果E卷pad糅作系茱*差本分,許皤目理皿畫。,,.eie始比結(jié)果如下:個帆在總量:1刖塊,己用空間-8瓶剜余空瓦82塊,進(jìn)程總數(shù); 己他用的內(nèi)存提5:kl 16 25 29 34 4
4、1 3 54 61 G2 儲 75 &2 93 9395 96 9?當(dāng)前內(nèi)存程程I7 7,7 K kvfrn X/小省 IB 23 用 創(chuàng)進(jìn)由大-d住 隆雪出 F:鄰建查退行“功-wsf短進(jìn)灰于,廿卜H.作981 20倉結(jié)查退而避進(jìn)建吏.看一進(jìn)進(jìn)操作菜臬1 - fcjftsg2 -3 告看*存e fiffleff清輸人想要進(jìn)行的操作:?內(nèi)存總量:1蒯氏己用空間:存洋犯使用情況加下; 浩村于1 占月內(nèi)存塊(26iQ1217 18 1$世程號2占月內(nèi)存塊SA: 22 23 2440 42 43262644期剜余空氐37塊,進(jìn)程總數(shù):5 6 7 8 ? 10 12 13 11 152S 3B 31
5、32 33 35 36 37 38 394G 47 48 49 53卷存并 進(jìn)進(jìn)建薯H 7創(chuàng)結(jié)查運(yùn)內(nèi)人己-Lrrp請芻住需2 3H嘉 / 一一 一俞2 3 012 3 3的程的 一行進(jìn)M結(jié)! 要n要更 原置3結(jié)3更大程靜創(chuàng)結(jié)查退城t 7 /二一 一 一俞量組.存總距今內(nèi)存營司內(nèi)占L0小便作2程操膏H 口, 程頡 進(jìn)不 :,號卷存序.己下口 塊況423224 04蓄存序而需 lp出逆手金i 創(chuàng)結(jié)查退進(jìn)a大理建薯出創(chuàng)結(jié)查退43塊,剩余仝S7塊,27 2S 38 31 32 33 35 3645 拓 47 48 49 5H程B0 進(jìn)中 :2晶 乍律 操錄內(nèi)存總量匕1靦塊,己用空電小塊,剩余空間! 8
6、2塊, 當(dāng)前內(nèi)存無進(jìn)程!黃昨莢I:實(shí)驗(yàn)總結(jié)基本分頁的思想是比較簡單的, 而且實(shí)驗(yàn)前老師已經(jīng)給出了 一種可行的數(shù)據(jù)結(jié)構(gòu)來存儲程序中需要用到的數(shù)據(jù), 因此這個實(shí)驗(yàn)在構(gòu)思上是沒有多少難度的。由于程序中主要使用的是數(shù)組,操作起來比較方便,不像前兩個實(shí)驗(yàn)需要用到大量的鏈表操作。在這次試驗(yàn)中,我 主要遇到了以下一些問題:1 、程序剛寫完時,記錄“內(nèi)存”中的進(jìn)程數(shù)的變量和當(dāng)前剩余總內(nèi)存的變量的值不正確,經(jīng)檢查后發(fā)現(xiàn)是在結(jié)束進(jìn)程時沒有同時更新這些數(shù)據(jù)。2、內(nèi)存使用情況應(yīng)該以哪種形式輸出以及輸出哪些信息。最終我選擇了盡可能詳細(xì)地輸出有用信息,通過空格、空行、對齊等手段盡力使輸出格式簡潔美觀。比如,在輸出每個進(jìn)程
7、的內(nèi)存使用情況時, 首先輸出該進(jìn)程占用的總內(nèi)存, 然后以統(tǒng)一的對齊方式依次輸出各個內(nèi)存塊編號。當(dāng)然, 對于不同的模塊輸出的信息也應(yīng)該不一樣, 比如, 內(nèi)存初始化結(jié)束后應(yīng)該輸出哪個內(nèi)存塊被占用了, 否則無法判斷后續(xù)的內(nèi)存分配是否正確, 但在以后查看內(nèi)存使用情況時則不必把所有已占用的內(nèi)存塊輸出,因?yàn)槊總€進(jìn)程都會單獨(dú)把自己占用的內(nèi)存塊顯示出來。為了達(dá)到這種效果,我使用了一個全局變量作為判斷依據(jù),詳細(xì)情況見附錄中代碼。3、程序的容錯性。這是一個容易被忽略的問題。這個程序起初基本沒考慮這個問題,但在后來的調(diào)試過程中, 逐漸加上了一些基本的容錯功能, 比如用戶在結(jié)束某進(jìn)程時, 其輸入的進(jìn)程號可能根本不存在
8、, 這時應(yīng)該給出用戶出錯提示, 并要求用戶重新輸入, 但這里用了一個編程中不太推薦的方式: goto 語句??傮w而言, 這次實(shí)驗(yàn)還是比較順利的, 沒有遇到什么特別難解決的問題。 通過自己編程模擬內(nèi)存分配,我不僅加深了對這種內(nèi)存管理方式的理解,也增強(qiáng)了 C 語言的編程能力。通過這幾次的實(shí)驗(yàn),我感覺手工寫一個幾百行的程序不像以前那么困難了。附錄#include #include #define N 100/ 共有 100 個內(nèi)存塊int processNN+1; /存放每個進(jìn)程的頁表int blockN;/ 內(nèi)存塊狀態(tài)標(biāo)志數(shù)組, 0 :空閑, 1 :使用int blockCount;/ 記錄當(dāng)前內(nèi)
9、存剩余空間int processCount;/ 記錄當(dāng)前進(jìn)程數(shù)bool flag = true;void init();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;
10、i+)processi0 = 0;for (j=1; jN; j+) processij = -1;processCount = 0;printf( 初始化結(jié)果如下: );output();flag = false;void output()printf(n 內(nèi)存總量: %d 塊 , 已用空間: %d 塊 , 剩余空間: %d 塊 , 進(jìn)程總數(shù): %d 個 n, N, N-blockCount, blockCount, processCount);if (flag & blockCount N)printf( 已使用的內(nèi)存塊 (%d) : n, N-blockCount);for (int k
11、=0,count=0; k 0)printf( 內(nèi)存詳細(xì)使用情況如下: n);for (int i=0; i 0)printf( 進(jìn)程號: %d n 占用內(nèi)存塊(%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( 錯誤!進(jìn)程號過大! n);goto loop;if (pages blockCount)return false;blockCount -= pages;processpid0 = pages;fo
12、r (int i=1; i=pages; i+)while (blockk=1 & k100)k+;processpidi = k;blockk = 1;k+;processCount+;return true;bool endProcess()int pid, pages;if (processCount 1)printf( 當(dāng)前內(nèi)存沒有進(jìn)程! nn);return false;printf( 當(dāng)前內(nèi)存中的進(jìn)程有%d 個, 進(jìn)程號為: , processCount);for (int i=0; i 0)printf(%2d , i);putchar(n);printf( 請輸入您要結(jié)束的進(jìn)程號(小于%d) : , N);scanf(%d, &pid);pages = processpid0;if (pages = 0)printf( 對不起!該進(jìn)程不存在! n);return false;for (int j=1; j創(chuàng)建進(jìn)程 n 2 - 結(jié)束進(jìn)程 n 3 -查看內(nèi)存 n 0 -n);printf( 請輸入您要進(jìn)行的操作: );scanf(%d, &choice);switch (choice)if (createProcess()printf( 創(chuàng)建新進(jìn)程成功! nn);elseprintf( 抱
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人借款合同民間
- 2025年鄭州道路運(yùn)輸從業(yè)資格證模擬考試年新版
- 2025年宜春道路貨運(yùn)運(yùn)輸從業(yè)資格證模擬考試
- 小學(xué)二年級數(shù)學(xué)上冊口算
- 2025年河南貨運(yùn)從業(yè)資格證模擬考試題及答案大全
- 2025年河南貨運(yùn)從業(yè)資格證模擬考試0題及答案解析
- 聽評課記錄完整40篇數(shù)學(xué)
- Unit 4 Fun with numbers Lesson 2 Speed up(說課稿)-2024-2025學(xué)年外研版(三起)(2024)三年級上冊
- 2024-2025學(xué)年七年級生物下冊第二章人體的營養(yǎng)第三節(jié)合理營養(yǎng)與食品安全教案新版新人教版
- 2024-2025學(xué)年高中政治課時分層作業(yè)7世界的物質(zhì)性含解析新人教版必修4
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 二零二五年知識產(chǎn)權(quán)共享及收益分成合作協(xié)議3篇
- 北師大版二年級數(shù)學(xué)上冊計(jì)算題專項(xiàng)復(fù)習(xí)大全272
- 屋頂分布式光伏電站設(shè)計(jì)及施工方案
- 南通市2025屆高三第一次調(diào)研測試(一模)生物試卷(含答案 )
- 2024年09月2024渤海銀行天津?yàn)I海新區(qū)分行校園招聘筆試歷年參考題庫附帶答案詳解
- 2024低血糖的急救診斷和治療
- 期末考試成績分析報告課件
- 兒童哮喘的防治與治療
- 學(xué)校安全教師培訓(xùn)
- 金融警示教育案例
評論
0/150
提交評論