




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)實(shí)驗(yàn)實(shí)驗(yàn)一 進(jìn)程調(diào)度一、 實(shí)驗(yàn)?zāi)康亩嗟莱绦蛟O(shè)計(jì)中,經(jīng)常是若干個(gè)進(jìn)程同時(shí)處于就緒狀態(tài),必須依照某種策略來決定那個(gè)進(jìn)程優(yōu)先占有處理機(jī)。因而引起進(jìn)程調(diào)度。本實(shí)驗(yàn)?zāi)M在單處理機(jī)情況下的處理機(jī)調(diào)度問題,加深對(duì)進(jìn)程調(diào)度的理解。二、 實(shí)驗(yàn)要求1 設(shè)計(jì)進(jìn)程調(diào)度算法,進(jìn)程數(shù)不定2 包含幾種調(diào)度算法,并加以實(shí)現(xiàn)3 輸出進(jìn)程的調(diào)度過程進(jìn)程的狀態(tài)、鏈表等。三、 參考例1 題目優(yōu)先權(quán)法、輪轉(zhuǎn)法簡化假設(shè)1) 進(jìn)程為計(jì)算型的(無I/O)2) 進(jìn)程狀態(tài):ready、running、finish3) 進(jìn)程需要的CPU時(shí)間以時(shí)間片為單位確定2 算法描述1) 優(yōu)先權(quán)法動(dòng)態(tài)優(yōu)先權(quán)當(dāng)前運(yùn)行進(jìn)程用完時(shí)間片后,其優(yōu)先權(quán)減去一個(gè)常數(shù)
2、。2) 輪轉(zhuǎn)法開始鍵盤輸入進(jìn)程數(shù)n,和調(diào)度方法的選擇優(yōu)先權(quán)法?輪轉(zhuǎn)法產(chǎn)生n個(gè)進(jìn)程,對(duì)每個(gè)進(jìn)程產(chǎn)生一個(gè)PCB,并用隨機(jī)數(shù)產(chǎn)生進(jìn)程的優(yōu)先權(quán)及進(jìn)程所需的CPU時(shí)間按優(yōu)先權(quán)大小,把n個(gè)進(jìn)程拉成一個(gè)就緒隊(duì)列初始化其他數(shù)據(jù)結(jié)構(gòu)區(qū)鏈?zhǔn)走M(jìn)程投入運(yùn)行時(shí)間片到,進(jìn)程所需的CPU時(shí)間減1,優(yōu)先權(quán)減3,輸出個(gè)進(jìn)程的運(yùn)行情況所需的CPU時(shí)間=0?撤銷進(jìn)程就緒隊(duì)列為空?結(jié)束將進(jìn)程插入就緒隊(duì)列NYNYYBN四、 實(shí)驗(yàn)流程圖產(chǎn)生n個(gè)進(jìn)程,對(duì)每個(gè)進(jìn)程用隨機(jī)數(shù)產(chǎn)生進(jìn)程的輪轉(zhuǎn)時(shí)間片數(shù)及進(jìn)程所需的時(shí)間片數(shù),已占用CPU的時(shí)間片數(shù)置為0按進(jìn)程產(chǎn)生的先后次序拉成就緒隊(duì)列鏈鏈?zhǔn)走M(jìn)程投入運(yùn)行時(shí)間片到,進(jìn)程所需時(shí)間片數(shù)減1,已占用CPU時(shí)間片
3、數(shù)加1輸出各進(jìn)程的運(yùn)行情況進(jìn)程所需時(shí)間片數(shù)=0?撤銷該進(jìn)程就緒隊(duì)列為空嗎?占用CPU的時(shí)間片數(shù)=輪轉(zhuǎn)時(shí)間片數(shù)?占用CPU的時(shí)間片數(shù)置為0把該進(jìn)程插入就緒隊(duì)列尾BNYNYY結(jié)束N注意:1 產(chǎn)生的各種隨機(jī)數(shù)的取值范圍加以限制,如所需的CPU時(shí)間限制在120之間。2 進(jìn)程數(shù)n不要太大通常取48個(gè)3 使用動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)4 獨(dú)立編程5 至少三種調(diào)度算法6 若有可能請(qǐng)?jiān)趫D形方式下,將PCB的調(diào)度用圖形成動(dòng)畫顯示。五實(shí)驗(yàn)過程:(1)輸入:進(jìn)程流文件(1.txt),其中存儲(chǔ)的是一系列要執(zhí)行的進(jìn)程, 每個(gè)作業(yè)包括四個(gè)數(shù)據(jù)項(xiàng):進(jìn)程名 進(jìn)程狀態(tài)(1就緒 2等待 3運(yùn)行) 所需時(shí)間 優(yōu)先數(shù)(0級(jí)最高)進(jìn)程0 1 50
4、2進(jìn)程1 2 10 4進(jìn)程2 1 15 0進(jìn)程3 3 28 5 進(jìn)程4 2 19 1進(jìn)程5 3 8 7輸出: 進(jìn)程執(zhí)行流等待時(shí)間,平均等待時(shí)間本程序包括:FIFO算法,優(yōu)先數(shù)調(diào)度算法,時(shí)間片輪轉(zhuǎn)調(diào)度算法(2) 程序代碼package 進(jìn)程調(diào)度;import java.util.*; class PCB/創(chuàng)建進(jìn)程塊 int Id;/進(jìn)程編號(hào) int UseTime;/服務(wù)時(shí)間 int NeedTime;/需要時(shí)間 int Perior;/優(yōu)先級(jí) String Status;/狀態(tài) PCB() Id+; UseTime=0; NeedTime=(int)Math.round(Math.random
5、()*6)+1;/隨機(jī)產(chǎn)生需要時(shí)間 Perior=(int)Math.round(Math.random()*5)+1;/隨即產(chǎn)生優(yōu)先級(jí) Status=Ready;/初始狀態(tài)為就緒 class Found/定義系統(tǒng)處理方法類 ArrayList sequnce;/創(chuàng)建就緒隊(duì)列 PCB pcb=new PCB5; int StartTime=0; int SystemTime=(int)(Math.random()*3)+1;/隨即產(chǎn)生系統(tǒng)時(shí)間 Found() sequnce=new ArrayList (); for(int i=0;i0)/就緒隊(duì)列不為空 Running=sequnce.re
6、move(0); Running.UseTime=Running.NeedTime; Running.NeedTime=0; Running.Perior=0; System.out.println(當(dāng)前系統(tǒng)時(shí)間:+SystemTime); SystemTime+=Running.UseTime; ShowMessages(Running); void RR()/時(shí)間片輪換算法 PCB Running=null; int Time=SystemTime; while(sequnce.size()0) System.out.println(當(dāng)前系統(tǒng)時(shí)間:+SystemTime); Running
7、=sequnce.remove(0); if(Running.NeedTime0) System.out.println(當(dāng)前就緒進(jìn)程:); for(PCB p1:sequnce) System.out.println(進(jìn)程編號(hào):+p1.Id+ +服務(wù)時(shí)間:+p1.UseTime+ +需要時(shí)間:+p1.NeedTime+ +優(yōu)先級(jí):+p1.Perior+ +狀態(tài):+p1.Status); System.out.println(-); else System.out.println(當(dāng)前系統(tǒng)中已經(jīng)沒有就緒進(jìn)程!); System.out.println(n); class Menu/主界面菜單
8、Scanner sc=new Scanner(System.in); int print() System.out.println(*); System.out.println( 進(jìn)調(diào)度算法演示); System.out.println(*); System.out.println( 1.先來先服務(wù)(FCFS)算法); System.out.println( 2.時(shí)間片輪換(RR)算法); System.out.println( 3.退出該程序); System.out.print(請(qǐng)選擇所要采用的算法:); int flag=sc.nextInt(); return flag; void s
9、elect() int flag=print(); switch (flag) case 1: Found Process1=new Found(); Process1.FCFS(); print(); case 2: Found Process2=new Found(); Process2.RR(); print(); case 3: System.exit(0); default: break; package 進(jìn)程調(diào)度;public class ProcessControl public static void main(String args) Menu Tencent=new Men
10、u(); Tencent.select(); (3) 運(yùn)行結(jié)果:實(shí)驗(yàn)二 銀行家算法一、 實(shí)驗(yàn)?zāi)康乃梨i會(huì)引起計(jì)算機(jī)工作僵死,因此操作系統(tǒng)中必須防止。本實(shí)驗(yàn)的目的在于讓學(xué)生獨(dú)立的使用高級(jí)語言編寫和調(diào)試一個(gè)系統(tǒng)動(dòng)態(tài)分配資源的簡單模擬程序,了解死鎖產(chǎn)生的條件和原因,并采用銀行家算法有效地防止死鎖的發(fā)生,以加深對(duì)課堂上所講授的知識(shí)的理解。二、 實(shí)驗(yàn)要求設(shè)計(jì)有n個(gè)進(jìn)程共享m個(gè)系統(tǒng)資源的系統(tǒng),進(jìn)程可動(dòng)態(tài)的申請(qǐng)和釋放資源,系統(tǒng)按各進(jìn)程的申請(qǐng)動(dòng)態(tài)的分配資源。系統(tǒng)能顯示各個(gè)進(jìn)程申請(qǐng)和釋放資源,以及系統(tǒng)動(dòng)態(tài)分配資源的過程,便于用戶觀察和分析;三、 數(shù)據(jù)結(jié)構(gòu)1 可利用資源向量Available ,它是一個(gè)含有m個(gè)元素
11、的數(shù)組,其中的每一個(gè)元素代表一類可利用的資源的數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源數(shù)目。其數(shù)值隨該類資源的分配和回收而動(dòng)態(tài)地改變。如果Available(j)=k,標(biāo)是系統(tǒng)中現(xiàn)有Rj類資源k個(gè)。2 最大需求矩陣Max,這是一個(gè)nm的矩陣,它定義了系統(tǒng)中n個(gè)進(jìn)程中的每一個(gè)進(jìn)程對(duì)m類資源的最大需求。如果Max(i,j)=k,表示進(jìn)程i需要Rj類資源的最大數(shù)目為k。3 分配矩陣Allocation,這是一個(gè)nm的矩陣,它定義了系統(tǒng)中的每類資源當(dāng)前一分配到每一個(gè)進(jìn)程的資源數(shù)。如果Allocation(i,j)=k,表示進(jìn)程i當(dāng)前已經(jīng)分到Rj類資源的數(shù)目為k。Allocation i表示進(jìn)程i
12、的分配向量,有矩陣Allocation的第i行構(gòu)成。4 需求矩陣Need,這是一個(gè)nm的矩陣,用以表示每個(gè)進(jìn)程還需要的各類資源的數(shù)目。如果Need(i,j)=k,表示進(jìn)程i還需要Rj類資源k個(gè),才能完成其任務(wù)。Need i表示進(jìn)程i的需求向量,由矩陣Need的第i行構(gòu)成。上述三個(gè)矩陣間存在關(guān)系:Need(i,j)=Max(i,j)-Allocation(i,j);四、 銀行家算法Request i 是進(jìn)程Pi 的請(qǐng)求向量。Request i (j)=k表示進(jìn)程Pi請(qǐng)求分配Rj類資源k個(gè)。當(dāng)Pi發(fā)出資源請(qǐng)求后,系統(tǒng)按下述步驟進(jìn)行檢查:1 如果Request i Need,則轉(zhuǎn)向步驟2;否則,認(rèn)為
13、出錯(cuò),因?yàn)樗?qǐng)求的資源數(shù)已超過它當(dāng)前的最大需求量。2 如果Request i Available,則轉(zhuǎn)向步驟3;否則,表示系統(tǒng)中尚無足夠的資源滿足Pi的申請(qǐng),Pi必須等待。3 系統(tǒng)試探性地把資源分配給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Available = Available - Request iAllocation i= Allocation i+ Request iNeed i= Need i - Request i4 系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。如果安全才正式將資源分配給進(jìn)程Pi,以完成本次分配;否則,將試探分配作廢,恢復(fù)原來的資源分配狀態(tài),讓進(jìn)
14、程Pi等待。假定系統(tǒng)有5個(gè)進(jìn)程(p0,p1,p2,p3,p4)和三類資源(A,B,C),各種資源的數(shù)量分別為10,5,7,在T0時(shí)刻的資源分配情況如下圖: Max Allocation Need Available A B C A B C A B C A B CP0 7 5 3 0 1 0 7 4 3 3 3 2 ( 2 3 0 )P1 3 2 2 2 0 0 1 2 2 (3 0 2 ) (0 2 0 )P2 9 0 2 3 0 2 6 0 0P3 2 2 2 2 1 1 0 1 1P4 4 3 3 0 0 2 4 3 1五、 安全性算法1 設(shè)置兩個(gè)向量。Work:它表示系統(tǒng)可提供給進(jìn)程繼續(xù)
15、運(yùn)行的各類資源數(shù)目,它包含m個(gè)元素,開始執(zhí)行安全性算法時(shí),Work = Available。Finish:它表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使之運(yùn)行完成,開始Finish(I)=false;當(dāng)有足夠資源分配給進(jìn)程Pi時(shí),令Finish(i)=true;2 從進(jìn)程集合中找到一個(gè)能滿足下述條件的進(jìn)程。Finish(i)= = false;Need i work;如找到則執(zhí)行步驟3;否則,執(zhí)行步驟4;3 當(dāng)進(jìn)程Pi獲得資源后,可順利執(zhí)行直到完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行Work = work + Allocation i Finish(i)=true;轉(zhuǎn)向步驟2;4 若所有進(jìn)程的Fini
16、sh(i)都為true,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。六、系統(tǒng)流程圖開 始輸入資源數(shù)m, 及各類資源總數(shù),初始化Available向量輸入進(jìn)程數(shù)n,i=1輸入進(jìn)程i的最大需求向量max。inmax資源總數(shù)提示錯(cuò)誤重新輸入i加1任選一個(gè)進(jìn)程作為當(dāng)前進(jìn)程輸入該進(jìn)程的資源請(qǐng)求量Request 調(diào)用銀行家算法,及安全性算法,完成分配,或并給出提示該進(jìn)程的Need向量為0該進(jìn)程已運(yùn)行結(jié)束Need矩陣為0所有進(jìn)程運(yùn)行都結(jié)束結(jié) 束NYYNNY初始化need 矩陣NY 7 銀行家算法程序代碼package yinhangjia;import java.util.Scanner;public
17、 class banker private int Process = 0; / 定義最大進(jìn)程數(shù)目private int Resource = 0; / 定義最大資源類數(shù)private int Work; / 定義系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需的各類資源數(shù)目private int MAX; / 定義進(jìn)程最大資源需求private int Allocation; / 定義進(jìn)程當(dāng)前已用資源數(shù)目private int need; / 定義進(jìn)程需要資源數(shù)目private int Request; / 定義進(jìn)程請(qǐng)求資源向量private boolean finish;/ 定義進(jìn)程完成標(biāo)志private i
18、nt Available;private int P;private Scanner in = new Scanner(System.in); / 定義全局輸入流public void close() in.close(); / 構(gòu)造函數(shù),初始化各向量public banker() throws Exception int i, j;System.out.print(請(qǐng)輸入當(dāng)前進(jìn)程的個(gè)數(shù):);Process = in.nextInt();System.out.print(請(qǐng)輸入系統(tǒng)資源種類的類數(shù):);Resource = in.nextInt();/ 初始化各個(gè)數(shù)組Available = ne
19、w intResource;Work = new intResource;MAX = new intProcessResource;Allocation = new intProcessResource;need = new intProcessResource;Request = new intProcessResource;finish = new booleanProcess;P = new intProcess;System.out.println(請(qǐng)輸入每個(gè)進(jìn)程最大資源需求量,按 + Process + * + Resource+ 矩陣輸入:);for (i = 0; i Proce
20、ss; i+) System.out.print(請(qǐng)輸入P + (i + 1) + 進(jìn)程各類資源最大需求量:);for (j = 0; j Resource; j+)MAXij = in.nextInt();System.out.println(請(qǐng)輸入每個(gè)進(jìn)程已分配的各資源數(shù),也按照 + Process + * + Resource+ 矩陣輸入:);for (i = 0; i Process; i+) System.out.print(請(qǐng)輸入P + (i + 1) + 進(jìn)程各類資源已分配 的資源數(shù):);for (j = 0; j Resource; j+) Allocationij = in.
21、nextInt();needij = MAXij - Allocationij;if (needij 0) System.out.println(您輸入的第 + (i + 1) + 個(gè)進(jìn)程所擁有的第+ (j + 1) + 個(gè)資源數(shù)錯(cuò)誤,請(qǐng)重新輸入:);j-;continue;System.out.print(請(qǐng)輸入系統(tǒng)各類資源可用的數(shù)目:);for (i = 0; i Resource; i+) Availablei = in.nextInt();public void Bank() throws Exception int j, i;int tempAvailable = new intRe
22、source;int tempAllocation = new intResource;int tempNeed = new intResource;System.out.println(-);System.out.print(請(qǐng)輸入要申請(qǐng)資源的進(jìn)程號(hào)(當(dāng)前共有 + Process+ 個(gè)進(jìn)程,如為進(jìn)程P1申請(qǐng),請(qǐng)輸入1,以此類推);i = in.nextInt() - 1;System.out.print(請(qǐng)輸入P + (i + 1) + 進(jìn)程申請(qǐng)的各資源的數(shù)量);for (j = 0; j Resource; j+) Requestij = in.nextInt();for (j = 0;
23、j needij) System.out.println(您輸入的申請(qǐng)的資源數(shù)超過進(jìn)程的需求量!請(qǐng)重新輸入!);continue;if (Requestij Availablej) System.out.println(您輸入的申請(qǐng)數(shù)超過系統(tǒng)可用的資源數(shù)!請(qǐng)重新輸入!);continue;for (j = 0; j Resource; j+) tempAvailablej = Availablej;tempAllocationj = Allocationij;tempNeedj = needij;Availablej = Availablej - Requestij;Allocationij
24、= Allocationij + Requestij;needij = needij - Requestij;if (Safe() System.out.println(分配給P + i + 進(jìn)程成功!);System.out.print(分配前系統(tǒng)可用資源:);for (int k = 0; k Resource; k+)System.out.print(tempAvailablek + );System.out.print(n分配前進(jìn)程P + i + 各類資源已分配數(shù)量:);for (int k = 0; k Resource; k+)System.out.print(tempAlloca
25、tionk + );System.out.print(n分配前進(jìn)程P + i + 各類資源需求數(shù)量:);for (int k = 0; k Resource; k+)System.out.print(tempNeedk + );System.out.print(n分配后系統(tǒng)可用資源: );for (int k = 0; k Resource; k+)System.out.print(Availablek + );System.out.print(n分配后進(jìn)程P + i + 各類資源已分配數(shù)量:);for (int k = 0; k Resource; k+)System.out.print(A
26、llocationik + );System.out.print(n分配后進(jìn)程P + i + 各類資源需求數(shù)量:);for (int k = 0; k Resource; k+)System.out.print(needik + );System.out.println(); else System.out.println(申請(qǐng)資源失敗!);for (j = 0; j Resource; j+) Availablej = Availablej + Requestij;Allocationij = Allocationij + Requestij;needij = needij + Reques
27、tij;for (i = 0; i Process; i+) finishi = false; / 安全性算法public boolean Safe() int i, j, k, t = 0;Work = new intResource;for (i = 0; i Resource; i+)Worki = Availablei;for (i = 0; i Process; i+) finishi = false;for (i = 0; i Process; i+) if (finishi = true) continue; else for (j = 0; j Workj) break;if
28、(j = Resource) finishi = true;for (k = 0; k Resource; k+) Workk += Allocationik;Pt+ = i;i = -1; else continue;if (t = Process) System.out.print(當(dāng)前系統(tǒng)是安全的,存在一安全序列:);for (i = 0; i t; i+) System.out.print(P + Pi);if (i != t - 1) System.out.print(-);System.out.println();return true;System.out.println(當(dāng)前系
29、統(tǒng)是不安全的,不存在安全序列);return false;public static void main(String args) try banker b = new banker();b.Safe();for (int i = 0; i 200; i+)b.Bank();b.close(); catch (Exception e) 8 運(yùn)行結(jié)果實(shí)驗(yàn)三 存儲(chǔ)管理一 實(shí)驗(yàn)?zāi)康拇鎯?chǔ)管理的主要功能之一是合理地分配空間。請(qǐng)求頁式管理是一種常用的虛擬存儲(chǔ)管理技術(shù)。本實(shí)驗(yàn)的目的是通過請(qǐng)求頁式管理中頁面置換算法模擬設(shè)計(jì),了解虛擬存儲(chǔ)技術(shù)的特點(diǎn),掌握請(qǐng)求頁式存儲(chǔ)管理的頁面置換算法。二 實(shí)驗(yàn)內(nèi)容(1) 通過計(jì)
30、算不同算法的命中率比較算法的優(yōu)劣。同時(shí)也考慮了用戶內(nèi)存容量對(duì)命中率的影響。頁面失效次數(shù)為每次訪問相應(yīng)指令時(shí),該指令所對(duì)應(yīng)的頁不在內(nèi)存中的次數(shù)。在本實(shí)驗(yàn)中,假定頁面大小為1k,用戶虛存容量為32k,用戶內(nèi)存容量為4頁到32頁。(2) produce_addstream通過隨機(jī)數(shù)產(chǎn)生一個(gè)指令序列,共320條指令。A、 指令的地址按下述原則生成:1) 50%的指令是順序執(zhí)行的2) 25%的指令是均勻分布在前地址部分3) 25%的指令是均勻分布在后地址部分B、 具體的實(shí)施方法是:1) 在0,319的指令地址之間隨機(jī)選取一起點(diǎn)m;2) 順序執(zhí)行一條指令,即執(zhí)行地址為m+1的指令;3) 在前地址0,m+1
31、中隨機(jī)選取一條指令并執(zhí)行,該指令的地址為m;4) 順序執(zhí)行一條指令,地址為m+1的指令5) 在后地址m+2,319中隨機(jī)選取一條指令并執(zhí)行;6) 重復(fù)上述步驟1)5),直到執(zhí)行320次指令C、 將指令序列變換稱為頁地址流在用戶虛存中,按每k存放10條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條第9條指令為第0頁(對(duì)應(yīng)虛存地址為0,9);第10條第19條指令為第1頁(對(duì)應(yīng)虛存地址為10,19);。第310條第319條指令為第31頁(對(duì)應(yīng)虛存地址為310,319);按以上方式,用戶指令可組成32頁。(3) 計(jì)算并輸出下屬算法在不同內(nèi)存容量下的命中率。1) 先進(jìn)先出的算法(FIFO)
32、;2) 最近最少使用算法(LRU);3) 最佳淘汰算法(OPT);4) 最少訪問頁面算法(LFR);其中3)和4)為選擇內(nèi)容開 始生成地址流輸入算法號(hào)S1S4形成地址頁號(hào)用戶內(nèi)存空間msize=2Msize32 OPT()FIFO()LRU()LFU()Msize加1S=? 是否用其他算法繼續(xù)結(jié) 束NY1234YN提示出錯(cuò),重新輸入三 系統(tǒng)框圖四、頁面置換算法程序代碼:package 存儲(chǔ)管理;import java.util.Random;public class MemoryManage_Operation private String dataStrings = new String33
33、4;/數(shù)據(jù)傳遞數(shù)組 private int Addstream = new int320;/地址流 private int Addspage = new int320;/頁面流 private int phyBlock = new int32;/物理塊數(shù) private Random random = new Random();/隨機(jī)數(shù) private int blockNum;/內(nèi)存塊數(shù) private int npageNum;/缺頁數(shù)臨時(shí)變量 private float rate;/缺頁率 private int tempK, tempG, tempF;/臨時(shí)變量/產(chǎn)生隨機(jī)地址流和頁面流
34、public void setProduceAddstream()int temp;for (int i = 0; i = 320)break;Addstreami+2 = temp;for (int i = 0; i 320; i+)Addspagei = Addstreami / 10;/用戶內(nèi)存及相關(guān)數(shù)據(jù)初始化 private void initialization()for (int i = 0 ; i 32 ;i+) phyBlocki = -1;this.npageNum = 0; this.rate = 0;this.tempK = 0; this.tempG = -1; thi
35、s.tempF = -1;public void FIFO() int time = new int32; /定義進(jìn)入內(nèi)存時(shí)間長度數(shù)組 int max; /max表示進(jìn)入內(nèi)存時(shí)間最久的,即最先進(jìn)去的 initialization(); for(int i = 0; i blockNum ; i+) timei=i+1; for (int i = 0 ; i 320; i+) this.tempK = 0; for (int j = 0; j blockNum; j+) if (phyBlockj = Addspagei) /表示內(nèi)存中已有當(dāng)前要調(diào)入的頁面 this.tempG = j; bre
36、ak; for (int j = 0; j blockNum ;j+) if (phyBlockj = -1) /用戶內(nèi)存中存在空的物理塊 this.tempF = j; break; if (this.tempG != -1) this.tempG = -1; else if (this.tempF = -1)/找到最先進(jìn)入內(nèi)存的頁面 max = time0; for(int j = 0; j max) max = timej; this.tempK = j; phyBlocktempK = Addspagei; timetempK = 0; /該物理塊中頁面停留時(shí)間置零 npageNum+
37、; /缺頁數(shù)+1 else phyBlocktempF = Addspagei; timetempF = 0; npageNum+;tempF = -1; for (int j =0; j blockNum & phyBlockj != -1; j+)timej+; /物理塊中現(xiàn)有頁面停留時(shí)間+1this.rate = 1 - (float)npageNum / 320; dataStringsblockNum1 = this.rate+;public void LRU()int time = new int32;int max;initialization();for (int i = 0;
38、 i blockNum ;i+) timei = i + 1;for (int i = 0; i 320 ;i+)tempK=0;for (int j = 0;j blockNum ; j+)if (phyBlockj = Addspagei)this.tempG = j; break;for (int j = 0;j blockNum ; j+)if (phyBlockj = -1)this.tempF = j; break; if (this.tempG != -1) timetempG = 0; this.tempG = -1; elseif (this.tempF = -1)max=t
39、ime0; for (int j = 0; j max)this.tempK = j; max=timej; phyBlocktempK = Addspagei; timetempK = 0; npageNum+;elsephyBlocktempF = Addspagei; timetempF = 0; npageNum+; this.tempF = -1;for (int j = 0;j blockNum & phyBlockj != -1 ; j+) timej+;this.rate = 1 - (float)npageNum / 320; dataStringsblockNum2 = t
40、his.rate+;public void LFR()initialization();int time_lru = new int32; int time = new int32; int min,max_lru,t; for (int i = 0; i blockNum; i+)timei=0; time_lrui=i+1;for (int i = 0;i 320; i+)this.tempK = 0; t=1; for (int j = 0; j blockNum; j+) if (phyBlockj = Addspagei)this.tempG = j; break;for (int j = 0; j blockNum; j+)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程質(zhì)量管理流程標(biāo)準(zhǔn)化方案
- 陜西省西安市新城區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 投資理財(cái)借款合同
- 城市公園建設(shè)與管理合作協(xié)議
- 教育培訓(xùn)領(lǐng)域在線教育平臺(tái)內(nèi)容優(yōu)化策略研究
- 客戶關(guān)系管理解決方案實(shí)施報(bào)告
- 農(nóng)業(yè)產(chǎn)業(yè)鏈延伸作業(yè)指導(dǎo)書
- 干砌擋土墻現(xiàn)場質(zhì)量檢驗(yàn)報(bào)告單
- 國際貿(mào)易術(shù)語題庫
- 院感知識(shí)崗前培訓(xùn)
- 品管圈PDCA案例-介入中心提高手術(shù)患者交接記錄書寫合格率醫(yī)院品質(zhì)管理成果匯報(bào)
- 第十七屆山東省職業(yè)院校技能大賽中職組“西式烹飪”賽項(xiàng)規(guī)程
- 華東師范大學(xué)《外國人文經(jīng)典(下)》2022-2023學(xué)年第一學(xué)期期末試卷
- 儲(chǔ)能電池模組PACK和系統(tǒng)集成項(xiàng)目可行性研究報(bào)告
- 2024年安徽省公務(wù)員錄用考試《行測》真題及解析
- 2024年陜西省中考數(shù)學(xué)試題含答案
- 牙慢性損傷-楔狀缺損
- JTJ034-2000 公路路面基層施工技術(shù)規(guī)范
- 2024-2030年中國光伏建筑一體化(BIPV)市場規(guī)模預(yù)測與競爭格局分析研究報(bào)告
- 零售業(yè)視覺營銷與商品展示技巧考核試卷
- 民營醫(yī)院并購合同范本
評(píng)論
0/150
提交評(píng)論