版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
課程設計(操作系統(tǒng))題目: 分頁存儲管理 PAGEII----PAGE10-目錄TOC\o"1-2"\h\u193721分頁存儲管理問題課程設計 244661.1題目分析 2251671.2數(shù)據(jù)結(jié)構(gòu) 380251.3流程圖 4222171.4實現(xiàn)技術(shù) 5113911.5設計結(jié)論和心得 782532C代碼分析 9275392.1功能說明 16179972.2局部數(shù)據(jù)結(jié)構(gòu) 16119332.3流程圖 161分頁存儲管理問題課程設計題目分析頁式管理是一種內(nèi)存空間存儲管理的技術(shù),頁式管理分為靜態(tài)頁式管理和動態(tài)頁式管理?;驹硎菍⒏鬟M程的虛擬空間劃分成若干個長度相等的頁(page),頁式管理把內(nèi)存空間按頁的大小劃分成片或者頁面(pageframe),然后把頁式虛擬地址與內(nèi)存地址建立一一對應頁表,并用相應的硬件地址變換機構(gòu),來解決離散地址變換問題。頁式管理采用請求調(diào)頁或預調(diào)頁技術(shù)實現(xiàn)了內(nèi)外存存儲器的統(tǒng)一管理。圖1頁的劃分圖2基本頁表示例靜態(tài)分頁管理的第一步是為要求內(nèi)存的作業(yè)或進程分配足夠的頁面。系統(tǒng)通過存儲頁面表、請求表以及頁表來完成內(nèi)存的分配工作。頁表指的是內(nèi)存中的一塊固定存儲區(qū)。頁式管理時每個進程至少有一個頁表。請求表指的是用來確定作業(yè)或進程的虛擬空間的各頁在內(nèi)存中的實際對應位置;另外整個系統(tǒng)有一個存儲頁面表,其描述了物理內(nèi)存空間的分配使用狀況。存儲頁面表有兩種構(gòu)成方法:1、位示圖法2、空閑頁面鏈表法數(shù)據(jù)結(jié)構(gòu)進程數(shù)據(jù)結(jié)構(gòu)typedefstructLNode{intf;//進程號charname[8];//進程名intsize;//進程大小intn;//進程頁數(shù)intye[100];//頁表,下標表示頁號,內(nèi)容表示進程各頁所在物理塊structLNode*next;}LNode,*LinkList;流程圖實現(xiàn)技術(shù)運行結(jié)果如下:1建立進程:2撤銷進程:3內(nèi)存使用情況4進程查看5顯示所有進程占用的物理塊6退出程序設計結(jié)論和心得此次試驗基本是自己獨立完成的,首先在分析問題并把問題轉(zhuǎn)化為編程問題,我覺得個人把握的不是很好,雖然對頁式管理的基本原理理解的比較透徹。但是程序還有不足之處,程序僅僅只能從直觀數(shù)值上來體現(xiàn)頁式管理的隨機分配的特性,并沒有辦法像linux之類操作系統(tǒng)一般真正的進行內(nèi)存分配與回收,這是課后深入研究的一個方面。再有就是程序有些代碼部分是可以復用的,可以把這些重復執(zhí)行的代碼寫成函數(shù),需要用時直接調(diào)用代碼函數(shù)。這次自己的收獲還是不小,首先使我提高了分析問題,并根據(jù)需求轉(zhuǎn)化成相應的程序結(jié)構(gòu)的能力;其次也豐富了自己編寫程序,調(diào)試程序的經(jīng)驗,這使得我編程時可能出現(xiàn)的錯誤的認識,并如何去避免產(chǎn)生了新的認識。在編寫程序的過程中翻閱了大量相關書籍,保證在頁式管理基本原理透徹了解情況下進行設計,事半功倍,讓我認識到磨刀不誤砍柴工的道理總的來說這次試驗比較成功,加深我對頁式管理的理解,同時也提高了自己的編程的能力。編程是個長久的過程,平時要多去動手實踐,去提高自己分析問題、發(fā)現(xiàn)問題、解決問題的能力。路漫漫其修遠兮,吾將上下而求索!2C代碼分析#include"stdio.h"#include"stdlib.h"#include"string.h"intA[100];//內(nèi)存物理塊,0:未使用,非0:已使用intmax=99;//記錄內(nèi)存的物理塊數(shù),值為A[100]最大下標intcount=100;//記錄內(nèi)存未使用物理塊數(shù)intB[10][3];//快表最多十個,B[i][0]表示進程號,B[i][1]表示頁號,B[i][2]表示所在的物理塊inty=0;//快表typedefstructLNode{intf;//進程號charname[8];//進程名intsize;//進程大小intn;//進程頁數(shù)intye[100];//頁表,下標表示頁號,內(nèi)容表示進程各頁所在物理塊structLNode*next;}LNode,*LinkList;//內(nèi)存初始化,快表初始化voidCreatA(){inti=0;for(i=0;i<=max;i++)A[i]=0;for(i=0;i<10;i++){B[i][0]=0;B[i][1]=0;}}//建立新進程voidNewNode(LinkList&L){inti,j;intm,k;LinkListp;LinkListnew_node;new_node=(LinkList)malloc(sizeof(LNode));p=L;printf("\n輸入進程號:");scanf("%d",&new_node->f);j=0;while(p!=NULL&&j<3)//查找進程號是否重復{if(p->f!=new_node->f)p=p->next;else{printf("\n該進程已存在,重新輸入:");scanf("%d",&new_node->f);p=L;//p重新指向頭結(jié)點j++;}}if(j<3){printf("\n輸入進程名稱:");scanf("%s",new_node->name);printf("\n輸入進程大?。?);scanf("%d",&new_node->size);new_node->n=new_node->size/1024;k=new_node->size%1024;//printf("k:%d",k);if(k!=0)new_node->n=new_node->n+1;printf("所需要的頁數(shù)為:");printf("%d\n",new_node->n);if(new_node->n>count){printf("\n內(nèi)存物理塊不足,新建進程失?。?!\n\n");}else{count=count-new_node->n;m=0;//intv;for(i=0;i<=max;i++)if(A[i]==0&&m<new_node->n){A[i]=new_node->f;new_node->ye[m]=i;y=y%10;B[y][0]=A[i];B[y][1]=m;B[y][2]=i;y++;m++;}printf("\n輸出快表:進程號頁號物理塊\n");for(intc=0;c<10;c++){printf("%d%d%d\n",B[c][0],B[c][1],B[c][2]);}if(L==NULL)L=new_node;else{p=L;while(p->next!=NULL){p=p->next;}p->next=new_node;}new_node->next=NULL;}}else{printf("\n錯誤次數(shù)過多,返回主菜單:");}}//回收進程,釋放內(nèi)存voidFreeNode(LinkList&L){LinkListp,q;intz;printf("請輸入要刪除的進程號:");scanf("%d",&z);p=L;//查找進程;用p記錄q=p;while(p!=NULL){if(p->f==z){printf("該進程已刪除");break;}else{q=p;p=p->next;}}if(p==NULL){printf("\n該進程不存在??!\n");}else{for(inti=0;i<p->n;i++)A[p->ye[i]]=0;count=count+p->n;if(p->f==q->f)//要刪除的是頭結(jié)點{L=p->next;}else{q->next=p->next;}}}//顯示所有進程占用的物理塊voidPrintf(LinkListL){printf("\n內(nèi)存物理塊分配情況:\n");LinkListp=L;printf("\n各進程信息:\n");printf("進程號\t\t進程名稱\t進程頁數(shù)\t所用物理塊\n");while(p!=NULL){printf("%d\t\t",p->f);printf("%s\t\t",p->name);printf("%d\t\t",p->n);inti;for(i=0;i<p->n;i++)printf("%d,",p->ye[i]);printf("\n");p=p->next;}}//查看進程voidlook(LinkListL){intz;printf("輸入要查詢的進程號:");scanf("%d",&z);LinkListp=L;while(p!=NULL){if(p->f==z){printf("進程號\t\t進程名稱\t進程頁數(shù)\t所用物理塊\n");printf("%d\t\t",p->f);printf("%s\t\t",p->name);printf("%d\t\t",p->n);inti;for(i=0;i<p->n;i++)printf("%d,",p->ye[i]);printf("\n");break;}elsep=p->next;}if(p==NULL)printf("要查詢的進程不存在\n");}//顯示內(nèi)存塊使用情況,不分進程voidshowit(){inti=0;printf("\n*************************************************************************\n");printf("|內(nèi)存物理塊分配情況|\n");printf("*************************************************************************\n");for(i=0;i<=max;i++){printf("%d\t",A[i]);if(i%10==9)printf("\n");}}intmain(){CreatA();//物理塊初始化printf("\n**********基本分頁存儲管理**********\n");LinkListL=NULL;inti=0;do{printf("\n***********菜單*************\n");printf("1進程裝入及顯示快表\n");printf("2撤銷進程\n");printf("3內(nèi)存使用情況\n");printf("4進程查看\n");printf("5顯示所有進程占用的物理塊\n");printf("6退出程序\n");printf("******************************\n");scanf("請輸入你的選擇(select):");scanf("%d",&i);switch(i){case1:NewNode(L);//建立新的進程Printf(L);//輸出內(nèi)存物理塊分配情況和各進程概況break;case2:FreeNode(L);//刪除某進程Printf(L);//輸出內(nèi)存物理塊分配情況和各進程概況break;case3:showit();//顯示當前內(nèi)存的使用情況break;case4:look(L);break;case5:Printf(L);break;case6:printf("謝謝使用\n\n");exit(0);break;}}while(i!=0);return0;}功能說明1、voidCreatA()//內(nèi)存初始化,快表初始化2、voidNewNode(LinkList&L)//建立新進程3、voidFreeNode(LinkList&L)//回收進程,釋放內(nèi)存4、voidPrintf(LinkListL)//顯示所有進程占用的物理塊5、voidl
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度二零二五版跨境電商進出口代理合同范本2篇
- 二零二五年度醫(yī)療器械采購合同標的數(shù)量與質(zhì)量檢測標準3篇
- 2025年度新型土石方運輸車輛租賃服務合同樣本12篇
- 二零二五年度個人留學借款借條范本及合同規(guī)范3篇
- 二零二五年度建筑裝飾工程項目施工合同
- 二零二五年度建筑安全責任追究措施協(xié)議書3篇
- 海南衛(wèi)生健康職業(yè)學院《園藝植物保護學》2023-2024學年第一學期期末試卷
- 二零二五年家政服務與家庭健康咨詢合同3篇
- 二零二五年度搬家貨運智能化物流解決方案合同3篇
- 按鍵去抖課程設計
- 微型消防站消防員培訓內(nèi)容
- 大一中國近代史綱要期末考試試題及答案
- (完整版)鋼筋加工棚驗算
- 安徽省合肥市廬陽區(qū)2023-2024學年三年級上學期期末數(shù)學試卷
- 概念方案模板
- 西南交大畢業(yè)設計-地鐵車站主體結(jié)構(gòu)設計
- 2024年山東傳媒職業(yè)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 江蘇省南通市崇川區(qū)2023-2024學年三年級上學期期末語文試卷
- crtd植入術(shù)護理查房
- 掃雪鏟冰安全教育培訓
- 人教版三年級下冊必讀書目《中國古代寓言故事》
評論
0/150
提交評論