版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第頁題目三種存儲管理方式的地址換算 姓名: 學(xué)號: 專業(yè): 學(xué)院: 指導(dǎo)教師: 姚若龍 2018年11月27日【目錄】摘要…………………01引言…………………02算法設(shè)計(jì)……………02程序分析……………04算法分析……………09調(diào)試結(jié)果……………11個(gè)人總結(jié)……………15參考文獻(xiàn)……………15摘要:
操作系統(tǒng)(Operating
System,OS)是方便用戶、管理和控制計(jì)算機(jī)軟硬件資源的系統(tǒng)軟件(或程序集合)。
從用戶角度看,操作系統(tǒng)可以看成是對計(jì)算機(jī)硬件的擴(kuò)充;
從人機(jī)交互方式來看,操作系統(tǒng)是用戶及機(jī)器的接口;從計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu)看,操作系統(tǒng)是一種層次、模塊結(jié)構(gòu)的程序集合,屬于有序分層法,是無序模塊的有序?qū)哟握{(diào)用。操作系統(tǒng)在設(shè)計(jì)方面體現(xiàn)了計(jì)算機(jī)技術(shù)和管理技術(shù)的結(jié)合。操作系統(tǒng)是系統(tǒng)軟件的核心,、它控制程序的執(zhí)行和提供資源分配、調(diào)度、輸入/輸出控制和數(shù)據(jù)管理等任務(wù)。如DOS、UNIX、OS/2和Windows
NT都是得到廣泛使用的操作的系統(tǒng)。
三種管理方式中,分頁系統(tǒng)能有效地提高內(nèi)存利用率,分段系統(tǒng)則能很好地滿足用戶需要,而段頁式系統(tǒng)則是把前兩種結(jié)合起來形成的系統(tǒng)。這種新系統(tǒng)既具有分段系統(tǒng)的便于實(shí)現(xiàn)、分段可共享、易于保護(hù)、可動(dòng)態(tài)鏈接等一系列優(yōu)點(diǎn),有能像分頁系統(tǒng)那樣很好地解決內(nèi)存的外部碎片問題,以及可為各個(gè)分段離散地分配內(nèi)存等問題。
關(guān)鍵字:
分頁方式,分段方式,段頁式方式,操作系統(tǒng)。
一.引言分頁存儲管理是將一個(gè)進(jìn)程的邏輯地址空間分成若干個(gè)大小相等的片,稱為頁面或頁。在分段存儲管理方式中,作業(yè)的地址空間被劃分為若干個(gè)段,每個(gè)段定義了一組邏輯信息。段的長度由相應(yīng)的邏輯信息組的長度決定,因而個(gè)段長度不等。段頁式存儲管理方式是分段和分頁原理的結(jié)合,即先將用戶程序分成若干個(gè)段,再把每個(gè)段分成若干個(gè)頁,并為每一個(gè)段賦予一個(gè)段名。三種存儲管理都有其相應(yīng)的段表、頁表和地址變換機(jī)構(gòu)。
二.三種存儲管理方式地址換算描述
(1)分頁存儲管理方式
在頁式存儲管理方式中地址結(jié)構(gòu)由兩部構(gòu)成,前一部分是頁號,后一部分為頁內(nèi)地址w(位移量),如圖為了實(shí)現(xiàn)從進(jìn)程的邏輯地址到物理地址的變換功能,在系統(tǒng)中設(shè)置了頁表寄存器,用于存放頁表在內(nèi)存中的始址和頁表的長度。當(dāng)進(jìn)程要訪問某個(gè)邏輯地址中的數(shù)據(jù)時(shí),分頁地址變換機(jī)構(gòu)會自動(dòng)地將有效地址(相對地址)分為頁號和頁內(nèi)地址兩部分,再以頁號為索引去檢索頁表。查找操作由硬件執(zhí)行。在執(zhí)行檢索之前,先將頁號及頁表長度進(jìn)行比較,如果頁號大于或等于頁表長度,則表示本次所訪問的地址已超越進(jìn)程的地址空間。于是,這一錯(cuò)誤將被系統(tǒng)發(fā)現(xiàn)并產(chǎn)生一地址越界中斷。若未出現(xiàn)越界錯(cuò)誤,則將頁表始址及頁號和頁表項(xiàng)長度的乘積相加,便得到該表項(xiàng)在頁表中的位置,于是可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。及此同時(shí),再將有效地址寄存器中的頁內(nèi)地址送入物理地址寄存器的塊內(nèi)地址字段中。這樣便完成了從邏輯地址到物理地址的變換。(2)分段存儲管理方式程序通過分段劃分為多個(gè)模塊,如代碼段、數(shù)據(jù)段、共享段:
–可以分別編寫和編譯
–可以針對不同類型的段采取不同的保護(hù)
–可以按段為單位來進(jìn)行共享,包括通過動(dòng)態(tài)鏈接進(jìn)行代碼共享
為了實(shí)現(xiàn)從進(jìn)程的邏輯地址到物理地址的變換功能,在系統(tǒng)中設(shè)置了段表寄存器,用于存放段表始址和段表長度TL。在進(jìn)行地址變換時(shí),系統(tǒng)將邏輯地址中的段號及段表長度TL進(jìn)行比較。若S>TL,表示段號太大,是訪問越界,于是產(chǎn)生越界中斷信號;若未越界,則根據(jù)段表的始址和該段的段號,計(jì)算出該段對應(yīng)段表項(xiàng)的位置,從中讀出該段在內(nèi)存的起始地址,然后,再檢查段內(nèi)地址d是否超過該段的段長SL。若超過,即d>SL,同樣發(fā)出越界中斷信號;若未越界,則將該段的基址及段內(nèi)地址d
相加,即可得到要訪問的內(nèi)存物理地址。
(3)段頁存儲管理方式
在段頁式系統(tǒng)中,為了便于實(shí)現(xiàn)地址變換,需配置一個(gè)段表寄存器,其中存放段表始址和段表長TL。進(jìn)行地址變換時(shí),首先利用段號S,將它及段表長TL進(jìn)行比較。若S>TL,表示未越界,于是利用段表始址和段號來球出該段所對應(yīng)的段表項(xiàng)在段表中的位置,從中得到該段的頁表址,并利用邏輯地址中的段內(nèi)頁號P來獲得對應(yīng)表的頁表項(xiàng)位置,從中讀出該頁所在的物理塊號b,再利用塊號b和頁內(nèi)地址來構(gòu)成物理地址。
(4)段表、頁表、段表地址寄存器。為了進(jìn)行地址轉(zhuǎn)換,系統(tǒng)為每個(gè)作業(yè)建立一個(gè)段表,并且要為該作業(yè)段表中的每一個(gè)段建立一個(gè)頁表。系統(tǒng)中有一個(gè)段表地址寄存器來指出作業(yè)的段表起始地址和段表長度。三.程序模塊intsettable1(intn,intk);//創(chuàng)建頁表intprintTable1(intn,intk);//顯示頁表inttranst(intn,intk,intadd);//分頁地址換算intdefSect(intn,int*t);//創(chuàng)建段表intprintSect(intn);//輸出段表內(nèi)容inttransSect(intn,ints,intd);//進(jìn)行分段地址換算函數(shù)intsetSectTable(intn,intk);//創(chuàng)建段頁式內(nèi)容intprintSectTable(intn,intk);//顯示段頁內(nèi)容inttransSectPage(intn,intk,ints1,ints2,ints3);//段頁式地址換算//定義頁表結(jié)構(gòu)體typedefstructstableinty1;//頁號inty2;//塊號}stable;structstablesetst[512];//建立段表的結(jié)構(gòu)體typedefstructsetsectintd1;//段號intd2;//段長intd3;//基址}setsect;structsetsectsets[512];//定義段表的總長度//建立段頁式內(nèi)的頁表的結(jié)構(gòu)體typedefstructtableintdy1;//頁號intdy2;//塊號}table;//建立段頁式的結(jié)構(gòu)體typedefstructsetAllstructtablec1[512];//定義段內(nèi)頁表的結(jié)構(gòu)體intc2;//段號intc3;//段長intc4;//起始地址}setAll;structsetAllset[512];//定義段頁式的總長度1.分頁系統(tǒng)
intpage(intA,intL)
{
intd,P,kd,i;
intWD;
intPT[256];
for(i=1;i<256;i++)
{
PT[i]=rand()%512;//定義隨機(jī)產(chǎn)生的快號在到之間
}
P=A/L;//頁號等于邏輯地址/頁面大小
d=A%L;//頁內(nèi)地址=邏輯地址%頁面大小
if(P>L)printf("頁號大于頁表長度,越界中斷\n\n");//如果頁號大于頁表長度,輸出越界中段
else{
printf("頁號=邏輯地址/頁面大小=%d,頁內(nèi)地址=邏輯地址%頁面大小=%d\n",P,d);//輸出頁號和頁內(nèi)地址
kd=PT[P];//根據(jù)頁號隨機(jī)產(chǎn)生快號
printf("根據(jù)頁號%d得到塊號%d\n",P,kd);
WD=kd*L+d;//計(jì)算物理地址的公式
printf("物理地址=塊號%d*頁面大小%d+頁內(nèi)地址%d\n",kd,L,d);//輸出物理地址=塊號*頁面大小+頁內(nèi)地址
printf("邏輯地址%d換算后的物理地址為%d\n\n",A,WD);//輸出物理地址的結(jié)果
return(0);
}
}
2.分段系統(tǒng)
intSegment(intsn,intsd)
{
inti,wd;
for(i=0;i<255;i++)
{
st.segf[i]=rand()%255;//定義隨機(jī)產(chǎn)生段首地址為到之間
st.segl[i]=rand()%2048;//定義隨機(jī)產(chǎn)生段長度為到之間
}
if(sn>256)printf("段號%d大于段表長度,越界中斷\n\n",sn);//如果段號大于段表長度,輸出越界中斷
elseif(sd>st.segl[sn])printf("段內(nèi)地址%d大于段長度%d,越界中斷\n",sd,st.segl[sn]);//如果段內(nèi)地址大于段長度,輸出越界中斷
else{
printf("根據(jù)段號找到段首地址%d\n",st.segf[sn]);
printf("物理地址=段首地址%d+段內(nèi)地址%d\n",st.segf[sn],sd);//輸出物理地址=段首地址+段內(nèi)地址
wd=st.segf[sn]+sd;//計(jì)算物理地址的算法
printf("換算得到的物理地址為:%d\n\n",wd);//輸出物理地址
}
return(0);
}
3.段頁系統(tǒng)
intSegPagt(intsn,intpn,intpd)
{
inti,wd;
sp.pl=256;
for(i=0;i<255;i++)
{
sp.pf[i]=sp.segf[i]=rand()%26624;//定義隨機(jī)產(chǎn)生的數(shù)在到之間
sp.ptl[i]=sp.segl[i]=rand()%512;//定義隨機(jī)產(chǎn)生的數(shù)在到之間
sp.pt[i]=rand()%256;//定義隨機(jī)產(chǎn)生的數(shù)在到之間
}
if(sn>256)printf("段號%d大于段表長度,越界中斷\n\n",sn);//如果段號大于段表長度,輸出越界中斷
elseif(pn>sp.ptl[pn])printf("頁號%d大于頁表長度%d,越界中斷\n",pn,sp.ptl[pn]);//如果頁號大于頁表長度,輸出越界中斷
elseif(pd>sp.pl)printf("頁內(nèi)地址%d大于頁面長度%d,中斷\n",pd,sp.pl);//如果頁內(nèi)地址大于頁面長度,輸出中斷
else{
printf("通過段號%d找到頁表首地址%d\n通過頁號%d找到塊號%d\n",sn,sp.pf[sn],pn,sp.pt[pn]);//輸出頁表首地址和塊號
printf("物理地址=頁表首地址%d+快號%d*頁面長度%d+頁內(nèi)地址%d\n",sp.pf[sn],sp.pt[pn],sp.pl,pd);//輸出物理地址=頁表首地址+快號*頁面長度+頁內(nèi)地址
wd=sp.pf[sn]+sp.pt[pn]*sp.pl+pd;//計(jì)算物理地址的公式
printf("物理地址為:%d\n\n",wd);//輸出物理地址的最好結(jié)果
}return(0);
}
4.主函數(shù)
intmain(){
intcode;
intpl,pa,sn,sd,pd,pn;
//constintptl;
inttemp;
do{
printf("地址換算過程\n\n");
printf("1.分頁式地址換算\n");
printf("2.分段式地址換算\n");
printf("3.段頁式地址換算\n");
printf("4.結(jié)束運(yùn)行\(zhòng)n\n");
printf("\n");
printf("請輸入您的選擇:");
scanf("%d",&code);
switch(code)
{
case1:{
printf("注意:請演示設(shè)定頁表長度小于\n");
printf("請輸入換算的邏輯地址:\n");
scanf("%d",&pa);
printf("頁面大?。˙):\n");
scanf("%d",&pl);
page(pa,pl);
}break;
case2:{
printf("請演示設(shè)定段表長度小于\n");
printf("請輸入邏輯地址的段號:\n");
scanf("%d",&sn);
printf("段內(nèi)地址:\n");
scanf("%d",&sd);
Segment(sn,sd);
}break;
case3:{
printf("預(yù)設(shè)定段表長為,頁面大小為\n");
printf("請輸入邏輯地址的段號:\n");
scanf("%d",&sn);
printf("頁號:\n");
scanf("%d",&pn);
printf("頁內(nèi)地址:\n");
scanf("%d",&pd);
SegPagt(sn,pn,pd);
}break;
case4:{}break;
}
}while(code<4);
}
四.三種存儲管理方式的地址變換機(jī)構(gòu)
(1)分頁系統(tǒng)的地址變換機(jī)構(gòu)
為了實(shí)現(xiàn)從進(jìn)程的邏輯地址到物理地址的變換功能,在系統(tǒng)中設(shè)置了頁表寄存器,用于存放頁表在內(nèi)存中的始址和頁表的長度。當(dāng)進(jìn)程要訪問某個(gè)邏輯地址中的數(shù)據(jù)時(shí),分頁地址變換機(jī)構(gòu)會自動(dòng)地將有效地址(相對地址)分為頁號和頁內(nèi)地址兩部分,再以頁號為索引去檢索頁表。查找操作由硬件執(zhí)行。在執(zhí)行檢索之前,先將頁號及頁表長度進(jìn)行比較,如果頁號大于或等于頁表長度,則表示本次所訪問的地址已超越進(jìn)程的地址空間。于是,這一錯(cuò)誤將被系統(tǒng)發(fā)現(xiàn)并產(chǎn)生一地址越界中斷。若未出現(xiàn)越界錯(cuò)誤,則將頁表始址及頁號和頁表項(xiàng)長度的乘積相加,便得到該表項(xiàng)在頁表中的位置,于是可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。及此同時(shí),再將有效地址寄存器中的頁內(nèi)地址送入物理地址寄存器的塊內(nèi)地址字段中。這樣便完成了從邏輯地址到物理地址的變換。頁表始址頁表長度頁表始址頁表長度>頁號(3)頁內(nèi)地址1b頁表物理地址邏輯地址L越界中斷頁表寄存器頁號塊號0123(2)分段系統(tǒng)的地址變換機(jī)構(gòu)為了實(shí)現(xiàn)從進(jìn)程的邏輯地址到物理地址的變換功能,在系統(tǒng)中設(shè)置了段表寄存器,用于存放段表始址和段表長度TL。在進(jìn)行地址變換時(shí),系統(tǒng)將邏輯地址中的段號及段表長度TL進(jìn)行比較。1.若S>TL,表示段號太大,是訪問越界,于是產(chǎn)生越界中斷信號;2.若未越界,則根據(jù)段表的始址和該段的段號,計(jì)算出該段對應(yīng)段表項(xiàng)的位置,從中讀出該段在內(nèi)存的起始地址,然后,再檢查段內(nèi)地址d是否超過該段的段長SL。若超過,即d>SL,同樣發(fā)出越界中斷信號;3.若未越界,則將該段的基址及段內(nèi)地址d相加,即可得到要訪問的內(nèi)存物理地址。段表始址段表始址段表長度>2100越界有效地址段號段長基址0123物理地址(3)
段頁式系統(tǒng)中的地址變換機(jī)構(gòu)在段頁式系統(tǒng)中,為了便于實(shí)現(xiàn)地址變換,需配置一個(gè)段表寄存器,其中存放段表始址和段表長TL。進(jìn)行地址變換時(shí),首先利用段號S,將它及段表長TL進(jìn)行比較。若S>TL,表示未越界,于是利用段表始址和段號來球出該段所對應(yīng)的段表項(xiàng)在段表中的位置,從中得到該段的頁表始址,并利用邏輯地址中的段內(nèi)頁號P來獲得對應(yīng)表的頁表項(xiàng)位置,從中讀出該頁所在的物理塊號b,再利用塊號b和頁內(nèi)地址來構(gòu)成物理地址。段表始址段表始址段表長度段表寄存器>段超長頁號P段號S頁內(nèi)地址0123段表長度頁表始址0123b塊號b塊內(nèi)地址頁表段表五.結(jié)果分析
1)主菜單頁面
2)頁式頁面
選擇1輸入:換算的邏輯地址:120頁面大?。?00輸出:頁號=1頁內(nèi)地址=20塊號=41物理地址=41203)段式頁面
選擇2輸入:換算的邏輯地址的段號:230
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年餐飲配送行業(yè)食品安全責(zé)任合同3篇
- 二零二五版綜合安全解決方案與保安勞務(wù)合同2篇
- 二零二五版搬家服務(wù)與物流數(shù)據(jù)共享合同樣本3篇
- 二零二五版房地產(chǎn)代理銷售合同示范文本解讀3篇
- 二零二五年度水上樂園供水及排水系統(tǒng)承包合同2篇
- 二零二五版影視制作合同:規(guī)定電影制作的流程與投資分配3篇
- 二零二五年度食堂物流配送服務(wù)合同2篇
- 二零二五年特種車輛銷售與操作培訓(xùn)服務(wù)合同3篇
- 二零二五版體育場館承包經(jīng)營合同模板2篇
- 二零二五版寶鋼職工社會保障配套合同3篇
- 第2課《濟(jì)南的冬天》課件-2024-2025學(xué)年統(tǒng)編版語文七年級上冊
- 2024年水利工程高級工程師理論考試題庫(濃縮400題)
- 增強(qiáng)現(xiàn)實(shí)技術(shù)在藝術(shù)教育中的應(yīng)用
- TD/T 1060-2021 自然資源分等定級通則(正式版)
- 《創(chuàng)傷失血性休克中國急診專家共識(2023)》解讀
- 倉庫智能化建設(shè)方案
- 海外市場開拓計(jì)劃
- 供應(yīng)鏈組織架構(gòu)與職能設(shè)置
- 幼兒數(shù)學(xué)益智圖形連線題100題(含完整答案)
- 七上-動(dòng)點(diǎn)、動(dòng)角問題12道好題-解析
- 2024年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
評論
0/150
提交評論