




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、題 目 三種存儲管理方式的地址換算 姓 名: 學 號: 專 業: 學 院: 指導教師: 姚若龍 2018年11月27日【目錄】摘要01引言02算法設計02程序分析04算法分析09調試結果11個人總結15參考文獻15摘要: 操作系統(Operating System,OS)是方便用戶、管理和控制計算機軟硬件資源的系統軟件(或程序集合)。從用戶角度看,操作系統可以看成是對計算機硬件的擴充;從人機交互方式來看,操作系統是用戶與機器的接口;從計算機的系統結構看,操作系統是一種層次、模塊結構的程序集合,屬于有序分層法,是無序模塊的有序層次調用。操作系統在設計方面體現了計算機技術和管理
2、技術的結合。操作系統是系統軟件的核心,、它控制程序的執行和提供資源分配、調度、輸入/輸出控制和數據管理等任務。如DOS、UNIX、OS/2和Windows NT都是得到廣泛使用的操作的系統。 三種管理方式中,分頁系統能有效地提高內存利用率,分段系統則能很好地滿足用戶需要,而段頁式系統則是把前兩種結合起來形成的系統。這種新系統既具有分段系統的便于實現、分段可共享、易于保護、可動態鏈接等一系列優點,有能像分頁系統那樣很好地解決內存的外部碎片問題,以及可為各個分段離散地分配內存等問題。 關鍵字: 分頁方式,分段方式,段頁式方式,操作系統
3、。一.引言分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁。在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。段的長度由相應的邏輯信息組的長度決定,因而個段長度不等。段頁式存儲管理方式是分段和分頁原理的結合,即先將用戶程序分成若干個段,再把每個段分成若干個頁,并為每一個段賦予一個段名。三種存儲管理都有其相應的段表、頁表和地址變換機構。二三種存儲管理方式地址換算描述(1)分頁存儲管理方式在頁式存儲管理方式中地址結構由兩部構成,前一部分是頁號,后一部分為頁內地址w(位移量),如圖 為了實現從進程的邏輯地址到物理地址的變換功能,在系
4、統中設置了頁表寄存器,用于存放頁表在內存中的始址和頁表的長度。當進程要訪問某個邏輯地址中的數據時,分頁地址變換機構會自動地將有效地址(相對地址)分為頁號和頁內地址兩部分,再以頁號為索引去檢索頁表。查找操作由硬件執行。在執行檢索之前,先將頁號與頁表長度進行比較,如果頁號大于或等于頁表長度,則表示本次所訪問的地址已超越進程的地址空間。于是,這一錯誤將被系統發現并產生一地址越界中斷。若未出現越界錯誤,則將頁表始址與頁號和頁表項長度的乘積相加,便得到該表項在頁表中的位置,于是可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。與此同時,再將有效地址寄存器中的頁內地址送入物理地址寄存器的塊內地址字段中。
5、這樣便完成了從邏輯地址到物理地址的變換。(2)分段存儲管理方式程序通過分段劃分為多個模塊,如代碼段、數據段、共享段: 可以分別編寫和編譯 可以針對不同類型的段采取不同的保護 可以按段為單位來進行共享,包括通過動態鏈接進行代碼共享為了實現從進程的邏輯地址到物理地址的變換功能,在系統中設置了段表寄存器,用于存放段表始址和段表長度TL。在進行地址變換時,系統將邏輯地址中的段號與段表長度TL進行比較。若S>TL,表示段
6、號太大,是訪問越界,于是產生越界中斷信號;若未越界,則根據段表的始址和該段的段號,計算出該段對應段表項的位置,從中讀出該段在內存的起始地址,然后,再檢查段內地址d是否超過該段的段長SL。若超過,即d>SL,同樣發出越界中斷信號;若未越界,則將該段的基址與段內地址d相加,即可得到要訪問的內存物理地址。 (3)段頁存儲管理方式 在段頁式系統中,為了便于實現地址變換,需配置一個段表寄存器,其中存放段表始址和段表長TL。進行地址變換時,首先利用段號S,將它與段表長TL進行比較。若S>TL,表示未越界,于是利用段表始址和段號來球出該段所對應的段表項在段表中的位置,從中得到
7、該段的頁表址,并利用邏輯地址中的段內頁號P來獲得對應表的頁表項位置,從中讀出該頁所在的物理塊號b,再利用塊號b和頁內地址來構成物理地址。(4)段表、頁表、段表地址寄存器。為了進行地址轉換,系統為每個作業建立一個段表,并且要為該作業段表中的每一個段建立一個頁表。系統中有一個段表地址寄存器來指出作業的段表起始地址和段表長度。 三程序模塊int settable1(int n,int k);/創建頁表 int printTable1(int n,int k);/顯示頁表 int transt(int n,int k,int add);/分頁地址換算 int defSect(int n,in
8、t *t);/創建段表 int printSect(int n);/輸出段表內容 int transSect(int n,int s,int d);/進行分段地址換算函數 int setSectTable(int n,int k);/創建段頁式內容 int printSectTable(int n,int k);/顯示段頁內容 int transSectPage(int n,int k,int s1,int s2,int s3);/段頁式地址換算 /定義頁表結構體 typedef struct stable int y1;/頁號 int y2;/塊號 stable; struct stable
9、 setst512; /建立段表的結構體 typedef struct setsect int d1;/段號 int d2;/段長 int d3;/基址 setsect; struct setsect sets512;/定義段表的總長度 /建立段頁式內的頁表的結構體 typedef struct table int dy1;/頁號 int dy2;/塊號 table; /建立段頁式的結構體 typedef struct setAll struct table c1512;/定義段內頁表的結構體 int c2;/段號 int c3;/段長 int c4;/起始地址 setAll; struct
10、setAll set512;/定義段頁式的總長度 1.分頁系統int page(int A,int L) int d,P,kd,i; int WD; int PT256; for(i=1;i<256;i+) PTi=rand() %512;/定義隨機產生的快號在到之間 P=A/L;/頁號等于邏輯地址/頁面大小 d=A%L;/頁內地址=邏輯地址頁面大小 if(P>L) printf("頁號大于頁表長度,越界中斷nn");/如果頁號大于頁表長度,輸出越界中段 else printf("頁號=邏輯地址/頁面大小=%d,頁內地址=邏輯地址頁面大小=%dn&qu
11、ot;,P,d);/輸出頁號和頁內地址 kd=PTP;/根據頁號隨機產生快號 printf("根據頁號%d得到塊號%dn",P,kd); WD=kd*L+d;/計算物理地址的公式 printf("物理地址=塊號%d*頁面大小%d+頁內地址%dn",kd,L,d);/輸出物理地址=塊號*頁面大小+頁內地址 printf("邏輯地址%d換算后的物理地址為%dnn",A,WD);/輸出物理地址的結果 return (0); 2.分段系統 int Segment(int sn,int sd)int i,wd;for(i=0;i<255;
12、i+)st.segfi=rand()%255;/定義隨機產生段首地址為到之間st.segli=rand()%2048;/定義隨機產生段長度為到之間if(sn>256) printf("段號%d大于段表長度,越界中斷nn",sn);/如果段號大于段表長度,輸出越界中斷else if(sd>st.seglsn) printf("段內地址%d大于段長度%d,越界中斷n",sd,st.seglsn);/如果段內地址大于段長度,輸出越界中斷elseprintf("根據段號找到段首地址%dn",st.segfsn); printf(&
13、quot;物理地址=段首地址%d+段內地址%dn",st.segfsn,sd); /輸出物理地址=段首地址+段內地址 wd=st.segfsn+sd;/計算物理地址的算法 printf("換算得到的物理地址為:%dnn",wd);/輸出物理地址 return (0);3.段頁系統int SegPagt(int sn,int pn,int pd)int i,wd;sp.pl=256;for(i=0;i<255;i+)sp.pfi=sp.segfi=rand()%26624;/定義隨機產生的數在到之間sp.ptli=sp.segli=rand()%512;/定義
14、隨機產生的數在到之間sp.pti=rand()%256;/定義隨機產生的數在到之間if(sn>256) printf("段號%d大于段表長度,越界中斷nn",sn);/如果段號大于段表長度,輸出越界中斷else if(pn>sp.ptlpn) printf("頁號%d大于頁表長度%d,越界中斷n",pn,sp.ptlpn);/如果頁號大于頁表長度,輸出越界中斷else if(pd>sp.pl) printf("頁內地址%d大于頁面長度%d,中斷n",pd,sp.pl);/如果頁內地址大于頁面長度,輸出中斷else p
15、rintf("通過段號%d找到頁表首地址%dn通過頁號%d找到塊號%dn",sn,sp.pfsn,pn,sp.ptpn);/輸出頁表首地址和塊號 printf("物理地址=頁表首地址%d+快號%d*頁面長度%d+頁內地址%dn",sp.pfsn,sp.ptpn,sp.pl,pd);/輸出物理地址=頁表首地址+快號*頁面長度+頁內地址 wd=sp.pfsn+sp.ptpn*sp.pl+pd;/計算物理地址的公式 printf("物理地址為:%dnn",wd);/輸出物理地址的最好結果return (0);4.主函數 int m
16、ain() int code; int pl,pa,sn,sd,pd,pn; /const int ptl ; int temp; do printf("-地址換算過程-nn"); printf(" 1.分頁式地址換算n"); printf(" 2.分段式地址換算n"); printf(" 3.段頁式地址換算n"); printf(" 4.結束運行nn"); printf("-n"); printf("請輸入您的選擇:"); scanf("%d&
17、quot;,&code); switch(code) case 1: printf("注意:請演示設定頁表長度小于n"); printf("請輸入換算的邏輯地址:n"); scanf("%d",&pa); printf("頁面大小(B):n");scanf("%d",&pl); page(pa,pl); break; case 2: printf("請演示設定段表長度小于n"); printf("請輸入邏輯地址的段號:n"); sc
18、anf("%d",&sn); printf("段內地址:n"); scanf("%d",&sd); Segment(sn,sd); break; case 3: printf("預設定段表長為,頁面大小為n"); printf("請輸入邏輯地址的段號:n"); scanf("%d",&sn); printf("頁號:n"); scanf("%d",&pn); printf("頁內地址:n&quo
19、t;); scanf("%d",&pd); SegPagt(sn,pn,pd); break; case 4:break; while (code<4);四三種存儲管理方式的地址變換機構(1)分頁系統的地址變換機構為了實現從進程的邏輯地址到物理地址的變換功能,在系統中設置了頁表寄存器,用于存放頁表在內存中的始址和頁表的長度。當進程要訪問某個邏輯地址中的數據時,分頁地址變換機構會自動地將有效地址(相對地址)分為頁號和頁內地址兩部分,再以頁號為索引去檢索頁表。查找操作由硬件執行。在執行檢索之前,先將頁號與頁表長度進行比較,如果頁號大于或等于頁表長度,則表示本次所訪
20、問的地址已超越進程的地址空間。于是,這一錯誤將被系統發現并產生一地址越界中斷。若未出現越界錯誤,則將頁表始址與頁號和頁表項長度的乘積相加,便得到該表項在頁表中的位置,于是可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。與此同時,再將有效地址寄存器中的頁內地址送入物理地址寄存器的塊內地址字段中。這樣便完成了從邏輯地址到物理地址的變換。頁表始址頁表長度>頁號(3)頁內地址1b頁表物理地址邏輯地址L越界中斷頁表寄存器頁號塊號0123(2)分段系統的地址變換機構為了實現從進程的邏輯地址到物理地址的變換功能,在系統中設置了段表寄存器,用于存放段表始址和段表長度TL。在進行地址變換時,系統將邏輯
21、地址中的段號與段表長度TL進行比較。1.若S>TL,表示段號太大,是訪問越界,于是產生越界中斷信號;2.若未越界,則根據段表的始址和該段的段號,計算出該段對應段表項的位置,從中讀出該段在內存的起始地址,然后,再檢查段內地址d是否超過該段的段長SL。若超過,即d>SL,同樣發出越界中斷信號;3.若未越界,則將該段的基址與段內地址d相加,即可得到要訪問的內存物理地址。段表始址段表長度>2100越界有效地址段號段長基址0123物理地址(3) 段頁式系統中的地址變換機構在段頁式系統中,為了便于實現地址變換,需配置一個段表寄存器,其中存放段表始址和段表長TL。進行地址變換時,首先利用段號S,將它與段表長TL進行比較。若S>TL,表示未越界,于是利用段表始址和段號來球出該段所對應的段表項在段表中的位置,從中得到該段的頁表始址,并利用邏輯地址中的段內頁號P來獲得對應表的頁表項位置,從中讀出該頁所在的物理塊號b,再利用塊號b和頁內地址來構成物理地址。段表始址段表長度段表寄存器>段超長頁號P段號S頁內地址0123段表長度頁表始址0123b塊號b塊內地址頁表段表五.結果分析1)主菜單頁面 2)頁式頁面選擇 1輸入:換算的邏輯地址:120 頁面大小:100輸出:頁號=1 頁內地址=20塊號=41物理地址=4120 3)段式頁面 選擇 2輸入:換算的邏輯地址的段號
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 閥式瓶坯模具項目投資可行性研究分析報告(2024-2030版)
- 2025屆虎門外國語學校高一化學第二學期期末檢測模擬試題含解析
- 2025年中國平頭自卸汽車行業市場深度研究及投資戰略規劃建議報告
- 2025年中國衡器芯片行業市場調查研究及發展戰略規劃報告
- 2025年中國新一代信息技術行業發展前景預測及投資戰略研究報告
- 多協議廣域網接口卡項目投資可行性研究分析報告(2024-2030版)
- (立項備案申請模板)彩鋁項目可行性研究報告參考范文
- 2025年中國大飛機行業市場深度分析及“十四五”規劃戰略分析報告
- 安全環保管理規章制度
- 湛江市興達安全生產培訓有限公司
- (新版)金屬非金屬礦山尾礦作業取證考試題庫(含答案)
- 隋唐史學習通超星期末考試答案章節答案2024年
- 血糖監測課件小講課
- 汽車車身密封條設計指南
- 光伏工程勞務承包合同協議書
- DBJT13-24-2017 福建省建筑幕墻工程質量驗收規程
- 學校會議審批管理制度
- 課內文言文翻譯句句落實-2024-2025學年統編版語文九年級上冊
- 【中美家庭教育差異比較探究(英文)(論文)】
- 國防動員工作計劃
- 小學生科技模型課程設計
評論
0/150
提交評論