模擬分頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷_第1頁
模擬分頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷_第2頁
模擬分頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷_第3頁
模擬分頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷_第4頁
模擬分頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、合肥學(xué)院計算機科學(xué)與技術(shù)系實驗報告2009 2010 學(xué)年第 一 學(xué)期課程 操作系統(tǒng)原理實驗名稱模擬分頁式存儲管理中硬件的地址轉(zhuǎn)換和產(chǎn)生缺頁中斷學(xué)生姓名方嵐 王慶紅 王兆娟 何佳麗專業(yè)班級07計本(1)指導(dǎo)教師屠 菁2009 年 11 月一、實驗?zāi)康脑谟嬎銠C系統(tǒng)中,為了提高主存利用率,往往把輔助存儲器(如磁盤)作為主存儲器的擴充,使多道運行的作業(yè)的全部邏輯地址空間總和可以超出主存的絕對地址空間。通過這次實習(xí)理解在分頁式存儲管理中怎樣實現(xiàn)虛擬存儲器。深入了解分頁式存儲管理如何實現(xiàn)地址轉(zhuǎn)換,進一步認識分頁式虛擬存儲管理中如何處理缺頁中斷。二、實驗內(nèi)容編寫程序完成頁式虛擬存儲管理中地址轉(zhuǎn)換過程和模擬

2、缺頁中斷的處理。實驗具體包括:首先對給定的地址進行地址轉(zhuǎn)換工作,若發(fā)生缺頁則先進行缺頁中斷處理,然后再進行地址轉(zhuǎn)換;最后編寫主函數(shù)對所作工作進程測試。假定主存64KB,每個主存塊1024字節(jié),作業(yè)最大支持到64KB,系統(tǒng)中每個作業(yè)分得主存塊4塊。三、實驗步驟1. 概要設(shè)計分頁式存儲管理中地址轉(zhuǎn)換過程很簡單,假定主存塊的大小為2n字節(jié),主存大小為2m'字節(jié)和邏輯地址m位,則進行地址轉(zhuǎn)換時,首先從邏輯地址中的高m-n位中取得頁號,然后根據(jù)頁號查頁表,得到塊號,并將塊號放入物理地址的高m'-n位,最后從邏輯地址中取得低n位放入物理地址的低n位就得到了物理地址,過程如圖1所示。頁 號

3、頁內(nèi)地址塊 號 塊內(nèi)地址頁號 塊號物理地址邏輯地址m' n n-1 0m n n-1 0圖1 頁式存儲管理系統(tǒng)地址轉(zhuǎn)換示意圖地址轉(zhuǎn)換是由硬件完成的,實驗中使用軟件程序模擬地址轉(zhuǎn)換過程,模擬地址轉(zhuǎn)換的流程圖如圖2.7所示(實驗中假定主存64KB,每個主存塊1024字節(jié),即n=10,m'=16,物理地址中塊號6位、塊內(nèi)地址10位;作業(yè)最大64KB,即m=16,邏輯地址中頁號6位、頁內(nèi)地址10位)。在分頁式虛擬存儲管理方式中,作業(yè)信息作為副本放在磁盤上,作業(yè)執(zhí)行時僅把作業(yè)信息的部分頁面裝入主存儲器,作業(yè)執(zhí)行時若訪問的頁面在主存中,則按上述方式進行地址轉(zhuǎn)換,若訪問的頁面不在主存中,則產(chǎn)

4、生一個“缺頁中斷”,由操作系統(tǒng)把當(dāng)前所需的頁面裝入主存儲器后,再次執(zhí)行時才可以按上述方法進行地址轉(zhuǎn)換。頁式虛擬存儲管理方式中頁表除頁號和該頁對應(yīng)的主存塊號外,至少還要包括存在標(biāo)志(該頁是否在主存),磁盤位置(該頁的副本在磁盤上的位置)和修改標(biāo)志(該頁是否修改過)。缺頁處理過程簡單闡述如下: 根據(jù)當(dāng)前執(zhí)行指令中邏輯地址中的頁號查頁表,判斷該頁是否在主存儲器中,若該頁標(biāo)志為“0”,形成缺頁中斷。中斷裝置通過交換PSW讓操作系統(tǒng)的中斷處理程序占用處理器; 操作系統(tǒng)處理缺頁中斷的方法就是查主存分配表,找一個空閑主存塊;若無空閑塊,查頁表,選擇一個已在主存的頁面,把它暫時調(diào)出主存。若在執(zhí)行過程中該頁被修

5、改過,則需將該頁信息寫回磁盤,否則不必寫回; 找出該頁的磁盤位置,啟動磁盤讀出該頁信息,把磁盤上讀出的信息裝入第2步找到的主存塊,修改頁表中該頁的標(biāo)志為“1”; 由于產(chǎn)生缺頁中斷的那條指令沒有執(zhí)行完,所以頁面裝入后應(yīng)重新執(zhí)行被中斷的指令。當(dāng)重新執(zhí)行該指令時,由于要訪問的頁面已在主存中,所以可正常執(zhí)行。關(guān)于第步的查找裝入新頁面的主存塊的處理方式,不同系統(tǒng)采用的策略可能有所不同,這里采用局部置換算法,就是每個作業(yè)分得一定的主存塊,只能在分得的主存塊內(nèi)查找空閑塊,若無空閑主存塊,則從該作業(yè)中選擇一個頁面淘汰出主存。2. 詳細設(shè)計(1).分頁式虛擬存儲系統(tǒng)是把作業(yè)信息的副本存放在磁盤上,當(dāng)作業(yè)被選中時

6、,可把作業(yè)的開始幾頁裝入主存且啟動執(zhí)行。為此,在為作業(yè)建立頁表時,應(yīng)說明哪些頁已在主存,哪些頁尚未裝入主存,頁表的格式如表1: 表1 作業(yè)頁表格式頁號 標(biāo)志主存塊號在磁盤上的位置主要數(shù)據(jù)結(jié)構(gòu)設(shè)計struct info /頁表 bool flag; 標(biāo)志 /用來表示對應(yīng)頁是否已經(jīng)裝入主存,標(biāo)志位1,則表示頁已經(jīng)在主存,標(biāo)志位0,則表示該頁尚未裝入主存。long block; 主存塊號 /用來表示已經(jīng)裝入主存的頁所站的塊號long disk; 磁盤位置即磁盤塊號/用來指出作業(yè)副本的每一頁被存放在磁盤上的位置 pagelistSizeOfPage; /定義結(jié)構(gòu)體 用來存儲頁表信息 (2).作業(yè)執(zhí)行時

7、,指令中的邏輯地址指出了參加運算的操作數(shù)存放的頁號和單元號,硬件的地址轉(zhuǎn)換機構(gòu)按頁號查頁表,若該頁對應(yīng)標(biāo)志為“1”,則表示該頁已在主存,根據(jù)關(guān)系式: 絕對地址塊號×塊長單元號計算出欲訪問的主存單元地址。若訪問的頁對應(yīng)標(biāo)志為“0”,則表示該頁不在主存,這時硬件發(fā)“缺頁中斷”信號,由操作系統(tǒng)按該頁在磁盤上的位置,把該頁信息從磁盤讀出裝入主存后再重新執(zhí)行這條指令。(3).設(shè)計一個“地址轉(zhuǎn)換”函數(shù)work_ex()來模擬硬件的地址轉(zhuǎn)換工作。當(dāng)訪問的頁在主存時,則形成絕對地址。當(dāng)訪問的頁不在主存時,則輸出“*該頁頁號”,表示產(chǎn)生了一次缺頁中斷。(4).假定主存的每塊長度為128字節(jié);現(xiàn)有一個共

8、七頁的作業(yè),在函數(shù)init_ex()中對頁表初始化,將第0頁到第3頁中的內(nèi)容裝入主存中,其余三頁未裝入主存;該作業(yè)的頁表如表2: 表2 主存中頁表格式015011118012219013311021400225002360121如果作業(yè)依次為執(zhí)行的指令序列,作業(yè)執(zhí)行指令序列表,如表3: 表3 作業(yè)執(zhí)行指令序列表操作頁號單元號操作頁號單元號0070移位405310505023×2015存1037存3021取2 078取0056+40016040存6084(5).在主函數(shù)int main()中調(diào)用函數(shù)work_ex()和函數(shù)init_ex(),實現(xiàn)地址的轉(zhuǎn)換和產(chǎn)生缺頁中斷。3. 算法設(shè)計

9、函數(shù)名 int main() 功能 實現(xiàn)地址轉(zhuǎn)換。流程圖如:圖2所示否是結(jié)束取下一條指令有后繼指令?是輸出絕對地址形成絕對地址否輸出“*”頁號表示發(fā)生缺頁中斷該頁標(biāo)志1?查頁表取指令中訪問的頁號取一條指令開 始圖2 地址轉(zhuǎn)換的主程序流程圖4.結(jié)果顯示:地址轉(zhuǎn)換在主存,輸出絕對地址;不在,輸出*。如圖2所示: 圖2 地址轉(zhuǎn)換 4、 參考資料:計算機操作系統(tǒng)湯子瀛 哲鳳屏 湯小丹 編著 西安電子科技大學(xué)出版社C+程序設(shè)計 吳乃陵 李海文 編著 高等教育出版社C語言程序設(shè)計 譚浩強 編著 清華大學(xué)出版社五、實驗總結(jié)我們的題目是模擬分頁式存儲管理中硬件的地址轉(zhuǎn)換和產(chǎn)生缺頁中斷,主要的思路和步驟就是根據(jù)

10、流程圖走下來的。在這個實驗中由于所學(xué)的知識有限,為了理解在分頁式存儲管理中怎樣實現(xiàn)虛擬存儲器,做了很多知識準(zhǔn)備工作,參考了相關(guān)書籍資料,對怎樣產(chǎn)生和處理缺頁中斷有了一定的了解。在對題目深刻了解后我們就開始編程,在編程中我們遇到許多語法錯誤和語意錯誤,因此,在調(diào)試上運用了大量的時間。但最后在老師和同學(xué)的幫助下,問題都得到了解決,收獲是很大的。而且我在編程是也掌握了不少編程技巧。并在這次的編寫過程中,培養(yǎng)了團結(jié)合作的精神,大家分工合作,共同討論,最終完成了這次設(shè)計。通過做本次實驗,我們對分頁式虛擬存儲管理系統(tǒng)和缺頁中斷有了更深入的認識。在分頁式虛擬存儲系統(tǒng)中是把作業(yè)信息的副本存放在磁盤上。而在請求

11、分頁系統(tǒng)中,每當(dāng)所要訪問的頁面不在內(nèi)存時,便產(chǎn)生一次缺頁中斷,請求OS將所缺之頁調(diào)入內(nèi)存。本次實驗即是做模擬分頁式存儲管理中硬件的地址轉(zhuǎn)換和缺頁中斷。通過編寫模擬硬件的地址轉(zhuǎn)換工作的程序,不僅加深了我們對絕對地址如何轉(zhuǎn)換的理解,同時也鍛煉了我們的編程能力。6、 附錄#include <stdio.h>#include <string.h>#define SizeOfPage 100#define SizeOfBlock 128#define M 4struct info/頁表bool flag; /標(biāo)志long block;/塊號long disk;/在磁盤上的位置pa

12、gelistSizeOfPage;long PM;void init_ex() /把頁表初始化pagelist0.flag=1;pagelist0.block=5;pagelist0.disk=011;pagelist1.flag=1;pagelist1.block=8;pagelist1.disk=012;pagelist2.flag=1;pagelist2.block=9;pagelist2.disk=013;pagelist3.flag=1;pagelist3.block=1;pagelist3.disk=021;pagelist4.flag=0;pagelist4.disk=022;pagelist5.flag=0;pagelist5.disk=023;pagelist6.flag=0;pagelist6.disk=121;void work_ex() bool stop=0; /stop=1,結(jié)束程序;stop=0,繼續(xù)程序long p,q;char s128;doprintf("請輸入指令的頁號和單元號:n");if(scanf("%ld%ld",&p,&q)!=2) /輸入的數(shù)不是兩個數(shù)scanf("%s",s);if (strcmp(s,"exit"

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論