版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 課程名稱:操作系統(tǒng)B 實驗項目:操作系統(tǒng)實驗 實驗地點: 逸夫樓402、逸夫樓502教室 專業(yè)班級: 軟件1415班 學(xué)生姓名: 朱偉學(xué)號:2014005960 指導(dǎo)教師: 張俊花 2016年11月28日 實驗一幾種操作系統(tǒng)的界面 一、目的和要求 (一)目的 本實驗的目的是使學(xué)生熟悉12種操作系統(tǒng)的界面,在熟練使用機(jī)器的基礎(chǔ)上,能了解各種操作命令 和系統(tǒng)調(diào)用在系統(tǒng)中的大致工作過程。也就是通過操作系統(tǒng)的外部特征,逐步深入到操作系統(tǒng)的內(nèi)部實質(zhì) 內(nèi)容中去。 (二)要求 1. 能熟練的在1 2種操作系統(tǒng)的環(huán)境下工作,學(xué)會使用各種命令,熟悉系統(tǒng)提供的各種功能,主動 而有效地使用計算機(jī)。 2. 熟悉系統(tǒng)
2、實用程序的調(diào)用方法和各種系統(tǒng)調(diào)用模塊的功能和作用 二、實驗內(nèi)容 在某種操作系統(tǒng)的環(huán)境下建立、修改、運行、打印源程序和結(jié)果,最后撤消一個完整的程序。 提示:可按下述步驟進(jìn)行 1.編寫一個完整的源程序,通過編輯命令送入機(jī)器,建立源程序文件; 2 .編譯該源文件,建立相應(yīng)的目標(biāo)文件; 3. 編譯有錯時,再用編輯命令修改源文件,消除全部詞法和語法錯誤; 4. 連接目標(biāo)文件,形成可執(zhí)行文件; 5. 執(zhí)行該文件,得到結(jié)果; 6. 打印輸出源程序和運行結(jié)果; 7. 撤消本次實驗中形成的所有文件。 三、實驗步驟及程序流程圖 1、按住 Windows鍵+R輸入notepad回車調(diào)出記事本。 2、編輯一個java
3、程序選擇另存為F:。 class deitio public static void niain(String args) ( System, out. print C軟件 1415班 朱偉 2014005960); 3、按住Windows鍵+R輸入cmd回車。 4、進(jìn)入 Dos界面輸入 F:。 5、輸入dir查看java文件,使用javac命令進(jìn)行編輯 F:dir 驅(qū)祕H F屯蔚卷是新加卷 卷的序列號是B6Cfi-E63D Pf的目錄 201 五、實驗心得 java小程序熟悉DOS命令的使用。實驗中 這次實驗是在win7操作系統(tǒng)下進(jìn)行的,通過編譯連接一個 用到的DOST具: dir :列出當(dāng)
4、前控制臺所在的路徑下的所有文件以及文件夾。 javac :編譯。 這次實驗,通過查找一些常用的DOS命令,進(jìn)一步熟悉了 DOS命令的使用,了解了部分操作命令和系 統(tǒng)調(diào)用在系統(tǒng)中的工作過程。 實驗二進(jìn)程調(diào)度程序設(shè)計 一、目的和要求 (一) 目的 進(jìn)程是操作系統(tǒng)最重要的概念之一,進(jìn)程調(diào)度是操作系統(tǒng)的主要內(nèi)容,本實驗要求學(xué)生獨立地用高 級語言編寫一個進(jìn)程調(diào)度程序,調(diào)度算法可任意選擇或自行設(shè)計,本實驗可使學(xué)生加深對進(jìn)程調(diào)度和各種 調(diào)度算法的理解。 (二) 要求 1. 設(shè)計一個有幾個進(jìn)程并發(fā)執(zhí)行的進(jìn)程調(diào)度程序,每個進(jìn)程由一個進(jìn)程控制塊(PCB)表示,進(jìn)程控制 塊通常應(yīng)包括下述信息:進(jìn)程名,進(jìn)程優(yōu)先數(shù),進(jìn)
5、程需要運行的時間,占用CPU的時間以及進(jìn)程的狀態(tài)等, 且可按照調(diào)度算法的不同而增刪。 2. 調(diào)度程序應(yīng)包含2 3種不同的調(diào)度算法,運行時可以任選一種,以利于各種方法的分析和比較。 3. 系統(tǒng)應(yīng)能顯示或打印各進(jìn)程狀態(tài)和參數(shù)的變化情況,便于觀察。 二、示例 1.題目 本程序可選用優(yōu)先數(shù)法或簡單輪轉(zhuǎn)法對五個進(jìn)程進(jìn)行調(diào)度。每個進(jìn)程處于運行R(run)、就 緒W(wait)和完成F(finish) 三種狀態(tài)之一,并假定起始狀態(tài)都是就緒狀態(tài)W 為了便于處理,程序中進(jìn)程的運行時間以時間片為單位計算。各進(jìn)程的優(yōu)先數(shù)或輪轉(zhuǎn)時間片數(shù)、以 及進(jìn)程需要運行的時間片數(shù),均由偽隨機(jī)數(shù)發(fā)生器產(chǎn)生。 進(jìn)程控制塊結(jié)構(gòu)如表 2-
6、1所示: 表 2-1PCB 進(jìn)程標(biāo)識符 鏈指針 優(yōu)先數(shù)/輪轉(zhuǎn)時間片數(shù) 占用CPU寸間片數(shù) 進(jìn)程所需時間片數(shù) 進(jìn)程狀態(tài) 進(jìn)程控制塊鏈結(jié)構(gòu)如圖 2-1所示: RUNHEAD TAIL 圖2-1進(jìn)程控制塊鏈結(jié)構(gòu) 其中:RU當(dāng)前運行進(jìn)程指針; HEA進(jìn)程就緒鏈鏈?zhǔn)字羔? TAIL 進(jìn)程就緒鏈鏈尾指針。 2.算法與框圖 程序框圖如圖2-2所示。 開始 輸入調(diào)度算法alog 生成并按優(yōu)先數(shù)大小 排列進(jìn)程控制塊鏈 生成并按進(jìn)入次序 排列進(jìn)程控制塊鏈 工 1 鏈?zhǔn)走M(jìn)程投入運行 鏈?zhǔn)走M(jìn)程投入運行 priority round robin alog=priority/round robin? *- 時間片到,進(jìn)程
7、時間片 數(shù)減1,優(yōu)先數(shù)減3 時間片到,進(jìn)程時間片數(shù) 減1,占用CPU時間加1 否 進(jìn)程時 間片數(shù) 為0? 是 優(yōu)先數(shù) 大于鏈 首進(jìn)程? 是 Y否 撤消該進(jìn)程 運行進(jìn)程退岀,按 優(yōu)先數(shù)插入進(jìn)程鏈 從鏈?zhǔn)兹∫粋€ 進(jìn)程投入運行 進(jìn)程隊列空? 否 是 運行進(jìn)程退岀, 排到進(jìn)程鏈尾部 占用處 理機(jī)時 間片到? 否 是 撤消該進(jìn)程 進(jìn)程時 間片數(shù) 為0? 否 是 結(jié)束 否 是 結(jié)束 從鏈?zhǔn)兹∫粋€ 進(jìn)程投入運行 進(jìn)程隊列空? 圖2-2進(jìn)程調(diào)度框圖 (1) 優(yōu)先數(shù)法。 進(jìn)程就緒鏈按優(yōu)先數(shù)大小從大到小排列,鏈?zhǔn)走M(jìn)程首先投入運行。每過一個時間片, 運行進(jìn)程所需運行的時間片數(shù)減1,說明它已運行了一個時間片,優(yōu)先數(shù)也
8、減3。理由是該進(jìn)程如果在一個時 間片中完成不了,優(yōu)先級應(yīng)降低一級。接著比較現(xiàn)行進(jìn)程和就緒鏈鏈?zhǔn)走M(jìn)程的優(yōu)先數(shù),如果仍是現(xiàn)行進(jìn)程高 或者相同,就讓現(xiàn)行進(jìn)程繼續(xù)運行,否則,調(diào)度就緒鏈鏈?zhǔn)走M(jìn)程投入運行。原運行進(jìn)程再按其優(yōu)先數(shù)大小插 入就緒鏈,且改變它們對應(yīng)的進(jìn)程狀態(tài),直至所有進(jìn)程都運行完各自的時間片數(shù)。 (2) 簡單輪轉(zhuǎn)法。進(jìn)程就緒鏈按各進(jìn)程進(jìn)入的先后次序排列,鏈?zhǔn)走M(jìn)程首先投入運行。進(jìn)程每次占用 處理機(jī)的輪轉(zhuǎn)時間按其重要程度登入進(jìn)程控制塊中的輪轉(zhuǎn)時間片數(shù)記錄項(相應(yīng)于優(yōu)先數(shù)法的優(yōu)先數(shù)記錄項 位置)。每過一個時間片,運行進(jìn)程占用處理機(jī)的時間片數(shù)加1,然后比較占用處理機(jī)的時間片數(shù)是否與該 進(jìn)程的輪轉(zhuǎn)時間片
9、數(shù)相等,若相等說明已到達(dá)輪轉(zhuǎn)時間,應(yīng)將現(xiàn)運行進(jìn)程排到就緒鏈末尾,調(diào)度鏈?zhǔn)走M(jìn)程占 用處理機(jī),且改變它們的進(jìn)程狀態(tài),直至所有進(jìn)程完成各自的時間片。 三、實驗代碼: #include #include #define furthest 5 struct process/*PCB STRUCTURE*/ int id; int priority; int cputime; int alltime; cha r state; int next; prochainfurthest - 1; int procnum; int rand(); int algo; int run, head, tail, j;
10、 void print(); void insert( int q); void insert2(); void timesch(); void init(); void prisch(); int main() /*MAIN PROGRAM*/ agan: printf( type the algorithm is (1:RR,2:PRIO):); scanf( %d, if (algo = 2) init(); prisch(); else if (algo = 1) printf( output of round robin.n ); init(); timesch(); else pr
11、intf( try again,pleasen ); goto agan; for (j = 1; j = 40; j+) printf( = ); printf( nn ); for (j = 1; j = 40; j+) printf( = ); printf( nn ); printf( system finishedn); getchar(); void print() /*PRINT THE RUNNING PROCESS,WAITING QUEUE AND PCB SEQUENCE LIST*/ int k, p; for (k = 1; k = 40; k+) printf( =
12、 ); printf( nrunning proc. ); printf( waiting queue. ); printf( n %d , prochainrun.id); p = head; while (p != 0) printf( %5d, p); p = prochainp.next; printf( n ); for (k = 1; k = 40; k+) printf( = ); printf( n ); printf( id ); for (k = 1; kfurthest + 1; k+) printf( %5d, prochaink.id); printf( n ); p
13、rintf( priority ); for (k = 1; kfurthest + 1; k+) printf( %5d, prochaink.priority); printf( n ); printf( cputime ); for (k = 1; kfurthest + 1; k+) printf( %5d, prochaink.cputime); printf( n ); printf( alltime ); for (k = 1; kfurthest + 1; k+) printf( %5d, prochaink.alltime); printf( n ); printf( sta
14、te ); for (k = 1; kfurthest + 1; k+) printf( %5c , prochaink.state); printf( n ); printf( next ); for (k = 1; kfurthest + 1; k+) printf( %5d, prochaink.next); printf( n ); void insert( int q)/*INSERT A PROCESS*/ int p, s; p = head; s = prochainhead.next; while (prochainq.priorityprochains.priority)
15、s = prochains.next; prochainp.next = q; prochainq.next = s; void insert2()/*PUT A PROCESS ONTO THE TAIL OF THE QUEUE*/ prochaintail.next = run; tail = run; prochainrun.next = 0; void init() /*CREATE A WAITING QUEUE*/ int i; head = 0; if (algo = 2) for (i = 1; ifurthest + 1; i+) prochaini.id = i; pro
16、chaini.priority = (rand() + 11) % 41; prochaini.cputime = 0; prochaini.alltime = (rand() + 1) % 7; prochaini.state = W ; prochaini.next = 0; if (prochaini.priorityprochainhead.priority) else prochaini.next = head; head = prochaini.id; else for (i = 1; ifurthest + 1; i+) prochaini.id = i; prochaini.p
17、riority = (rand() + 1) % 3 + 1; prochaini.cputime = 0; prochaini.alltime = (rand() + 1) % 7; prochaini.state = W ; prochaini.next = (i + 1) % (furthest + 1); head = 1; tail = furthest; prochainfurthest.next = 0; run = head; prochainrun.state = R ; head = prochainhead.next; prochainrun.next = 0; prin
18、t(); void prisch()/*THE PROCESS WITH PRIO ALGORITHM*/ while (run != 0) prochainrun.cputime += 1; prochainrun.priority -= 3; prochainrun.alltime -= 1; if (prochainrun.alltime = 0) prochainrun.state = F ; prochainrun.next = 0; if (head != 0) run = head; prochainrun.state =R ; head = prochainhead.next;
19、 else prochain0.id = prochainrun.id; run = 0; else if (prochainrun.priority prochainhead.priority) insert(run); run = head; prochainrun.state =R ; head = prochainhead.next; print(); void timesch() /*THE PROCESS WITH RR ALRORITHM*/ while (run != 0) prochainrun.alltime -= 1; prochainrun.cputime += 1;
20、if (prochainrun.alltime = 0) prochainrun.state = F ; prochainrun.next = 0; if (head != 0) run = head; prochainrun.state =R ; head = prochainhead.next; else prochain0.id = prochainrun.id; run = 0; else if (prochainrun.cputime = prochainrun. priority) prochainrun.cputime = 0; insert2(); run = head; pr
21、ochainrun.state = R ; head = prochainhead.next; print(); 四、實驗結(jié)果: 1) D:da ma2.cppDebug2: cop.exe id 1 2 3 4 5 priority 1 3 1 2 3 cputine 1 3 1 119553 alltine 0 0 0 0-19559 state F F F F R nex t 0 0 0 0 0 S SS SS running proc waiting queue 5 =ZZ id 1 2 3 4 5 priority 1 3 1 2 3 cputine 1 3 1 119554 all
22、tine 0 0 0 0-19560 state F F F F R next 0 0 0 0 0 running proc. wait ing queue 5 id 1 2 3 4 5 priority 1 3 1 2 3 cputine 1 3 1 119555 alltine 0 0 0 0-19561 state F F F F R next 0 0 0 0 0 s zs ss running proc waiting queue. 5 id 1 2 3 4 = 5 priority 1 3 1 2 3 cputine 1 3 1 119556 alltine 0 0 0 0-1956
23、2 state F F F F R next 0 0 0 0 0 running proc 5 wait ing queue. 二;tda ria.2-l.ppDebug j-1 cpp.exe cputime 1 3 1 1748856 all七imE 0 0 0 0-748862 state F F F F R next 0 0 0 0 0 running proc. 5 wa it ing queue id 1 2 3 4 5 priority 1 3 1 2 3 cputime 1 3 1 1748857 all tine 0 0 0 0-748863 state F F F F R
24、next 0 0 0 0 0 Funming proc 5 wait in gf queue. id 1 2 3 4 5 pr ioritv 1 3 1 2 3 cput ime 1 3 1 1748858 alltime 0 6 0 0-748864 state F F F F R next 0 0 0 0 0 running proc. 5 wait ing queue. id 1 2 3 4 5 priority 1 3 1 2 3 cputzime 1 3 1 1748859 allt ine 0 0 0 0-748865 state F F F F R next 0 0 0 0 ru
25、nning proc wait ingf queue. 5 id 1 2 3 4 5 pr iority 1 3 1 2 3 cput ime 1 3 1 1748860 alltime 0 0 0 0-748866 state F F F F R id 1 2 3 4 5 priority 5 13 24 6-3450 cputine 2 6 3 1 1162 alltine 0 0 0 0-1162 state F F F F R next 0 0 0 0 0 running proc. 5 waiting queue. id 1 s Mm 2 3 4 5 priority 5 13 24
26、 6-3453 cputine 2 6 3 1 1163 alltine 0 0 0 0-1163 state F F F F R next 0 0 asmm 0 0 OHB W 0 running proc. 5 waiting queue id 1 2 3 4 5 priority 5 13 24 6-3456 cputine 2 6 3 1 1164 alltine 0 0 0 0-1164 state F F F F R next 0 0 0 0 0 running proc. waiting queue. 5 id 1 MM 2 3 4 5 priority 5 13 24 6-34
27、59 cputine 2 6 3 1 1165 allt ine 0 0 0 0-1165 state F F F F R next 0 0 MM 0 0 0 running proc. waiting queue. 5 J D:daim a2-l.cppDebug2-lxpp.exe state F F F F R next 0 0 0 0 0 runniingr proc. ua it in si Queue * 5 id 1 2 3 4 5 pr ioi*it5i 5 13 24 6-15132 cputine 2 E 3 1 5056 allt line 0 0 0 0-5056 st
28、ate F F F F R next 0 0 0 0 0 Funniingr pi*oc 5 ua itinr queue, id 1 2 3 4 5 priority 5 13 24 6-15135 cputine 2 6 3 1 5057 allt ine 0 0 0 0-5057 state F F F F R next 0 0 0 0 0 riinninsF proc ua :Lt in si queue * id 1 2 3 4 5 pr ioF iti 5 13 24 6-1513B cputine 2 6 3 1 5058 alltime 0 0 0 0-5058 state F
29、 F P F R next 0 0 0 0 0 Funningr pi*oc w E 嵋 it inq queue - id 1 2 3 4 5 pr iorit 5 13 24 6-15141 cputine 2 6 3 1 5059 alltime 0 0 0 O-5B59 F F F F R next 0 0 e 0 0 五、實驗心得: 通過本次實驗,加深了對進(jìn)程調(diào)度和調(diào)度算法的理解。 CPU分 對于簡單輪轉(zhuǎn)法,既將全部的進(jìn)程按照進(jìn)入的先后順序排成一個就緒隊列,設(shè)置每隔一段時間后將 配給隊列中新的隊首進(jìn)程,這樣就可以保證就緒隊列中的所有進(jìn)程在確定的時間段內(nèi)都能獲得一個時間片 的處理機(jī)時間
30、。 而對于優(yōu)先數(shù)法,本次試驗中使用了動態(tài)優(yōu)先數(shù)對進(jìn)程進(jìn)行排序,即就緒隊列按優(yōu)先數(shù)從大到小進(jìn)行 排列,而各進(jìn)程的優(yōu)先數(shù)隨著進(jìn)程的推進(jìn)而改變,以達(dá)到獲取更好的調(diào)度性能的目的。 簡單輪轉(zhuǎn)法有效的保證了隊列中的所有進(jìn)程都能分配到處理機(jī),而優(yōu)先數(shù)法則可防止一個長作業(yè)長期 的壟斷處理機(jī)。 實驗三存儲管理程序設(shè)計 一、目的和要求 (一)目的 存儲管理的主要功能之一是合理地分配主存空間。請求頁式管理是一種常用的虛擬存儲管理技術(shù)。 本實驗的目的是通過請求頁式存儲管理中頁面置換算法的模擬設(shè)計,來了解虛擬存儲技術(shù)的特點,掌 握請求頁式存儲管理的頁面置換算法。 (二)要求 模擬頁式虛擬存儲管理中硬件的地址轉(zhuǎn)換和缺頁中
31、斷的處理過程,并用先進(jìn)先出調(diào)度算法(FIFO )處 理缺頁中斷。 二、提示 (1)為了裝入一個頁面而必須調(diào)出一頁時,如果被選中調(diào)出的頁面在執(zhí)行中沒有修改過,則不必把該 頁重新寫到磁盤上(因磁盤上已有副本)。因此,在頁表中可以增加是否修改過的標(biāo)志,當(dāng)執(zhí)行“存”指 令、“寫”指令時把對應(yīng)頁的修改標(biāo)志置成“1 ”,表示該頁修改過,否則為“0 ”,表示該頁未修改過。 頁表格式如表3-1所示。 表3-1 頁表格式 頁號 標(biāo)志 主存塊號 修改標(biāo)志 磁盤上的位置 (2)設(shè)計一個地址轉(zhuǎn)換程序來模擬硬件的地址轉(zhuǎn)換和缺頁中斷處理過程。當(dāng)訪問的頁在主存時則形成 絕對地址,但不去模擬指令的執(zhí)行,可用輸出轉(zhuǎn)換后的絕對地
32、址來表示一條指令已完成。當(dāng)訪問的頁不在 主存時則輸出“ *該頁頁號”來表示硬件產(chǎn)生了一次缺頁中斷。模擬地址轉(zhuǎn)換的程序流程如圖3-1所示。 (3)編制一個FIFO頁面調(diào)度程序。FIFO頁面調(diào)度算法總是先調(diào)出作業(yè)中最先進(jìn)入主存的那一頁,因此, 可以用一個數(shù)組來構(gòu)成頁號隊列。數(shù)組中每個元素是該作業(yè)已在主存的頁面號,假定分配給作業(yè)的主存塊 數(shù)為m且該作業(yè)開始的 m頁已裝入主存,則數(shù)組可由m個元素組成: P0,P1,,,Pm-1 它們的初值為 P0 : =0, P1 : =1, , ,Pm-1 : = m-1 用一指針k指示當(dāng)要裝入新頁時應(yīng)調(diào)出的頁在數(shù)組的位置,k的初值為“ 0”。 三、實驗報告內(nèi)容要求
33、 編程實現(xiàn)前述功能。 當(dāng)產(chǎn)生缺頁中斷后,操作系統(tǒng)總是選擇Pk所指出的頁面調(diào)出,然后執(zhí)行 Pk:=要裝入的新頁頁號 k : =(k+1) mod m 在實驗中不必實際地啟動磁盤執(zhí)行調(diào)出一頁和裝入一頁的工作,而用輸出“OUT調(diào)出的頁號”和“ IN要裝 入的新頁頁號”來模擬一次調(diào)出和裝入的過程。模擬程序的流程見圖3-1。 (4) 假定主存的每塊長度為1024個字節(jié),現(xiàn)有一個共7頁的作業(yè),其副本已在磁盤上。系統(tǒng)為該作業(yè) 分配了 4塊主存塊,且該作業(yè)的第 0頁至第3頁已經(jīng)裝入主存,其余 3頁尚未裝入主存,該作業(yè)的頁表見 表3-2所示。 表3-2 作業(yè)的頁表 標(biāo)志 主存塊號 修改標(biāo)志 在磁盤上的位置 0
34、1 5 0 011 1 1 8 0 012 2 1 9 0 013 3 1 1 0 021 4 0 0 022 5 0 0 023 6 0 0 121 如果該作業(yè)依次執(zhí)行的指令序列如表3-3所示。 表3-3作業(yè)依次執(zhí)行的指令序列 操作 頁號 頁內(nèi)地址 操作 頁號 頁內(nèi)地址 + 0 070 移位 4 053 + 1 050 + 5 023 X 2 015 存 1 037 存 3 021 取 2 078 取 0 056 + 4 001 - 6 040 存 6 084 依次執(zhí)行上述的指令序列來調(diào)試你所設(shè)計的程序(僅模擬指令的執(zhí)行,不必考慮指令序列中具體操作的執(zhí) 行) (5) 為了檢查程序的正確性,可
35、自行確定若干組指令序列,運行設(shè)計的程序,核對執(zhí)行結(jié)果。 四、代碼: #in elude #i nclude #in clude using n amespace std; struct pageTable / 定義頁表 int address; / 地址 int page; / 頁號 int block; / 塊號 ; typedef struct pageTable PAGETABLE; PAGETABLE *pt; const int first_memory = 1000; / 內(nèi)存首地址 int work320; / 作業(yè) int index, offset; /index 是作業(yè)的頁
36、號, offset 為頁內(nèi)偏移地址 PAGETABLE*oldPtr; /minPtr 指向駐留時間最久的頁 int count1; / 記數(shù)器,用于記錄發(fā)生的缺頁數(shù) bool is_LRU = false ; / 是否是 LRU算法 void init(); void insertPage(); void pushback_Page(PAGETABLE *, PAGETABLE *); void print(PAGETABLE *); void run( int ); void find_FIFO(); void find_LRU(); void main( void ) int i = 0
37、; while (1) cout nPlease select a number(1,2,0) endl; cout 1- 先進(jìn)先出算法( FIFO) endl; cout 2- 最久未使用算法( LRU) endl; cout 0- 程序結(jié)束 i; if (i = 1) cout nThis is a example for FIFO: endl; is_LRU = false ; init(); / 構(gòu)造頁表和內(nèi)存 else if (i = 2) endl; cout next = NULL; for ( int i = 0; inext; / 初始化最久的頁面 cout 頁表初始狀態(tài)為:
38、 endl; print(pt); for ( int k = 0; k320; k+) / 初始化作業(yè) workk = k; / 作業(yè)運行 for ( int f = 0; f53; f+) int m, m1, m2; m = rand() % 320; if (m = 319) m = 318; run(m); print(pt); run(m + 1); print(pt); if (m = 0) m1 = 0; else m1 = rand() % m; run(m1); print(pt); run(m1 + 1); print(pt); m2 = rand() % (320 -
39、m) + m - 1; if (m20) m2 = 318; if (m2 = 319) m2 = 318; run(m2); print(pt); run(m2 + 1); print(pt); rate = ( double )count / 318 * 100; cout nn 缺頁率為: rate % address = id; newPage-page = -1; newPage-block = blockId; newPage-next = NULL; pushback_Page(pt, newPage); else cout 沒有內(nèi)存足夠的空間為頁表分配! next; while
40、 (current != NULL) previous = current; current = current-next; previous-next = item; void print(PAGETABLE *ptr) temp = ptr-next; cout 頁號 塊號 endl; while (temp != NULL) cout page block next; void run( int num) int universal; PAGETABLE *previous, *current; index = worknum / 10;/ 程序所在的頁號 offset = worknu
41、m % 10; / 頁內(nèi)的位移量 previous = pt; current = previous-next; while (current != NULL current = current-next; if (current = NULL) cout n 作業(yè) num 沒有在內(nèi)存,發(fā)生缺頁中斷 block) * 10 + offset; cout n 作業(yè) num 所在內(nèi)存的物理地址為 universal next = NULL) universal = first_memory + (current-block) * 10 + offset; cout n 作業(yè) num 所在內(nèi)存的物理
42、地址為 universal next = current-next; ptr = pt-next; while (ptr-next != NULL) ptr = ptr-next; ptr-next = temp; temp-next = NULL; universal = first_memory + (temp-block) * 10 + offset; cout n 作業(yè) num 所在內(nèi)存的物理地址為 universal endl; 五、結(jié)果: D:daima2014005960Debug2014005960.exe Piease select a numbeir 作業(yè)所在風(fēng)存的物理地址
43、為1001 頁號疾號 0 1 17 14 作業(yè)276沒有毎陵,發(fā)生缺頁中斷 頁面開始置 0 1 2 3 *貝 回廿興刁宜扌央* 置換后作業(yè)在崗存藥物理地址為 頁號 27 1 17 11 1006 塊號 0 1 2 3 0 1 2 3 塊號 0 1 2 3 作業(yè)277所在內(nèi)存的物理地址為1007 頁號 27 1 17 11 作業(yè)1所在內(nèi)存的物理地址為1001 頁號疾號 0 1 17 14 0 1 2 3 作業(yè)216沒有毎發(fā)生缺頁中斷 萱換后作業(yè)在鹵存苗物理地址為1016 _塊號 0 1 XX MMXX 頁面開丈 塊號 0 1 2 3 作業(yè)118所在內(nèi)存的物理地址為1038 頁號 0 1 17 1
44、1 塊號 0 1 2 3 頁號 27 21 17 11 作業(yè)21?所在內(nèi)存的物理地址為1017 頁號塊號 270 211 172 113 作業(yè)291沒有在內(nèi)壓 發(fā)生缺頁中斷 置換后作業(yè)在崗存苗物理地址為1021 頁號 2? 21 29 11 塊號 0 1 2 j D:di ma2014005960Debug2014005$60.exM 0 1 2 3 作業(yè)齬2所在內(nèi)存的物理地址為1022 頁號- 27 21 29 11 塊號 0 1 作業(yè)“?沒有建應(yīng)發(fā)生缺頁中斷 置換后作業(yè)在鹵存前物理地址為103? 頁號 - 2? 21 29 19 電發(fā)生缺頁中斷 作業(yè)近躍有發(fā)生缺頁中斷 *頁面開始置換* 匱
45、換后罪亞總?cè)馑]的物理地址為100 |頁號 16 21 29 19 冠發(fā)生缺頁中斷 塊號 0 1 塊號 0 1 2 作業(yè)1阮所在內(nèi)存的物理地址為 頁號 - 16 21 29 19 1007 塊號 1 作業(yè)8所在內(nèi)存的物理地址為1038 頁號塊號 27fi 211 292 193 作業(yè)214所在內(nèi)存的物理地址為 頁號- 1S 21 29 19 塊號 0 1 2 1014 作業(yè)段有隹臨 發(fā)生缺頁中斷 置換后祜並住崗存的物理地址為100& 偵號- 1S 21 29 19 MX WK 0 1 2 3 作業(yè)卻5所在內(nèi)存的物理地址為 頁號 - 16 21 29 19 塊號 0 1 1015 |作業(yè)6?所在內(nèi)
46、存的物理地址為1007 _塊號 0 1 2 缺頁率為:也 頁號 16 21 29 19 Please select a numbeil2*0 丄一先進(jìn)先出算法(FIFO) 2用算法(LRU) 0一程序結(jié)束 (2 )最久未使用算法 LRU D:daima2014005960Debug2014005960.S D:daima2014005960Debug2014005960.exe 頁號 18 28 2 17 物理地址為1001 伍業(yè)17?所在內(nèi)存的物理地址為101? -塊號 2 3 0 1 作業(yè)91歿頁在0舊宀發(fā)生缺頁中斷 呈換后作亞徽嚮 塊號 0 1 作業(yè)51沒有在 *頁 面幵? 置換后傳業(yè)生
47、 頁號塊號 I J -A- *頁面幵 28 2 17 塊號 2 3 0 1 發(fā)生缺頁中斷 的物理地址為1021 1002 1 17 5 0 9 2 0 2 17 5 塊號 1 2 3 0 塊號 2 3 0 1 作業(yè)52所在內(nèi)存的物理地址為1022 頁號奴號 28 2 17 作業(yè)8沒有在內(nèi)尼盞生缺頁中斷 *頁面幵始置換* 在崗存藥物理地址為1038 3 0 1 2 作業(yè)26殺有ftfW,發(fā)生缺頁中斷 *貝 問開丈臺首検口 口只口 口口 萱換后祜業(yè)在鹵存胡物理地址為10H 頁號一 26 作業(yè)262所在內(nèi)存的物理地址為1012 頁號 5 0 9 26 作業(yè)9所在內(nèi)存的物理地址為1039 頁號疾號 2
48、 1? 0 1 2 3 作業(yè)丄08沒有至卩 置換后作業(yè)在崗 頁號 10 0 9 26 塊號 2 3 0 發(fā)生缺頁中斷 物理地址為1028 D:daima2014005960Debug2014005960 a、D:daima2014005960Debug2014005960 作業(yè)109所在內(nèi)存的物理地址為1029 頁號塊號 0 9 26 10 3 0 1 2 作業(yè)295沒有在內(nèi)壓 發(fā)生缺頁中斷 置換后作業(yè)左崗存苗物理地址為1035 頁號 29 9 26 10 作業(yè)88逡直在內(nèi)奩發(fā)生缺頁中斷 置換后祜業(yè)住鹵存苗物理地址為1018 頁號塊號 8 1 102 293 120 * 塊號 3 0 1 2 1019 12 0 8 1 作業(yè)296所在內(nèi)存的物理地址為1036 頁號 9 26 10 29 塊號 0 1 2 3 作業(yè)129所在內(nèi)存的物理地址為1009 頁號塊號 102 293 8 1 12 0 作業(yè)123OJ 12 26 10 29 殳有隹內(nèi)僉發(fā)生缺頁中斷 頁面幵始置換* 徒業(yè)左
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玉溪師范學(xué)院《數(shù)據(jù)庫原理與應(yīng)用實訓(xùn)》2021-2022學(xué)年期末試卷
- 懷文第八章全章教案
- 作文寫作方法與思路
- 電動汽車 - 軸向磁通油冷電機(jī)
- 2024年速凍調(diào)理肉制品項目評估分析報告
- 2024年蓄熱式高溫預(yù)熱燒嘴項目成效分析報告
- 2024屆廣西壯族自治區(qū)欽州市高三假期自主綜合能力測試(三)數(shù)學(xué)試題
- 殘疾證個體工商戶合同
- 采購合同內(nèi)容匯報模板
- 不可抗拒原因員工解除合同協(xié)議書范本
- 精益道場建設(shè)方案與步驟課件
- 廉潔文化進(jìn)校園班級主題班會
- 中國戲劇概述.(課堂PPT)
- 水污染控制工程課程設(shè)計(AAO)
- 盤扣式外腳手架施工方案
- 古詩句接龍100首
- 注塑車間生產(chǎn)作業(yè)流程圖
- 10KV臺箱變試驗方案
- 司機(jī)控制器的發(fā)展歷史
- 角鋼鋼材檢測報告(共23頁)
- 肩峰下撞擊綜合征ppt課件
評論
0/150
提交評論