資源簡介
題 目: 模擬設計段式存儲管理中地址轉換
初始條件:
1.預備內容:閱讀操作系統的內存管理章節內容,理解段式存儲管理的思想及相應的分配主存的過程。
2.實踐準備:掌握一種計算機高級語言的使用。
要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)
1.實現段式存儲管理中邏輯地址到物理地址的轉換。能夠處理以下的情形:指定內存的大小,進程的個數,每個進程的段數及段大小; 能檢查地址的合法性,如果合法進行轉換,否則顯示地址非法的原因。
2.設計報告內容應說明:
⑴ 課程設計目的與功能;
⑵ 需求分析,數據結構或模塊說明(功能與框圖);
⑶ 源程序的主要部分;
⑷ 測試用例,運行結果與運行情況分析;
⑸ 自我評價與總結:
i)你認為你完成的設計哪些地方做得比較好或比較出色;
ii)什么地方做得不太好,以后如何改正;
iii)從本設計得到的收獲(在編寫,調試,執行過程中的經驗和教訓);
iv)完成本題是否有其他的其他方法(如果有,簡要說明該方法);
v)對實驗題的評價和改進意見,請你推薦設計題目。
時間安排:
設計安排一周:周1、周2:完成程序分析及設計。
周2、周3:完成程序調試及測試。
周4、周5:驗收、撰寫課程設計報告。

代碼片段和文件信息
#include?
#include“stdlib.h“
#include?“string.h“
#include“stdio.h“
#include?
using?namespace?std;
struct?duan
{
long?capacity;//該段的長度
long?addr;//起始邏輯地址
long?realaddr;//該段實際起始地址
};
struct?duanbiao
{
duan?duans[10];
char?processname[20];?//?進程的名字
int?Isdiaoyong;?????//是否被調用
int?num;????????????//段的數目
long?total;?????????//該進程的總占用量
};
long?neicun=0;
int?duanbiaonum=0;???//段表的數目
long?zhanyong=0;????//?占用的內存
long?baseaddr=0;????
duanbiao?duanbiaos[10];
void?show1(int?);
void?show();
void?diaodu()
{
cout<<“您要調度的進程是:p“;
int?n;
cin>>n;
if(n>duanbiaonum)
cout<<“段表不存在!“< else?if(duanbiaos[n-1].Isdiaoyong==1)
cout<<“操作錯誤,該進程已經被調入到內存!“< else?if(duanbiaos[n-1].total>neicun-zhanyong)
cout<<“內存空間不足,調度不成功!“< else
{
cout<<“下面對進程“< for(int?j=0;j {
cout<<“正在進行第“< duanbiaos[n-1].duans[j].realaddr=duanbiaos[n-1].duans[j].addr+zhanyong;
cout<<“第“<
}
zhanyong=zhanyong+duanbiaos[n-1].total;
duanbiaos[n-1].Isdiaoyong?=1;
cout<<“調度后的結果是:“< show1(n-1);
}
}
void?zhuanhuan()
{
?????int?nij;
cout<<“請輸入進程:p“;
cin>>n;
????if(n>duanbiaonum)
cout<<“進程不存在或沒被調度!“< else?if(duanbiaos[n-1].Isdiaoyong==1)
??{
??cout<<“請輸入段號:“< ??cin>>i;
??cout<<“輸入偏移地址:“< ??cin>>j;
??if(i>duanbiaos[n-1].num)??
??{
??cout<<“段號超出范圍“< ??}
??else?if(j>duanbiaos[n-1].duans[i-1].capacity)?
??{
??cout<<“段內偏移地址超出范圍“< ??}
??else
??{
cout<<“轉換后的地址為“< ????cout< ??}
}
else?cout<<“該進程沒有調入內存“< }
void?apply()
{
printf(“請輸入進程的名字:“);
cin>>duanbiaos[duanbiaonum].processname;
printf(“請輸入該進程的段數:“);
cin>>duanbiaos[duanbiaonum].num;
int?paddr=0;
for(int?j=0;j {
cout<<“進程第“< cin>>duanbiaos[duanbiaonum].duans[j].capacity?;
duanbiaos[duanbiaonum].duans[j].addr=paddr;
paddr=paddr+duanbiaos[duanbiaonum].duans[j].capacity;
}
duanbiaos[duanbiaonum].Isdiaoyong=0;
duanbiaos[duanbiaonum].total=paddr;
duanbiaonum++;
}
void?show1(int?i)
{
cout<<“進程p“< cout<<“名字:“< cout<<“該進程所占用的存儲空間:“< if(duanbiaos[i].Isdiaoyong==0)
cout<<“進程狀態:未調用“< else
cout<<“進程狀態:已調用“< cout<<“____________________________________________“< cout<<“段?號????始址????內存始址????大小“< for(int?j=0;j {
cout<<“?“< if(duanbiaos[i].Isdiaoyong==0)
cout<<“????????????“;
else?
cout< cout< }
cout<<“___________________________________________
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????46080??2010-01-28?10:53??地址轉換\Debug\地址轉換.exe
?????文件?????403552??2010-01-28?10:53??地址轉換\Debug\地址轉換.ilk
?????文件?????584704??2010-01-28?10:53??地址轉換\Debug\地址轉換.pdb
?????文件??????10338??2010-01-28?10:53??地址轉換\地址轉換\Debug\BuildLog.htm
?????文件?????????67??2010-01-28?10:53??地址轉換\地址轉換\Debug\mt.dep
?????文件??????74752??2011-01-20?09:58??地址轉換\地址轉換\Debug\vc60.idb
?????文件?????110592??2011-01-20?09:52??地址轉換\地址轉換\Debug\vc60.pdb
?????文件?????166912??2010-01-28?10:53??地址轉換\地址轉換\Debug\vc90.idb
?????文件?????208896??2010-01-28?10:53??地址轉換\地址轉換\Debug\vc90.pdb
?????文件?????557136??2011-01-20?09:52??地址轉換\地址轉換\Debug\地址.exe
?????文件?????800704??2011-01-20?09:52??地址轉換\地址轉換\Debug\地址.ilk
?????文件?????273068??2011-01-20?09:52??地址轉換\地址轉換\Debug\地址.obj
????I.A....???2026012??2011-01-15?21:30??地址轉換\地址轉換\Debug\地址.pch
?????文件????1106944??2011-01-20?09:52??地址轉換\地址轉換\Debug\地址.pdb
?????文件????????663??2010-01-28?10:53??地址轉換\地址轉換\Debug\地址轉換.exe.em
?????文件????????728??2010-01-28?10:53??地址轉換\地址轉換\Debug\地址轉換.exe.em
?????文件????????621??2010-01-28?10:53??地址轉換\地址轉換\Debug\地址轉換.exe.intermediate.manifest
?????文件???????4063??2011-01-19?15:02??地址轉換\地址轉換\地址.cpp
?????文件???????3379??2011-01-20?09:52??地址轉換\地址轉換\地址.dsp
?????文件????????533??2011-01-20?09:59??地址轉換\地址轉換\地址.dsw
?????文件??????41984??2011-01-20?09:59??地址轉換\地址轉換\地址.ncb
?????文件??????48640??2011-01-20?09:59??地址轉換\地址轉換\地址.opt
?????文件????????744??2011-01-20?09:52??地址轉換\地址轉換\地址.plg
?????文件???????3918??2010-01-26?11:25??地址轉換\地址轉換\地址轉換.vcproj
?????文件???????1427??2010-01-28?15:46??地址轉換\地址轉換\地址轉換.vcproj.WWW-8BF7580FE27.Administrator.user
?????文件????2206720??2010-01-28?15:46??地址轉換\地址轉換.ncb
?????文件????????902??2010-01-26?11:24??地址轉換\地址轉換.sln
????..A..H.??????8704??2010-01-28?15:46??地址轉換\地址轉換.suo
????I.A....????671744??2011-01-19?19:57??地址轉換\孫虎杰OS.doc
?????目錄??????????0??2011-01-20?09:52??地址轉換\地址轉換\Debug
............此處省略6個文件信息
- 上一篇:SX1276無線模塊PCB+代碼
- 下一篇:倉庫管理系統全套文檔
評論
共有 條評論