




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計任務書及成績評定課題名稱基本分頁存儲管理系統(tǒng)的設(shè)計、題目的目的和要求: 鞏固和加深對操作系統(tǒng)(OS)原理的理解,初步掌握操作系統(tǒng)組成模塊和應用接口的使用方法,提高進行工程設(shè)計和系統(tǒng)分析的能力;通過選做上面的課題,實現(xiàn)OS最基本模塊的管理功能,重點放在數(shù)據(jù)結(jié)構(gòu)設(shè)計、文檔規(guī)范化和程序設(shè)計風格。、設(shè)計進度及完成情況日 期內(nèi) 容6.16-7.18選取參考書,查閱有關(guān)文獻資料,完成課程設(shè)計說明書內(nèi)容1部分。 完成課程設(shè)計說明書內(nèi)容2-4部分6.196.23創(chuàng)建相關(guān)數(shù)據(jù)結(jié)構(gòu),錄入源程序6.246.25調(diào)試程序并記錄調(diào)試中的問題,完成課程設(shè)計說明書第5部分。6.26系統(tǒng)測試,演示設(shè)計成果,考核成績。6.27整理課程設(shè)計說明書,上午11時,由學習委員交課程設(shè)計說明書(計算機科學系9#213或直接交給指導教師)、主要參考文獻及資料1 湯子贏等. 計算機操作系統(tǒng)(第二版).西安電子科技大學出版社,2006.82 馮耀霖等. 操作系統(tǒng),西安電子科技大學出版社.19923 譚耀銘. 操作系統(tǒng).中國人民大學出版社,2003.4 4 任愛華 操作系統(tǒng)實用教程 清華大學出版社,2001 5 張堯?qū)W 史美林 計算機操作系統(tǒng)教程(第2版) 清華大學出版社2000、成績評定:設(shè)計成績: (教師填寫)指導老師: (簽字)二八 年 六 月二十七日目 錄第一章 概述1第二章 系統(tǒng)分析2第三章 系統(tǒng)設(shè)計3第四章 程序設(shè)計流程圖或N-S圖5第五章 源程序清單8第六章 調(diào)試過程中的問題及系統(tǒng)測試情況14第七章 結(jié)束語16第一章 概述課程設(shè)計是實踐性教學中的一個重要環(huán)節(jié),它以某一課程為基礎(chǔ),可以涉及和課程相關(guān)的各個方面,是一門獨立于課程之外的特殊課程。課程設(shè)計是讓同學們對所學的課程更全面的學習和應用,理解和掌握課程的相關(guān)知識。計算機操作系統(tǒng)一門重要的專業(yè)課,是開發(fā)操作系統(tǒng)和軟件系統(tǒng)的理論和應用基礎(chǔ)。存儲器是計算機系統(tǒng)的重要組成部分。近幾年,雖然存儲器的容量一直在不斷的擴大,價格也越來越便宜,但是仍然不能滿足現(xiàn)代軟件發(fā)展的需要。因此存儲器仍是一種寶貴的資源。因此盡可能的方便用戶和提高主存儲器的使用效率,使主存儲器在成本、速度和規(guī)模之間獲得較好的權(quán)衡是存儲器管理的主要任務。存儲器管理應具有內(nèi)存分配、內(nèi)存保護、地址映射和內(nèi)存擴充等功能。本設(shè)計的目的是熟悉存貯器管理系統(tǒng)的設(shè)計方法;加深對所學基本分頁存儲管理方案的了解;設(shè)計地址變換機構(gòu),并將變換后的結(jié)果顯示出來。模擬環(huán)境應盡量接近真實。此次設(shè)計利用了大量數(shù)據(jù)結(jié)構(gòu)中關(guān)于鏈表的相關(guān)知識,對以前所學的數(shù)據(jù)結(jié)構(gòu)相關(guān)內(nèi)容進行了回顧,從而掌握的更加深刻。另外,對存儲器的結(jié)構(gòu)和工作過程也有了直觀而深刻的理解。語言方面,本次課程設(shè)計運用了C+語言。原因是通過分析認為只有C+和C語言比較合適,而C+在結(jié)構(gòu)上更加清晰,也比較容易表達,并且代碼較少。通過代碼編寫和結(jié)構(gòu)表達,對C+的內(nèi)容有了更進一步的掌握??傊?,對所學的數(shù)據(jù)結(jié)構(gòu)和C+知識進行了很好的回顧和掌握,收獲很大。第二章 系統(tǒng)分析本設(shè)計的目的是熟悉存貯器管理系統(tǒng)的設(shè)計方法;加深對所學各種存貯器管理方案的了解;要求采用一些常用的存貯器分配算法,設(shè)計一個存貯器管理系統(tǒng)模擬系統(tǒng)并調(diào)試運行。模擬環(huán)境應盡量接近真實。因此根據(jù)設(shè)計要求,本存儲器管理系統(tǒng)利用最佳適應算法和首次適應算法實現(xiàn)了一定大小的分區(qū)分配和分區(qū)回收,并以次來模擬存儲器管理。本系統(tǒng)模擬實現(xiàn)可變分區(qū)管理,存儲管理主要是對存儲空間的分配和回收,當有用戶申請空間時,進行分配,空間不用了,及時回收,以免造成游離空間,使得該空間再也無法使用,可變分區(qū)管理的分配和回收功能類似于visual c+的reclaim()和free()的功能,分區(qū)收回算法,才用首次使用算法和最佳適應算法。在多道程序環(huán)境下,要使程序運行,必須先為之創(chuàng)建進程。而創(chuàng)建進程的第一步是將程序和數(shù)據(jù)裝入內(nèi)存。存儲器實現(xiàn)的功能主要是內(nèi)存分配等功能,本模擬系統(tǒng)所要實現(xiàn)的就是將進程的程序和數(shù)據(jù)裝入內(nèi)存(物理塊)。具體需要實現(xiàn)的功能如下:1、退出,輸入0然后按任意鍵退出;2、分配主存,輸入作業(yè)名和作業(yè)所需長度,回到主菜單;3、回收主存,選擇后輸入要回收的作業(yè)名,有則顯示回收,無則顯示無該作業(yè);4、顯示主存,能夠顯示分配的頁面的狀態(tài)信息,包括地址范圍和讀入的內(nèi)存物理塊號(未讀入與讀入的區(qū)別顯示),頁面是否在主存中。第三章 系統(tǒng)設(shè)計3.1 數(shù)據(jù)結(jié)構(gòu)的設(shè)計#define n 10 /*假定系統(tǒng)允許的最大作業(yè)數(shù)為n,假定模擬實驗中n值為10*/ #define m 10 /*假定系統(tǒng)允許的空閑區(qū)表最大為m,假定模擬實驗中m值為10*/3.1.1已分配區(qū)表的設(shè)計struct float address; /*已分配分區(qū)起始地址*/ float length; /*已分配分區(qū)長度,單位為字節(jié)*/ int flag; /*已分配區(qū)表登記欄標志,用0表示空欄目*/ used_tablen; /*已分配區(qū)表*/3.1.2 空閑區(qū)表的設(shè)計struct float address; /*空閑區(qū)起始地址*/ float length; /*空閑區(qū)長度,單位為字節(jié)*/ int flag; /*空閑區(qū)表登記欄標志,用0表示空欄目,用1表示未分配*/ free_tablem; /*空閑區(qū)表*/3.2 存儲器分配算法設(shè)計本次設(shè)計采用最佳適應分配算法:allocate(char J,float xk)分配分區(qū)給用戶,在這個過程中,每當分配一個分區(qū)給用戶時,可能造成空閑區(qū)表和已分配區(qū)表。分配時從空閑區(qū)表中找到一塊可以容納要分配的空間的最小空閑區(qū)。然后分配,空閑分區(qū)被分配時,如果分配后剩余的空間小于minisize,則將該空閑分區(qū)全部分配,若大于minisize,則切割分配。分配時修改相應的空閑區(qū)表和已分配區(qū)表。如果沒有找到可以容納要分配的空間的空閑區(qū)就返回“無可用空閑區(qū)”信息。3.4存儲器回收算法設(shè)計最佳適應策略的結(jié)點是按照空閑區(qū)大小從小到大排列的,可分4種情況:(1) 上鄰空閑區(qū),下鄰空閑區(qū),三項合并;(2) 上鄰空閑區(qū),下鄰非空閑區(qū),與上鄰合并;(3) 上鄰非空閑區(qū),下鄰為空閑區(qū),與下鄰合并;(4) 上下鄰均為非空閑區(qū),回收區(qū)域直接填入。3.4 主函數(shù)模塊的設(shè)計首先提供一個功能菜單,接受用戶的輸入;然后根據(jù)用戶的輸入,分別提供相應的功能,功能有以下幾個:0-退出1-分配主存2-回收主存3-顯示主存。用戶輸入數(shù)字后執(zhí)行相應模塊。第四章 程序設(shè)計流程圖或N-S圖4.1主程序流程圖:4.2分配函數(shù)流程圖:4.3回收函數(shù)流程圖:第五章 源程序清單#include#include #include#include#include#define n 10 /*假定系統(tǒng)允許的最大作業(yè)數(shù)為n,假定模擬實驗中n值為10*/ #define m 10 /*假定系統(tǒng)允許的空閑區(qū)表最大為m,假定模擬實驗中m值為10*/ #define minisize 100 /*空閑分區(qū)被分配時,如果分配后剩余的空間小于minisize,則將該空閑分區(qū)全部分配,若大于minisize,則切割分配*/struct float address; /*已分配分區(qū)起始地址*/ float length; /*已分配分區(qū)長度,單位為字節(jié)*/ int flag; /*已分配區(qū)表登記欄標志,用0表示空欄目*/ used_tablen; /*已分配區(qū)表*/ struct float address; /*空閑區(qū)起始地址*/ float length; /*空閑區(qū)長度,單位為字節(jié)*/ int flag; /*空閑區(qū)表登記欄標志,用0表示空欄目,用1表示未分配*/ free_tablem; /*空閑區(qū)表*/ void allocate(char J,float xk) /*給J作業(yè),采用最佳分配算法分配xk大小的空間*/ int i,k; float ad; k=-1; for(i=0;i=xk&free_tablei.flag=1) if(k=-1|free_tablei.lengthfree_tablek.length) k=i; if(k=-1)/*未找到可用空閑區(qū),返回*/ printf(無可用空閑區(qū)n); return; /*找到可用空閑區(qū),開始分配:若空閑區(qū)大小與要求分配的空間差小于minisize大小,則空閑區(qū)全部分配;若空閑區(qū)大小與要求分配的空間差大于minisize大小,則從空閑區(qū)劃出一部分分配*/ if(free_tablek.length-xk=minisize) free_tablek.flag=0; ad=free_tablek.address; xk=free_tablek.length; else free_tablek.length=free_tablek.length-xk; ad=free_tablek.address+free_tablek.length; /*修改已分配區(qū)表*/ i=0; while(used_tablei.flag!=0&i=n) /*無表目可填寫已分配分區(qū)*/ printf(無表目填寫已分分區(qū),錯誤n); /*修正空閑區(qū)表*/ if(free_tablek.flag=0) /*前面找到的是整個空閑分區(qū)*/ free_tablek.flag=1; else /*前面找到的是某個空閑分區(qū)的一部分*/ free_tablek.length=free_tablek.length+xk; return; else /*修改已分配表*/ used_tablei.address=ad; used_tablei.length=xk; used_tablei.flag=J; return; /*主存分配函數(shù)結(jié)束*/ void reclaim(char J) /*回收作業(yè)名為J的作業(yè)所占主存空間*/ int i,k,j,s,t; float S,L; /*尋找已分配表中對應登記項*/ s=0; while(used_tables.flag!=J|used_tables.flag=0)&s=n)/*在已分配表中找不到名字為J的作業(yè)*/ printf(找不到該作業(yè)n); return; /*修改已分配表*/ used_tables.flag=0; /*取得歸還分區(qū)的起始地址S和長度L*/ S=used_tables.address; L=used_tables.length; j=-1;k=-1;i=0; /*尋找回收分區(qū)的空閑上下鄰,上鄰表目k,下鄰表目j*/ while(im&(j=-1|k=-1) if(free_tablei.flag=1) if(free_tablei.address+free_tablei.length=S)k=i;/*找到上鄰*/ if(free_tablei.address=S+L)j=i;/*找到下鄰*/ i+; if(k!=-1) if(j!=-1) /* 上鄰空閑區(qū),下鄰空閑區(qū),三項合并*/ free_tablek.length=free_tablej.length+free_tablek.length+L; free_tablej.flag=0; else /*上鄰空閑區(qū),下鄰非空閑區(qū),與上鄰合并*/ free_tablek.length=free_tablek.length+L; else if(j!=-1) /*上鄰非空閑區(qū),下鄰為空閑區(qū),與下鄰合并*/ free_tablej.address=S; free_tablej.length=free_tablej.length+L; else /*上下鄰均為非空閑區(qū),回收區(qū)域直接填入*/ /*在空閑區(qū)表中尋找空欄目*/ t=0; while(free_tablet.flag=1&t=m)/*空閑區(qū)表滿,回收空間失敗,將已分配表復原*/ printf(主存空閑表沒有空間,回收空間失敗n); used_tables.flag=J; return; free_tablet.address=S; free_tablet.length=L; free_tablet.flag=1; return; /*主存回收函數(shù)結(jié)束*/ int main( ) int i,a; float xk; char J; /*空閑分區(qū)表初始化:*/ free_table0.address=10240; /*起始地址假定為10240*/ free_table0.length=10240; /*長度假定為10240,即10k*/ free_table0.flag=1; /*初始空閑區(qū)為一個整體空閑區(qū)*/ for(i=1;im;i+) free_tablei.flag=0; /*其余空閑分區(qū)表項未被使用*/ /*已分配表初始化:*/ for(i=0;in;i+) used_tablei.flag=0; /*初始時均未分配*/ while(1) printf(選擇功能項:n0-退出n1-分配主存n2-回收主存n3-顯示主存)n); printf(選擇功項(0-3):n); scanf(%d,&a); switch(a) case 0: exit(0); /*a=0程序結(jié)束*/ case 1: /*a=1分配主存空間*/ printf(輸入作業(yè)名J和作業(yè)所需長度xk: ); scanf(%*c%c%f,&J,&xk); allocate(J,xk); /*分配主存空間*/ break; case 2: /*a=2回收主存空間*/ printf(輸入要回收分區(qū)的作業(yè)名); scanf(%*c%c,&J); reclaim(J); /*回收主存空間*/ break; case 3: /*a=3顯示主存情況*/ /*輸出空閑區(qū)表和已分配表的內(nèi)容*/ printf(輸出空閑區(qū)表:n起始地址 分區(qū)長度 標志n); for(i=0;im;i+) printf(%6.0f%9.0f%6dn,free_tablei.address,free_tablei.length, free_tablei.flag); printf( 按任意鍵,輸出已分配區(qū)表n); getch(); printf( 輸出已分配區(qū)表:n起始地址 分區(qū)長度 標志n); for(i=0;in;i+) if(used_tablei.flag!=0) printf(%6.0f%9.0f%6cn,used_tablei.address,used_tablei.length, used_tablei.flag); else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司技術(shù)服務服務合同
- 品牌營銷策略制定與實施手冊指南
- 項目成本預算表格化版
- 2025福建南平市延平區(qū)區(qū)屬國有企業(yè)社會招聘30人筆試參考題庫附帶答案詳解
- 2025年貝瓷餐具項目合作計劃書
- 2025年新興際華集團校園招聘526人(蘭州有崗)筆試參考題庫附帶答案詳解
- 2025國網(wǎng)湖南省電力有限公司高校畢業(yè)生招聘約835人(第一批)筆試參考題庫附帶答案詳解
- 2024年汽車尾氣凈化設(shè)備項目投資申請報告代可行性研究報告
- 2025年上半年宜昌市猇亭區(qū)事業(yè)單位招考(39人)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年定西市煙草專賣局(公司)社會招聘筆試易考易錯模擬試題(共500題)試卷后附參考答案
- 小學生春耕教學課件
- 2024年南信語文數(shù)學試卷(含答案)
- 2025年個人投資合同電子版模板
- 車輛掛靠協(xié)議書
- 2025年湖南交通職業(yè)技術(shù)學院單招職業(yè)適應性測試題庫1套
- 2017年公務員多省聯(lián)考《申論》真題(吉林甲級卷)及參考答案(含詳細解析)
- 一年級下冊健康成長教案
- 電力系統(tǒng)老化問題及其隱患解決方案研究報告發(fā)布
- 2025年江西建設(shè)職業(yè)技術(shù)學院高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 鹽酸安非他酮合成工藝優(yōu)化-洞察分析
- 2021年考研英語一真題
評論
0/150
提交評論