已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗三 可變分區(qū)存儲管理1目的和要求通過這次實驗,加深對內(nèi)存管理的認識,進一步掌握內(nèi)存的分配、回收算法的思想。2實驗內(nèi)容閱讀教材計算機操作系統(tǒng)第四章,掌握存儲器管理相關(guān)概念和原理。編寫程序模擬實現(xiàn)內(nèi)存的動態(tài)分區(qū)法存儲管理。內(nèi)存空閑區(qū)使用自由鏈管理,采用最壞適應(yīng)算法從自由鏈中尋找空閑區(qū)進行分配,內(nèi)存回收時假定不做與相鄰空閑區(qū)的合并。假定系統(tǒng)的內(nèi)存共640K,初始狀態(tài)為操作系統(tǒng)本身占用64K。在t1時間之后,有作業(yè)A、B、C、D分別請求8K、16K、64K、124K的內(nèi)存空間;在t2時間之后,作業(yè)C完成;在t3時間之后,作業(yè)E請求50K的內(nèi)存空間;在t4時間之后,作業(yè)D完成。要求編程序分別輸出t1、t2、t3、t4時刻內(nèi)存的空閑區(qū)的狀態(tài)。3實驗環(huán)境Windows操作系統(tǒng)、VC+6.0C語言4. 實驗要求:1) 上機前認真使用C語言編寫好程序,采用Visual C+6.0作為編譯環(huán)境;2) 上機時獨立調(diào)試程序3) 根據(jù)具體實驗要求,填寫好實驗報告(包括目的和要求、實驗內(nèi)容、實驗環(huán)境、設(shè)計思想、源程序、實例運行結(jié)果、總結(jié))。5. 設(shè)計思想:本次實驗編寫的程序主要涉及四個函數(shù)start ( ), requireMemo ( ) , freeMemo ( )和past( )。1. start()這個函數(shù)主要用來建立自由鏈隊列和占用區(qū)隊列,這兩個隊列用來分別存放自由節(jié)點和占用節(jié)點。在初始狀態(tài)下,操作系統(tǒng)本身占用64k,它存放在占用區(qū)隊列里,因此自由鏈隊列里只有640-64=576k的空間,且起始地址為64。2. requireMemo()函數(shù)是該程序的核心算法,用來分配內(nèi)存空間,該函數(shù)帶兩個參數(shù),用來表示作業(yè)或進程名的name和表示作業(yè)或者進程名所申請空間的大小的require。由于此算法采用的是最壞適應(yīng)算法,所以自由鏈隊列中的空閑分區(qū)是按其容量從大到小的順序排列的。因此在這里需要分三種情況:自由鏈隊列的第一個空閑分區(qū)的容量大于require;自由鏈隊列的第一個空閑分區(qū)的容量等于require;自由鏈隊列的第一個空閑分區(qū)的容量小于require。在情況下分配完后還需把剩余的部分重新按照容量大小給它在自由鏈隊列里找到新位置。在情況下只需分配,分配即把符合要求的空閑分區(qū)從自由鏈隊列刪除,并且插入到占用區(qū)隊列的尾部。在刪除需注意把原來處于分配分區(qū)的前后鏈接起來,否則隊列將斷掉。在情況下,只需提示用戶無法分配即可。3. freeMemo ()函數(shù)也是該程序的核心算法,是用來回收作業(yè)完成后不需使用的內(nèi)存空間,它根據(jù)從main()函數(shù)中傳遞過來的參數(shù)name,遍尋占用區(qū)隊列,找到與name匹配的作業(yè),把他從占用區(qū)隊列刪除,插入到自由鏈隊列里。在插入時,由于涉及到鄰接區(qū)的合并問題,所以必須先遍尋整個自由鏈隊列,找到是否有從占用區(qū)隊列回收回來的空間鄰接區(qū),如果有,就將他們合并。做完鄰接區(qū)的合并之后,再根據(jù)內(nèi)存空間的大小,將整個自由鏈隊列排序。6. 源程序:1)程序中所定義的數(shù)據(jù)結(jié)構(gòu)和全局變量/程序中自由鏈隊列的結(jié)點類型可描述如下struct freelink int len, address; / len為分區(qū)長度 / address為分區(qū)起始地址 struct freelink *next;/內(nèi)存占用區(qū)用鏈表描述,其結(jié)點類型描述如下struct busylink char name; / 作業(yè)或進程名 name=S 表示OS占用 int len , address; struct busylink *next;/并設(shè)全程量struct freelink *free_head=NULL; /自由鏈隊列(帶頭結(jié)點)隊首指針 struct busylink *busy_head=NULL, /占用區(qū)隊列隊(帶頭結(jié)點)首指針 *busy_tail=NULL; /占用區(qū)隊列隊隊尾指針2)requireMemo()函數(shù)的具體實現(xiàn):/模擬內(nèi)存分配函數(shù)void requireMemo(char name, int require) struct busylink *p; struct freelink *w,*u,*v; if( free_head-next-len=require) if(free_head-next-lenrequire) p=(struct busylink*)malloc(sizeof(struct busylink); p-name=name; p-address=free_head-next-address; p-len=require; p-next=NULL; busy_tail-next=p; busy_tail=p; w=free_head-next; free_head-next=w-next; w-len=w-len-require; w-address=w-address+require; u=free_head; v=free_head-next; while(v!=NULL)u=v; v=v-next; u-next=w; w-next=v;else p=(struct busylink*)malloc(sizeof(struct busylink); p-name=name; p-address=free_head-next-address; p-len=require; p-next=NULL; busy_tail-next=p; busy_tail=p; w=free_head-next; free_head-next=w-next; free(w);else printf(not allocat);3) freeMemo( )函數(shù)的具體實現(xiàn):/模擬內(nèi)存回收函數(shù)void freeMemo(char name) int len,address; struct busylink *p,*q; struct freelink *w,*u,*v; q=busy_head; p= busy_head-next; while(p!=NULL)&(p-name!=name) q=p; p=p-next; if(p=NULL) printf(%c is not exist,name); else if(p=busy_tail) busy_tail=q; q-next=p-next; len=p-len; address=p-address; free(p); w=( struct freelink*) malloc(sizeof(struct freelink); w-len=len; w-address=address; u=free_head; v=free_head-next; while(v!=NULL)&(v-lenw-len) u=v; v=v-next; if(u-address+u-len=w-address)|(w-len+w-address=u-address) /處理w鄰接于u的情況 if(w-address =u-address) w-address=u-address; w-len=u-len+w-len; w-next=v; free(u); if(v!=NULL&(w-address+w-len=v-address)|(v-address+v-len=w-address) /處理v鄰接于w的情況 if(v-addressaddress) w-address=v-address; w-len=w-len+v-len; u-next=v-next; free(v); u=free_head; v=free_head-next; while(v!=NULL)&(v-lenw-len) u=v;v=v-next; w-next=v; u-next =w; 7. 實例運
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省張掖市甘州區(qū)2025屆中考生物對點突破模擬試卷含解析
- 2025至2031年中國高速牙科球軸承行業(yè)投資前景及策略咨詢研究報告
- 2024年清心茶項目可行性研究報告
- 2024年泡沫砼防水隔熱層項目可行性研究報告
- 2024年旋轉(zhuǎn)薄膜烘箱項目可行性研究報告
- 2025至2031年中國沙灘車護板行業(yè)投資前景及策略咨詢研究報告
- 2024年不銹鋼波輪螺釘項目可行性研究報告
- 2025至2031年中國加長馬車螺栓行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國襯氟補償器數(shù)據(jù)監(jiān)測研究報告
- 2025年國航股份飛行總隊校園招聘筆試參考題庫含答案解析
- Other-the-other-others-another等習(xí)題辨析(附答案+解析)
- DZ∕T 0289-2015 區(qū)域生態(tài)地球化學(xué)評價規(guī)范(正式版)
- DB32T 4400-2022《飲用水次氯酸鈉消毒技術(shù)規(guī)程》
- PayPal企業(yè)賬戶注冊流程及申請所需資料
- 工程造價畢業(yè)設(shè)計總結(jié)報告
- 結(jié)腸鏡檢查前腸道準備
- 健康狀況與風險評估智慧樹知到期末考試答案2024年
- 2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修中冊《屈原列傳》檢測卷(含答案)
- 2024貴州燃氣集團股份有限公司招聘筆試參考題庫附帶答案詳解
- (高清版)TDT 1063-2021 國土空間規(guī)劃城市體檢評估規(guī)程
- 基于51單片機的汽車智能雨刮器控制系統(tǒng)設(shè)計-蔡振輝
評論
0/150
提交評論