九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

太原理工大學(xué)操作系統(tǒng)實(shí)驗(yàn)報(bào)告.doc

  • 資源ID:6523448       資源大?。?span id="24d9guoke414" class="font-tahoma">443KB        全文頁數(shù):21頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

太原理工大學(xué)操作系統(tǒng)實(shí)驗(yàn)報(bào)告.doc

課程名稱: 操作系統(tǒng)B 實(shí)驗(yàn)項(xiàng)目: 操作系統(tǒng)實(shí)驗(yàn) 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)樓209 專業(yè)班級: 軟件 學(xué)生姓名: 學(xué)號: 指導(dǎo)教師: 方昀 2015 年 11 月 30目 錄實(shí)驗(yàn)一 幾種操作系統(tǒng)的界面1一、目的和要求1二、內(nèi)容1實(shí)驗(yàn)二 進(jìn)程調(diào)度程序設(shè)計(jì)2一、目的和要求2二、示例2實(shí)驗(yàn)三 存儲管理程序設(shè)計(jì)9一、目的和要求9二、提示9實(shí)驗(yàn)一 幾種操作系統(tǒng)的界面一、目的和要求(一) 目的本實(shí)驗(yàn)的目的是使學(xué)生熟悉12種操作系統(tǒng)的界面,在熟練使用機(jī)器的基礎(chǔ)上,能了解各種操作命令和系統(tǒng)調(diào)用在系統(tǒng)中的大致工作過程。也就是通過操作系統(tǒng)的外部特征,逐步深入到操作系統(tǒng)的內(nèi)部實(shí)質(zhì)內(nèi)容中去。(二) 要求1. 能熟練的在12種操作系統(tǒng)的環(huán)境下工作,學(xué)會使用各種命令,熟悉系統(tǒng)提供的各種功能,主動而有效地使用計(jì)算機(jī)。2. 熟悉系統(tǒng)實(shí)用程序的調(diào)用方法和各種系統(tǒng)調(diào)用模塊的功能和作用二、內(nèi)容在某種操作系統(tǒng)的環(huán)境下建立、修改、運(yùn)行、打印源程序和結(jié)果,最后撤消一個完整的程序。提示:可按下述步驟進(jìn)行1 編寫一個完整的源程序,通過編輯命令送入機(jī)器,建立源程序文件;2 編譯該源文件,建立相應(yīng)的目標(biāo)文件;3 編譯有錯時(shí),再用編輯命令修改源文件,消除全部詞法和語法錯誤;4 連接目標(biāo)文件,形成可執(zhí)行文件;5 執(zhí)行該文件,得到結(jié)果;6 打印輸出源程序和運(yùn)行結(jié)果;7 撤消本次實(shí)驗(yàn)中形成的所有文件。三、實(shí)驗(yàn)步驟及程序流程圖1)Dos命令行。1. 按住Windows鍵+R輸入notepad回車調(diào)出記事本。2. 編輯一個java程序選擇另存為d:。3. 按住Windows鍵+R輸入cmd回車。4. 進(jìn)入Dos界面鍵入d:。5. 輸入dir查看java文件,使用javac命令進(jìn)行編輯四、程序清單(據(jù)情況而定)class demo public static void main(String args) System.out.print("這是一個java例子"); 五、討論、心得本次實(shí)驗(yàn)是在Windows10系統(tǒng)下進(jìn)行的,通過對一個Java小程序的編譯連接熟悉對Win10的操作以及DOS命令的使用。試驗(yàn)中使用到的DOS工具: 查看目錄:dir 編輯:javac 通過本次實(shí)驗(yàn),進(jìn)一步熟悉了對操作系統(tǒng)尤其是DOS 命令的使用,初步了解了部分操作命令和系統(tǒng)調(diào)用在系統(tǒng)中的大致工作過程,通過實(shí)踐也加深了對老師課堂一些所講知識的理解。實(shí)驗(yàn)二 進(jìn)程調(diào)度程序設(shè)計(jì)一、目的和要求(一) 目的進(jìn)程是操作系統(tǒng)最重要的概念之一,進(jìn)程調(diào)度是操作系統(tǒng)的主要內(nèi)容,本實(shí)驗(yàn)要求學(xué)生獨(dú)立地用高級語言編寫一個進(jìn)程調(diào)度程序,調(diào)度算法可任意選擇或自行設(shè)計(jì),本實(shí)驗(yàn)可使學(xué)生加深對進(jìn)程調(diào)度和各種調(diào)度算法的理解。(二) 要求1 設(shè)計(jì)一個有幾個進(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)程需要運(yùn)行的時(shí)間,占用CPU的時(shí)間以及進(jìn)程的狀態(tài)等,且可按照調(diào)度算法的不同而增刪。2 調(diào)度程序應(yīng)包含23種不同的調(diào)度算法,運(yùn)行時(shí)可以任選一種,以利于各種方法的分析和比較。3 系統(tǒng)應(yīng)能顯示或打印各進(jìn)程狀態(tài)和參數(shù)的變化情況,便于觀察。二、示例1 題目 本程序可選用優(yōu)先數(shù)法或簡單輪轉(zhuǎn)法對五個進(jìn)程進(jìn)行調(diào)度。每個進(jìn)程處于運(yùn)行R(run)、就緒W(wait)和完成F(finish)三種狀態(tài)之一,并假定起始狀態(tài)都是就緒狀態(tài)W。為了便于處理,程序中進(jìn)程的運(yùn)行時(shí)間以時(shí)間片為單位計(jì)算。各進(jìn)程的優(yōu)先數(shù)或輪轉(zhuǎn)時(shí)間片數(shù)、以及進(jìn)程需要運(yùn)行的時(shí)間片數(shù),均由偽隨機(jī)數(shù)發(fā)生器產(chǎn)生。進(jìn)程控制塊結(jié)構(gòu)如表2-1所示: 表2-1 PCB 進(jìn)程標(biāo)識符 鏈指針 優(yōu)先數(shù)/輪轉(zhuǎn)時(shí)間片數(shù) 占用CPU時(shí)間片數(shù) 進(jìn)程所需時(shí)間片數(shù) 進(jìn)程狀態(tài)進(jìn)程控制塊鏈結(jié)構(gòu)如圖2-1所示: RUN HEAD TAIL 圖2-1 進(jìn)程控制塊鏈結(jié)構(gòu)其中:RUN當(dāng)前運(yùn)行進(jìn)程指針;HEAD進(jìn)程就緒鏈鏈?zhǔn)字羔?;TAIL進(jìn)程就緒鏈鏈尾指針。2. 算法與框圖 程序框圖如圖2-2所示。圖2-2 進(jìn)程調(diào)度框圖 (1)優(yōu)先數(shù)法。 進(jìn)程就緒鏈按優(yōu)先數(shù)大小從大到小排列,鏈?zhǔn)走M(jìn)程首先投入運(yùn)行。每過一個時(shí)間片,運(yùn)行進(jìn)程所需運(yùn)行的時(shí)間片數(shù)減1,說明它已運(yùn)行了一個時(shí)間片,優(yōu)先數(shù)也減3。理由是該進(jìn)程如果在一個時(shí)間片中完成不了,優(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ù)運(yùn)行,否則,調(diào)度就緒鏈鏈?zhǔn)走M(jìn)程投入運(yùn)行。原運(yùn)行進(jìn)程再按其優(yōu)先數(shù)大小插入就緒鏈,且改變它們對應(yīng)的進(jìn)程狀態(tài),直至所有進(jìn)程都運(yùn)行完各自的時(shí)間片數(shù)。(2)簡單輪轉(zhuǎn)法。 進(jìn)程就緒鏈按各進(jìn)程進(jìn)入的先后次序排列,鏈?zhǔn)走M(jìn)程首先投入運(yùn)行。進(jìn)程每次占用處理機(jī)的輪轉(zhuǎn)時(shí)間按其重要程度登入進(jìn)程控制塊中的輪轉(zhuǎn)時(shí)間片數(shù)記錄項(xiàng)(相應(yīng)于優(yōu)先數(shù)法的優(yōu)先數(shù)記錄項(xiàng)位置)。每過一個時(shí)間片,運(yùn)行進(jìn)程占用處理機(jī)的時(shí)間片數(shù)加1,然后比較占用處理機(jī)的時(shí)間片數(shù)是否與該進(jìn)程的輪轉(zhuǎn)時(shí)間片數(shù)相等,若相等說明已到達(dá)輪轉(zhuǎn)時(shí)間,應(yīng)將現(xiàn)運(yùn)行進(jìn)程排到就緒鏈末尾,調(diào)度鏈?zhǔn)走M(jìn)程占用處理機(jī),且改變它們的進(jìn)程狀態(tài),直至所有進(jìn)程完成各自的時(shí)間片。 三、代碼:#include <stdio.h> #include <stdlib.h> #define furthest 5 struct process /*PCB STRUCTURE*/int id;int priority;int cputime;int alltime;char state;int next;prochainfurthest - 1;int procnum;int rand();int algo;int run, head, tail, j;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", &algo);if (algo = 2)printf("output of priority.n");init();prisch();elseif (algo = 1)printf("output of round robin.n");init();timesch();elseprintf("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("=");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; k<furthest + 1; k+)printf("%5d", prochaink.id);printf("n");printf("priority ");for (k = 1; k<furthest + 1; k+)printf("%5d", prochaink.priority);printf("n");printf("cputime ");for (k = 1; k<furthest + 1; k+)printf("%5d", prochaink.cputime);printf("n");printf("alltime ");for (k = 1; k<furthest + 1; k+)printf("%5d", prochaink.alltime);printf("n");printf("state ");for (k = 1; k<furthest + 1; k+)printf("%5c", prochaink.state);printf("n");printf("next ");for (k = 1; k<furthest + 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.priority<prochains.priority) && (s != 0)p = s;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; i<furthest + 1; i+)prochaini.id = i;prochaini.priority = (rand() + 11) % 41;prochaini.cputime = 0;prochaini.alltime = (rand() + 1) % 7;prochaini.state = W;prochaini.next = 0;if (prochaini.priority<prochainhead.priority) && (head != 0)insert(prochaini.id);elseprochaini.next = head;head = prochaini.id;elsefor (i = 1; i<furthest + 1; i+)prochaini.id = i;prochaini.priority = (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;print();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;elseprochain0.id = prochainrun.id;run = 0;elseif (prochainrun.priority< prochainhead.priority) && (head != 0)prochainrun.state = W;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;if (prochainrun.alltime = 0)prochainrun.state = F;prochainrun.next = 0;if (head != 0)run = head;prochainrun.state = R;head = prochainhead.next;elseprochain0.id = prochainrun.id;run = 0;elseif (prochainrun.cputime = prochainrun.priority) && (head != 0)prochainrun.state = W;prochainrun.cputime = 0;insert2();run = head;prochainrun.state = R;head = prochainhead.next;print();四、結(jié)果:五、感想: 本次試驗(yàn)的目的在于加深對進(jìn)程調(diào)度和各種調(diào)度算法的理解,故通過對優(yōu)先數(shù)法和簡單輪轉(zhuǎn)法編輯程序?qū)嶋H運(yùn)行來加深對這兩種方法的理解。 對于簡單輪轉(zhuǎn)法,既將全部的進(jìn)程按照進(jìn)入的先后順序排成一個就緒隊(duì)列,設(shè)置每隔一段時(shí)間后將CPU分配給隊(duì)列中新的隊(duì)首進(jìn)程,這樣就可以保證就緒隊(duì)列中的所有進(jìn)程在確定的時(shí)間段內(nèi)都能獲得一個時(shí)間片的處理機(jī)時(shí)間。 而對于優(yōu)先數(shù)法,本次試驗(yàn)中使用了動態(tài)優(yōu)先數(shù)對進(jìn)程進(jìn)行排序,即就緒隊(duì)列按優(yōu)先數(shù)從大到小進(jìn)行排列,而各進(jìn)程的優(yōu)先數(shù)隨著進(jìn)程的推進(jìn)而改變,以達(dá)到獲取更好的調(diào)度性能的目的。簡單輪轉(zhuǎn)法有效的保證了隊(duì)列中的所有進(jìn)程都能分配到處理機(jī),而優(yōu)先數(shù)法則可防止一個長作業(yè)長期的壟斷處理機(jī)。通過本次實(shí)驗(yàn)對試驗(yàn)中所涉及的兩種算法的理解進(jìn)一步加深,有效復(fù)習(xí)了課堂上所講到的相關(guān)知識。實(shí)驗(yàn)三 存儲管理程序設(shè)計(jì)一、目的和要求(一) 目的存儲管理的主要功能之一是合理地分配主存空間。請求頁式管理是一種常用的虛擬存儲管理技術(shù)。本實(shí)驗(yàn)的目的是通過請求頁式存儲管理中頁面置換算法的模擬設(shè)計(jì),來了解虛擬存儲技術(shù)的特點(diǎn),掌握請求頁式存儲管理的頁面置換算法。(二) 要求模擬頁式虛擬存儲管理中硬件的地址轉(zhuǎn)換和缺頁中斷的處理過程,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁中斷。二、提示(1) 為了裝入一個頁面而必須調(diào)出一頁時(shí),如果被選中調(diào)出的頁面在執(zhí)行中沒有修改過,則不必把該頁重新寫到磁盤上(因磁盤上已有副本)。因此,在頁表中可以增加是否修改過的標(biāo)志,當(dāng)執(zhí)行“存”指令、“寫”指令時(shí)把對應(yīng)頁的修改標(biāo)志置成“1”,表示該頁修改過,否則為“0”,表示該頁未修改過。頁表格式如表3-1所示。表3-1 頁表格式 頁 號 標(biāo) 志 主存塊號 修改標(biāo)志 磁盤上的位置(2) 設(shè)計(jì)一個地址轉(zhuǎn)換程序來模擬硬件的地址轉(zhuǎn)換和缺頁中斷處理過程。當(dāng)訪問的頁在主存時(shí)則形成絕對地址,但不去模擬指令的執(zhí)行,可用輸出轉(zhuǎn)換后的絕對地址來表示一條指令已完成。當(dāng)訪問的頁不在主存時(shí)則輸出“*該頁頁號”來表示硬件產(chǎn)生了一次缺頁中斷。模擬地址轉(zhuǎn)換的程序流程如圖3-1所示。(3) 編制一個FIFO頁面調(diào)度程序。FIFO頁面調(diào)度算法總是先調(diào)出作業(yè)中最先進(jìn)入主存的那一頁,因此,可以用一個數(shù)組來構(gòu)成頁號隊(duì)列。數(shù)組中每個元素是該作業(yè)已在主存的頁面號,假定分配給作業(yè)的主存塊數(shù)為m,且該作業(yè)開始的m頁已裝入主存,則數(shù)組可由m個元素組成:P0,P1,Pm-1它們的初值為P0=0,P1=1,Pm-1= m-1用一指針k指示當(dāng)要裝入新頁時(shí)應(yīng)調(diào)出的頁在數(shù)組的位置,k的初值為“0”。圖3-1 地址轉(zhuǎn)換和FIFO頁面調(diào)度流程當(dāng)產(chǎn)生缺頁中斷后,操作系統(tǒng)總是選擇Pk所指出的頁面調(diào)出,然后執(zhí)行Pk=要裝入的新頁頁號k=(k+1)mod m在實(shí)驗(yàn)中不必實(shí)際地啟動磁盤執(zhí)行調(diào)出一頁和裝入一頁的工作,而用輸出“OUT調(diào)出的頁號”和“IN要裝入的新頁頁號”來模擬一次調(diào)出和裝入的過程。模擬程序的流程見圖3-1。(1) 假定主存的每塊長度為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 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 2 015 存 1 037 存 3 021 取 2 078 取 0 056 + 4 001 - 6 040 存 6 084依次執(zhí)行上述的指令序列來調(diào)試你所設(shè)計(jì)的程序(僅模擬指令的執(zhí)行,不必考慮指令序列中具體操作的執(zhí)行)(2) 為了檢查程序的正確性,可自行確定若干組指令序列,運(yùn)行設(shè)計(jì)的程序,核對執(zhí)行結(jié)果。三、代碼:#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;struct pageTable/定義頁表int address;/地址int page;/頁號int block;/塊號struct pageTable *next;typedef struct pageTable PAGETABLE;PAGETABLE *pt;const int first_memory = 1000;/內(nèi)存首地址int work320;/作業(yè)int index, offset;/index是作業(yè)的頁號,offset為頁內(nèi)偏移地址PAGETABLE*oldPtr;/minPtr指向駐留時(shí)間最久的頁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;while (1)cout << "nPlease select a number(1,2,0)" << endl;cout << " 1-先進(jìn)先出算法(FIFO)" << endl;cout << " 2-最久未使用算法(LRU)" << endl;cout << " 0-程序結(jié)束" << endl;cin >> i;if (i = 1)cout << "nThis is a example for FIFO:" << endl;is_LRU = false;init();/構(gòu)造頁表和內(nèi)存else if (i = 2)cout << "nThis is a example for LRU:" << endl;is_LRU = true;init();/構(gòu)造頁表和內(nèi)存else if (i = 0)exit(1);void init()double rate; int count = 0;/記數(shù)器初值為0srand(time(NULL);pt = new PAGETABLE;pt->next = NULL;for (int i = 0; i<4; i+)insertPage();oldPtr = pt->next;/初始化最久的頁面cout << "頁表初始狀態(tài)為:" << endl;print(pt);for (int k = 0; k<320; k+)/初始化作業(yè)workk = k;for (int f = 0; f<53; f+)/作業(yè)運(yùn)行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;elsem1 = rand() % m;run(m1);print(pt);run(m1 + 1);print(pt);m2 = rand() % (320 - m) + m - 1;if (m2<0)m2 = 318;if (m2 = 319)m2 = 318;run(m2);print(pt);run(m2 + 1);print(pt);rate = (double)count / 318 * 100;cout << "nn 缺頁率為:" << rate << "%" << endl;/* 構(gòu)建頁表*/void insertPage()PAGETABLE *newPage;static int id = 99;static int blockId = -1;id+;blockId+;if (blockId = 4)blockId = 0;newPage = (PAGETABLE *)malloc(sizeof(PAGETABLE);if (newPage != NULL)newPage->address = id;newPage->page = -1;newPage->block = blockId;newPage->next = NULL;pushback_Page(pt, newPage);elsecout << "沒有內(nèi)存足夠的空間為頁表分配!" << endl;void pushback_Page(PAGETABLE *queue, PAGETABLE *item)PAGETABLE *previous, *current;previous = queue;current = queue->next;while (current != NULL)previous = current;current = current->next;previous->next = item;void print(PAGETABLE *ptr)PAGETABLE *temp;temp = ptr->next;cout << " 頁號 " << " 塊號 " << endl;while (temp != NULL)cout << " " << temp->page << " " << temp->block << endl;temp = temp->next;void run(int num)int universal;PAGETABLE *previous, *current;index = worknum / 10;/程序所在的頁號offset = worknum % 10;/頁內(nèi)的位移量previous = pt;current = previous->next;while (current != NULL && current->page != index)previous = current;current = current->next;if (current = NULL)cout << "n作業(yè)" << num << "沒有在內(nèi)存,發(fā)生缺頁中斷" << endl;count1+;if (is_LRU = false)/FIFO算法find_FIFO();else/LRU算法find_LRU();elseif (is_LRU = false)/FIFO算法universal = first_memory + (current->block) * 10 + offset;cout << "n作業(yè)" << num << "所在內(nèi)存的物理地址為 " << universal << endl;elseif (current->next = NULL)universal = first_memory + (current->block) * 10 + offset;cout << "n作業(yè)" << num << "所在內(nèi)存的物理地址為 " << universal << endl;elsePAGETABLE *temp, *ptr;temp = current;previous->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;void find_FIFO()/先進(jìn)先出頁面置換算法PAGETABLE *pos;int universal;pos = pt->next;if (oldPtr = NULL)oldPtr = pt->next;while (pos != NULL && pos->page != -1)pos = pos->next;if (pos = NULL)/出現(xiàn)缺頁中斷cout << "*頁面開始置換*" << endl;oldPtr->page = index;universal = first_memory + (oldPtr->block) * 10 + offset;cout << "置換后作業(yè)在內(nèi)存的物理地址為 " << universal << endl;oldPtr = oldPtr->next;else/頁面還未裝完pos->page = index;universal = first_memory + (pos->block) * 10 + offset;cout << "作業(yè)在內(nèi)存的物理地址為 " << universal << endl;void find_LRU()/最久置換算法PAGETABLE *pos;int universal;pos = pt->next;while (pos != NULL && pos->page != -1)pos = pos->next;if (pos = NULL)/出現(xiàn)缺頁中斷cout << "*頁面開始置換*" << endl;PAGETABLE *temp;temp = pt->next;temp->page = index;universal = first_memory + (temp->block) * 10 + offset;cout << "置換后作業(yè)在內(nèi)存的物理地址為 " << universal << endl;else/頁面還未裝完pos->page = index;universal = first_memory + (pos->block) * 10 + offset;cout << "作業(yè)在內(nèi)存的物理地址為 " << universal << endl;四、結(jié)果:五、心得本次試驗(yàn)的目的是通過請求頁式存儲管理中頁面置換算法的模擬設(shè)計(jì),來了解虛擬存儲技術(shù)的特點(diǎn),掌握請求頁式存儲管理的頁面置換算法。試驗(yàn)中主要使用了FIFO算法,即總是先淘汰最先進(jìn)入內(nèi)存的頁面(駐留最久的頁面),實(shí)現(xiàn)時(shí)只需要把一個進(jìn)程也調(diào)入內(nèi)存的頁面按先后次序鏈接成一個隊(duì)列,并設(shè)置一個指針,總是指向最老的頁面。FIFO的主要的缺點(diǎn)是沒有考慮到有的頁面會經(jīng)常被訪問,因此并沒有辦法保證這種頁面能夠保留在內(nèi)存中,可能使得利用率較低。通過本次試驗(yàn)加深了對相應(yīng)算法的理解,鞏固了相關(guān)的知識和使用的方法。

注意事項(xiàng)

本文(太原理工大學(xué)操作系統(tǒng)實(shí)驗(yàn)報(bào)告.doc)為本站會員(w****2)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!