版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)課程設(shè)計(jì)題目:通用請(qǐng)求分頁(yè)調(diào)度算法程序院 系:計(jì)算機(jī)科學(xué)與技術(shù)系專業(yè)班級(jí):09軟件工程學(xué) 號(hào):學(xué)生姓名:指導(dǎo)教師:2011年 12 月12日 TOC o 1-5 h z 1課程設(shè)計(jì)目的 12課程設(shè)計(jì)內(nèi)容 13系統(tǒng)分析與設(shè)計(jì) 23.1系統(tǒng)分析: 23.2系統(tǒng)設(shè)計(jì): 23.3模塊設(shè)計(jì): 33.4數(shù)據(jù)結(jié)構(gòu)說(shuō)明: 43.5算法流程圖: 44模塊調(diào)試與系統(tǒng)測(cè)試 294.1模塊調(diào)試: 294.2系統(tǒng)測(cè)試: 304.3調(diào)試分析: 305用戶手冊(cè) 316 體會(huì)與自我評(píng)價(jià) 327參考文獻(xiàn) 33通用請(qǐng)求分頁(yè)調(diào)度算法程序1課程設(shè)計(jì)目的操作系統(tǒng)是管理計(jì)算機(jī)硬件的軟件。它也為應(yīng)用程序提供一個(gè)基礎(chǔ),在計(jì)算機(jī)用戶與
2、計(jì)算機(jī)硬件之間扮演一個(gè)中間者的角色。在完成操作系統(tǒng)各部分實(shí)驗(yàn)的基礎(chǔ)上,對(duì)操作系統(tǒng)的整體進(jìn)行一個(gè)模擬,通 過實(shí)踐加深對(duì)各個(gè)部分的管理功能的認(rèn)識(shí),還能進(jìn)一步分析各個(gè)部分之間的聯(lián)系,最后達(dá)到對(duì)完整系統(tǒng)的理解。本課 程設(shè)計(jì)的目的綜合應(yīng)用學(xué)生所學(xué)知識(shí),建立系統(tǒng)和完整的計(jì)算機(jī)系統(tǒng)概念,理解和鞏固操作系統(tǒng)基本理論、原理和方 法,掌握多道程序設(shè)計(jì)基本技能。研究計(jì)算機(jī)操作系統(tǒng)的基本原理和算法,掌握操作系統(tǒng)的進(jìn)程管理、存儲(chǔ)管理、文 件管理和設(shè)備管理的基本原理與主要算法。目的是使學(xué)生掌握常用操作系統(tǒng)的一般管理方法,了解它是如何組織和運(yùn) 作的,對(duì)操作系統(tǒng)的核心概念和算法有一個(gè)透徹的理解,并對(duì)系統(tǒng)運(yùn)行的機(jī)制有一個(gè)全面的
3、掌握,從而充分理解系統(tǒng) 調(diào)用與程序設(shè)計(jì)之間的關(guān)系。由于本課程設(shè)計(jì)比較復(fù)雜,因此也鍛煉了同學(xué)們?cè)诰幊谭矫娴哪芰徒鉀Q實(shí)際問題的能 力,在軟件開發(fā)方面,也提高了創(chuàng)新的能力;由于在設(shè)計(jì)的同時(shí)必須查閱大量的資料和書籍,所以也鍛煉的調(diào)查研究 查閱技術(shù)文獻(xiàn)以及編寫軟件設(shè)計(jì)文檔的能力。2課程設(shè)計(jì)內(nèi)容在進(jìn)程運(yùn)行過程中,當(dāng)所要訪問的頁(yè)面不在內(nèi)存時(shí),則應(yīng)將它調(diào)入內(nèi)存。假如在此時(shí)內(nèi)存已無(wú)空閑空間,則應(yīng)選擇一頁(yè)調(diào)出。將哪個(gè)頁(yè)面調(diào)出,則須根據(jù)一定的算法來(lái)確定。需要調(diào)入頁(yè)面時(shí),選擇內(nèi)存 中哪個(gè)物理頁(yè)面被置換。把未來(lái)不再使用的或短期內(nèi)較少使用的頁(yè)面調(diào)出,通常只能在局部性原理指導(dǎo)下依據(jù)過去的 統(tǒng)計(jì)數(shù)據(jù)進(jìn)行預(yù)測(cè)。模擬仿真請(qǐng)求分
4、頁(yè)調(diào)度算法OPT、FIFO、LRU、LFU、CLOCK等模擬頁(yè)面調(diào)度算法,并提供性 能比較分析功能。通過編寫和調(diào)試存儲(chǔ)管理的模擬程序以加深對(duì)存儲(chǔ)管理方案的理解。熟悉虛存管理的各種頁(yè)面淘汰 算法。通過編寫和調(diào)試地址轉(zhuǎn)換過程的模擬程序以加強(qiáng)對(duì)地址轉(zhuǎn)換過程的了解。3系統(tǒng)分析與設(shè)計(jì)3.1系統(tǒng)分析:操作系統(tǒng)中的請(qǐng)求分頁(yè)系統(tǒng)是建立在基本分頁(yè)基礎(chǔ)上的,為了能支持虛擬存儲(chǔ)功能而增加了調(diào)頁(yè)功能和頁(yè)面置 換功能。每當(dāng)程序所要訪問的頁(yè)面未在內(nèi)存時(shí),便向CPU發(fā)出一缺頁(yè)中斷,中斷處理程序首先保留CPU環(huán)境,分析中 斷原因后轉(zhuǎn)入缺頁(yè)中斷處理程序。該程序通過查找頁(yè)表后,得到該頁(yè)在外存的物理塊后,如果此時(shí)內(nèi)存能容納新頁(yè),則
5、 啟動(dòng)磁盤I/O將所卻之頁(yè)調(diào)入內(nèi)存,然后修改頁(yè)表。如果內(nèi)存已滿,則須先按照某種置換算法從內(nèi)存中選出一頁(yè)準(zhǔn)備 換出;如果該頁(yè)未被修改,可不必將該頁(yè)寫回磁盤;但如果此頁(yè)已被修改,則必須將它寫回磁盤,然后再把所缺的也調(diào)入內(nèi)存,并修改頁(yè)表中的相應(yīng)表項(xiàng),置其存在位為1”,并將此頁(yè)表項(xiàng)寫入快表 中。在缺頁(yè)調(diào)入內(nèi)存后,利用修改后的頁(yè)表,去形成所要訪問數(shù)據(jù)的物理地址,再去訪問內(nèi)存數(shù)據(jù)。整個(gè)頁(yè)面的調(diào)入過 程對(duì)用戶是透明的。3.2系統(tǒng)設(shè)計(jì):在運(yùn)行過程中,若其所要訪問的頁(yè)面不再內(nèi)存而需把它們掉入內(nèi)存,應(yīng)將哪個(gè)頁(yè)面調(diào)出需根據(jù)一定的算法來(lái)確定, 置換算法的好壞將直接影響到系統(tǒng)的性能。一個(gè)好的頁(yè)面置換算法應(yīng)具有較低的頁(yè)面
6、更換頻率。從理論上講,應(yīng)將那 些以后不會(huì)再訪問的頁(yè)面換出,或把那些再較長(zhǎng)時(shí)間內(nèi)不會(huì)再訪問的頁(yè)面調(diào)出。最佳置換算法(Optimal):它是由Belady于1966年提出的一種理論上的算法。其所選擇的被淘汰頁(yè)面,將是以后 永不使用的或許是在最長(zhǎng)(未來(lái))時(shí)間內(nèi)不再被訪問的頁(yè)面。采用最佳置換算法,通??杀WC獲得最低的缺頁(yè)率。但由于 人目前還無(wú)法預(yù)知一個(gè)進(jìn)程在內(nèi)存的若干個(gè)頁(yè)面中,哪一個(gè)頁(yè)面是未來(lái)最長(zhǎng)時(shí)間內(nèi)不再被訪問的,因而該算法是無(wú)法 實(shí)現(xiàn)的,便可以利用此算法來(lái)評(píng)價(jià)其它算法。先進(jìn)先出(FIFO)頁(yè)面置換算法:這是最早出現(xiàn)的置換算法。該算法總是淘汰最先進(jìn)入內(nèi)存的頁(yè)面,即選擇在內(nèi)存中駐留時(shí)間最久的頁(yè)面予以淘
7、汰。該算法實(shí)現(xiàn)簡(jiǎn)單只需把一個(gè)進(jìn)程已調(diào)入內(nèi)存的頁(yè)面,按 先后次序鏈接成一個(gè)隊(duì)列,因此對(duì)首總是最先進(jìn)去的頁(yè)面,這樣置換總是位于隊(duì)首的一頁(yè)。LRU置換算法:最近最久未使用(LRU)置換算法,是根據(jù)頁(yè)面調(diào)入內(nèi)存后的使用情況進(jìn)行決策的。由于無(wú) 法預(yù)測(cè)各頁(yè)面將來(lái)的使用情況,只能利用“最近的過去”作為“最近的將來(lái)”的近似,因此,LRU置換算法是選擇最 近最久未使用的頁(yè)面予以淘汰。該算法可利用一個(gè)特殊的棧來(lái)保存當(dāng)前使用的各個(gè)頁(yè)面的頁(yè)面號(hào),每當(dāng)進(jìn)程訪問某頁(yè) 面時(shí),便將該頁(yè)面的頁(yè)面號(hào)從該棧中移出,將它壓入棧頂。因此,棧頂始終是最新被訪問頁(yè)面的編號(hào),而棧底則是最 近最久未使用的頁(yè)面。3.3模塊設(shè)計(jì):1)涉及的抽象數(shù)
8、據(jù)類型集合(ArrayList):集合可以隨著元素的增加而自定增加長(zhǎng)度,也可刪除指定的元素,在指定的位置增加元素。隊(duì)列(Queue):定義了一個(gè)可以先進(jìn)先出的數(shù)組,進(jìn)入時(shí)在隊(duì)尾加入,出隊(duì)時(shí)只能是隊(duì) 首。棧(Stack):定義了一個(gè)先進(jìn)后出的數(shù)組,進(jìn)棧和出棧都是在棧頂執(zhí)行的。二維數(shù)組:定義了第二維的元素就是第一維元素的標(biāo)志位。2)主程序的流程以及模塊之間的層次關(guān)系圖1:程序模塊圖3.4數(shù)據(jù)結(jié)構(gòu)說(shuō)明:集合:定義了用來(lái)存放所有頁(yè)面索引號(hào)的序列的一個(gè)集合,同時(shí)也定義了一個(gè)表示物理快的集合,用來(lái)存放內(nèi)存 中物理塊所存放的頁(yè)面號(hào),在使用過程中可以隨時(shí)增加和刪除,用在頁(yè)面置換時(shí),可以在指定位置增加和刪除元素
9、。隊(duì)列:定義了一個(gè)與內(nèi)存物理塊容量相同的隊(duì)列,同內(nèi)存快一樣用來(lái)存放頁(yè)面號(hào),充分體現(xiàn)類先進(jìn)先出的作用, 在FI FO算法中可以隨時(shí)找出要置換的頁(yè)面號(hào),即位于隊(duì)首的頁(yè)面。棧:定義了一個(gè)與內(nèi)存物理塊容量相同的隊(duì)列,同內(nèi)存快一樣用來(lái)存放頁(yè)面號(hào)。每當(dāng)進(jìn)程訪問某頁(yè)面時(shí),便將該 頁(yè)面的頁(yè)面號(hào)從棧中移出,將它壓入棧頂。因此,棧頂始終是最新被訪問頁(yè)面的編號(hào),而棧底則是最近最久未使用的 頁(yè)面號(hào)。二維數(shù)組:在Clock算法中,定義一個(gè)二維數(shù)組,即給在內(nèi)存中的每個(gè)頁(yè)面號(hào)都定義一個(gè)訪問位,在根據(jù)算法來(lái) 找到要置換的頁(yè)面號(hào);在LFU算法中定義一個(gè)二維數(shù)組,給每個(gè)頁(yè)面號(hào)都定義一個(gè)訪問位來(lái)計(jì)算被訪問的頻率,最后 比較頻率來(lái)得
10、出應(yīng)該被置換的頁(yè)面號(hào)。3.5算法流程圖:主程序流程圖:實(shí)現(xiàn)各個(gè)算法的流程圖:圖3: FI FO算法流程圖圖4 : OPT算法程序流程圖圖5 : LRU算法程序流程圖3 .6程序代碼:Ge t S e q u e s e . j a va/*這個(gè)類用于設(shè)置和獲取所輸入的頁(yè)面串*/ package com. model;import java.util.*;p u b l i c c l a s s Ge t S e q u e s e S t r i n g s e q u e s e =n u l l ;p u b l i c S t r i n g g e t S e q u e s e (
11、 )r e t u r n s e q u e s e;p u b l i c v o i d s e t S e q u e s e ( )S t r i n g Bu f f e r s e q u e s e =n e w S t r i n g Bu f f e r ();Ra ndom rd=new Random。;f o r ( i n t i =0 ; i 1 5 ; i +)i n t n u m=r d . n e x t I n t ( 1 0 );s e q u e s e . a p p e n d ( I n t e g e r . t o S t r i n g (
12、 n u m) + );t h i s . s e q u e s e = s e q u e s e . t o S t r i n g ();p u b l i c S t r i n g g e t S e q ( S t r i n g s e q u e s e )S t r i n g s e q =n e w S t r i n g 1 5 ; se q =s e q u e s e . s p l i t ( );r e t u r n s e q;OsView.javap a c k a g e c o m. v i ew;import java.awt.*;imp o r
13、t j a v a . t e x t . De c i ma l Fo r ma t ;import java.util.*;import java.awt.event.*;imp o r t j a v a x . s wi n g . *;imp o r t j a v a x . s wi n g . t a b l e . De f a u l t Ta b l e Mo d e l ;imp o r t c o m. mod e l . Ge t S e q u e s e;p u b l i c c l a s s Os Vi e w e x t e n d s J Fr a m
14、e i mp l e me n t s Ac t i o n Li s t e n e r , I t e mLi s t e n e r / * pa r a m a r gs*/p r i v a t e Ch o i c e c h o i c e =n u l l;p r i v a t e J La b e l l b =n e w J La b e l 6 ;p r i v a t e J Ch e c k Bo x c k b =n u l l;p r i v a t e JTe x t Fi e l d s e q 1 =n u l l ; pr i v a t e J Bu
15、t t o n g e t s e q =n u l l; p ri v a t e J Bu t t o n s u r e =n u l l;p r i v a t e J Bu t t o n c l e a r =n u l l;p r i v a t e J Te x t Fi e l d s e q 2 =n e w J Te x t Fie l d 15 ; pr i v a t e J Te x t Fi e l d p a g e =n e w J Te x t Fi el d 4 5;p r i v a t e J Te x t Fi e l d c t i me =n u
16、 l l; / / 記錄缺頁(yè)次數(shù)p r i v ate J Te x t Fi e l d p r ate =n u l l; / / 用于計(jì)算缺頁(yè)率 p ri v a t e J Pa n e l p n =n e w J Pa n e l 1 3 ;p r i v a t e De f a u l t Ta b l e Mo d e l d f mo d e l =n u l l ; pr i v a t e J Ta b l e t a ble =n u l l ;p r i v a t e J S c r o l l Pa n e j s p =n u l l ; pr i v a t
17、 e Ve c t o r v e c t o r =n u l l ;S t r i n g s ele c t e d =n ull ;/ /記錄所選算法/ /記錄所選算法i n t a b t i me =0;/ /記錄缺頁(yè)次數(shù)i n t c h t i me =0;/ /記錄置換次數(shù)d o u b l e a b r a t e =0;S t r i n g s e q 3 =n e w S t r i n g 1 5 ;的使用/ /記錄置換次數(shù)/ /用于計(jì)算缺頁(yè)率的使用/ /用于計(jì)算缺頁(yè)率/ /用于暫存/ /用于暫存S e q 2的內(nèi)容,便于FI FO算法和LRU算法S t r i
18、n g r a m =n e w S t r i n g 3 ;/ / 模擬內(nèi)存塊i =0;i ppublic OsView(String title)s u p e r ( t i t l e );s e l e c t e d = OPT;f o r ( i n t i =0 ; i p n . l e n g t h ; i +)p n i =n e w J Pa n e l ();頂部布局/ l b 0 =n e w J Lab el (請(qǐng)選擇置換算法:”);l b 1 =n e w J La b e l (進(jìn)程頁(yè)面隨機(jī)索引號(hào)順序(頁(yè)面號(hào)為09 ) : ); c h o i c e=n
19、 e w Ch o i c e ();c h o i c e . a d d ( ( OP T)最佳置換算法);c h o i c e . a d d ( ( FI FO)先進(jìn)先出置換算法);c h o i c e . a d d ( ( LRU)最近最久未使用置換算法”);c h o ic e . s e l e c t ( 0 );c h o i c e . a d d I t e mLi s t e n e r ( t h i s );ckb=newJCheckBox(固定輸入”);c k b . a d dAc t i o n Li s t e n e r ( t h i s );g
20、e t s e q =n e w J Butt o n (獲得隨機(jī)索引號(hào));/ / g e t s e q . s e t Pr e f e r r e d S i z e ( n e w Di me n s i o n ( 5 0,3 0 ) ) ; ge t s e q . a d d Ac t i o n Li s t e n e r ( t h i s );s u r e =n e w J Bu t t o n (確定);s u r e . a d d Ac t i o n Li s t e n e r ( t h i s );p n 1 . s e t La y o u t ( n
21、e w Gr i d La y o u t ( 1 , 2 );p n 1 . a d d ( g e t s e q ) ; p n 1 . a d d ( s u r e );s e q 1 =n e w J Te x t Fi e l d ( ”, 5 0 );p n 0 . s e t La y o u t ( n e w Gr i d La y o u t ( 2,3 , 1 2 , 2 );pn0.add(lb0);pn0.add(ckb);pn0.add(lb1);p n 0 . a d d ( c h o i c e ) ; p n 0 . a d d ( p n 1 ) ;
22、p n 0 . a d d ( s e q 1 );頁(yè)塊布局/ l b 2 =n e w J Lab el (引用率:);l b 3 =n e w J La b e l (頁(yè)框(物理塊):);l b 4 =n e w J La b e l (該算法發(fā)生頁(yè)面置換的次數(shù):);l b 5 =n e w J La b e l (該算法的缺頁(yè)率:);p n 2 . s e t La y o u t ( n e w Gr i d La y o u t ( 3 , 1 , 3,1 8 );p n 2 . a d d ( l b 2 ) ; p n 2 . a d d ( p n 7 ) ; p n 2 .
23、a d d ( l b 3 );p n 3 . s e t La y o u t ( n e w Gr i d La y o u t ( 1 , 1 5 , 1 3,3 );p n 4 . s e t La y o u t ( n e w Gr i d La y o u t ( 3, 15,13,1 );f o r ( i n t i =0 ; i s e q 2 . l e n g t h ; i +)s e q 2 i =n e w J Te x t Fi e l d ( ”, 2 );s e q 2 i . s e t Ho r i z o n t a l Al i g n me nt
24、(JTextFi e l d . CENTER) ; pn 3 . a d d ( s e q 2 i );f o r ( i n t i =0 ; i p a g e . l e n g t h ; i +)p a g e i =n ewJTextField( ,2);/p a g e i . s e t Ho r i z o n t a l Al i g n me n t ( J Te x t Fi e l d . CENTER);/p a g e i . s e t En a b l e d ( f a l s e );i n t t e mp =0 ;f o r ( i n t j =
25、0 ; j 3 ; j +)if (j =0 | | j =1 | | j =2 ) pn4 . a d d ( p a g e j );t e mp =j;f o r ( i n t i =0 ; i s e q 2 . l e n g t h ; i +)t e mp =t e mp +3 ;i f ( t e mp p a g e . l e n g t h )p n 4 . a d d ( p a g e t e mp );p n 5 . s e t La y o u t ( n e wBo r d e r La y o u t ();p n 5 . a d d ( p n 3 , N
26、o r t h ) ; p n 5 . a d d ( p n 7 , Ce n t e r ) ; p n 5 . a d d ( p n 4 , S o u t h );p n 6 . s e t La y o u t ( n e wFl o wLa y o u t ();p n 6 . a d d ( p n 2 );p n 6 . a d d ( p n 5 );c t i me =n e w J Te x t Fi e l d ( ”, 1 0 );/c t i me .s e t En a b l e d ( f a l s e );p r a t e =n e w J Te x
27、t Fi e l d ( ”, 1 0 );/p r a t e .s e t En a b l e d ( f a l s e );p n 8 . a d d ( l b 4 ) ; p n 8 . a d d ( c t i me );p n 9 . a d d ( l b 5 ) ; p n 9 . a d d ( p r a t e );c l e a r =n e w J Bu t t o n ( ” 清空數(shù)據(jù)”);c l e a r . s e t Pr e f e r r e d S i z e ( n e w Di me n s i o n ( 1 2 3 , 3 0 ) );
28、 cl e a r . a d d Ac t i o n Li s t e n e r ( t h i s );p n 1 0 . a d d ( c l e a r );p n 6 . a d d ( p n 8 );p n 6 . a d d ( p n 9 ) ; p n 6 . a d d ( p n 1 0 );統(tǒng)計(jì)布局/ s t r i n g h h = 算法,缺頁(yè)率,描述說(shuō)明;Ob j e c t o b j = ;d f mo d e l =n e w De f a u l t Ta b l e Mo d e l ( o b j , h h );t a ble =n e w
29、J Ta ble ( d fmo d el);t a b l e . s e t En a b l e d ( f a l s e );t a b l e . s e t Pr e f e r r e d S c r o l l a b l e Vi e wp o r t S i z e ( n e w Di me n s i o n ( 3 0 0 , 2 2 3 ) ); js p =n e w J S c r o l l Pa n e ( t a b l e );S tr i n g e l e me n t = ( OPT)最佳置換算法,(FI FO)先進(jìn)先出置換算法,(LRU)最近最
30、久未 使用置換算法;f o r ( i n t i =0 ; i 1 6 ; i +)v e c t o r =n e w Ve c t o r ( ); if ( i 3 )v e c t o r . a d d ( e l e me n t i ); el s ev e c t o r . a d d ();v e c t o r . a d d ();v e c t o r . a d d ();d f mo d e l . a d d Ro w( v e c t o r );t h i s . s e t La y o u t ( n e w Bo r d e r La y o u t
31、 ();t h i s . a d d ( p n 0 , No r t h );t h i s . a d d ( p n 6 , Ce n t e r );t h i s . a d d ( j s p , S o u t h );this.setBounds(250, 123, 800, 500);this.setDefaultCloseOperation(EXlT_ON_CLOSE); t h i s . s e t Re s i z a b l e ( f a l s e );t h i s . s e t Vi s i b l e ( t r u e );p u b l i c v
32、 o i d a c t i o n Pe r f o r me d ( Ac t i o n Ev e n t e ) / / TODOAu t o - g e n e r a t e d me t h o d s t ub Ge t S e q u e s e g e t s =n e w Ge t S e q u e s e ();固定輸入復(fù)選框的觸發(fā)事件/ if(e.getSource() =ckb)i f ( c k b . i s S e l e c t e d ( ) ) g e t s e q . s e t En a b l e d ( f a l s e );e l s e
33、g e t s e q . s e t En a b l e d ( t r u e );獲得隨機(jī)索引號(hào)按鈕觸發(fā)事件/ i f ( e . g e t S o u r c e ()=g e ts e q)g e t s . s e t S e q u e s e ();a b t i me =0;a b r a t e =0;c h t i me =0;s e q 1 . s e t Te x t ( g e t s . g e t S e q u e s e ();for(int i=0;iram. length;i+)r a m i =;/ /確定按鈕的觸發(fā)事件/i f(e . get S
34、o ur c e ( ) = = s u r e)b o o l e a n b =t r u e ; / /作為檢查輸入的頁(yè)面串?dāng)?shù)據(jù)是否有誤的開關(guān)r a m 0 ;r a m 1 =;r a m 2 =;a b t i me =0;c h t i me =0;S t r i n g s e q =g e t s . g e t S e q ( s e q 1 . g e t Te x t ( ) . t r i m();f o r ( i n t i =0 ; i 15)J Op t i o n Pa n e . s h o wMe s s a g e Di a l o g ( n u l
35、l ,系統(tǒng)提示:輸入格式錯(cuò)誤,請(qǐng)輸入1 9的數(shù)并以空格隔開!);b =f a l s e;b r e a k; e l s es e q 2 i . s e t Te x t ( s e q i ); se q 3 i =s e q i ;i n t l o c a t i o n =0;boolean absent=true;f o r ( i n t i =0 ; i s e q 2 . l e n g t h ; i +)f o r ( i n t j =3 * i , n =0 ; j =2 +i * 3 ; j +)i f ( t h i s . i s h a d ( s e q
36、2 i . g e t Te x t ( ) . t r i m( ) ) ) / / 如果已經(jīng)在內(nèi)存中,則不產(chǎn)生缺頁(yè)中斷a b s e n t =f a l s e; e l s e if(loca tion=this.isEmply()!=-1)/ / 如果內(nèi)存有空閑塊,則產(chǎn)生缺頁(yè)中斷r a m l o c a t i o n =s e q 2 i . g e t Te x t ( ) . t r i m();p a g e j . s e t Te x t ( r a m l o c a t i o n );a b t i me+ + ;b r e a k; e l s e i f (
37、s e l e c t e d . i n d e x Of ( OP T ) ! =- 1 )/ / 如果是 OPT 算法 th i s . OPT( i , s e q 2 i . g e t Te x t ( ) . t r i m();b r e a k;else if(selected.indexOf(FIFO )!=-1) /如果是 FI FO 算法 t h i s . FI FO(i , s e q 2i . g e t Te x t ( ) . t r i m();b r e a k;else if(selected.indexOf(LRU)!=-1) /如果是 LRU 算法
38、t h i s . LRU( i , s e q 2i . g e t Te x t ( ) . t r i m();b r e a k;f o r ( i n t j =3 * i , m=0 ; j =2 +i * 3;j +)i f ( ! a b s e n t )/ /如果不缺頁(yè)pa g e j . s e t Te x t ();s e q 3 i =; e l s e/ /如果發(fā)生缺頁(yè)pa g e j . s e t Te x t ( r a m m);m+ + ;a b s e n t =t r u e;De c i ma l Fo r ma t d f o r ma t =
39、n e w De c i ma l Fo r ma t ( #. 0 0 % ); a b r a t e =a b t i me / ( d o u b l e ) s e q . l e n g t h;i f ( b &s e l e c t e d . i n d e x Of ( OPT ) ! =- 1 )/ / 如果是 OP T算法 ct i me . s e t Te x t ( I n t e g e r . t o S t r i n g ( c h t i me );p r a t e . s e t Te x t ( d f o r ma t . f o r ma t
40、( a b r a t e );t a b l e . s e t Va l u e At ( d f o r ma t . f o r ma t ( a b r a t e ) , 0 , 1 );table.setValue At(頁(yè)面總數(shù):+seq.length+缺頁(yè)次數(shù):+a b t i me+置換次數(shù):+c h t i me , 0 , 2 ); e l s e i f ( b&s e l e c t e d . i n d e x Of ( FI F O ) ! =- 1 ) /如果是FI FO 算法 c t ime . s e t Te x t ( I n t e g e r .
41、 t o S t r i n g ( c h t i me ) );p r a t e . s e t Te x t ( d f o r ma t . f o r ma t ( a b r a t e ) ) ;t a b l e . s e t Va l u e At ( d f o r ma t . f o r ma t ( a b r a t e ),1 ,1);table.setValue At(頁(yè)面總數(shù):+seq.length+缺頁(yè)次數(shù):+a b t i me+置換次數(shù):+c h t i me , 1 , 2 ); e l s e i f ( b &s e l e c t e d .
42、 i n d e x Of ( LRU ) ! =- 1 ) / /如果是 LRU 算法 c t ime . s e t Te x t ( I n t e g e r . t o S t r i n g ( c h t i me ) );p r a t e . s e t Te x t ( d f o r ma t . f o r ma t ( a b r a t e ) ) ;t a b l e . s e t Va l u e At ( d f o r ma t . f o r ma t ( a b r a t e ) , 2 , 1 );table.setValue At(頁(yè)面總數(shù):+s
43、eq.length+缺頁(yè)次數(shù):+a b t i me+置換次數(shù):+c h t i me , 2 , 2 ); 清除按鈕的觸發(fā)事件/ i f ( e . g e t S o u r c e () =c l e a r) s e q 1 . s e t Te x t ( ); a b t i me =0;a b r a t e =0;c h t i me =0;f o r ( i n t i =0 ; i s e q 2 . l e n g t h ; i +)s e q 2 i . s e t Te x t ();c t i me . s e t Te x t ();p r a t e . s
44、e t Te x t ();f o r ( i n t i =0 ; i p a g e . l e n g t h ; i +) p a g e i . s e t Te x t (); for(int i=0;iram. length;i+) r a m i =; TOC o 1-5 h z t a b l e .s e t Va lu e At ( ,0 ,1 );t a b l e .s e t Va lu e At ( ,0 ,2);t a b l e .s e t Va lu e At ( ,1 ,1 );t a b l e .s e t Va lu e At ( ,1 ,2 );
45、t a b l e .s e t Va lu e At ( ,2 ,1 );t a b l e .s e t Va lu e At ( ,2 ,2 );p u b l i c i n t i s Emp l y ( )/ /檢查內(nèi)存是否有空閑塊i n t b =- 1;f o r ( i n t i =0 ; i r a m. l e n g t h ; i +)i f ( r a m i . e q u a l s ()b =i;r e t u r n b;r e t u r n b;p u b l i c b o o l e a n i s h a d ( S t r i n g s t
46、r )/ /檢查是否已經(jīng)存在內(nèi)存中b o o l e a n b =f a l s e;f o r ( i n t i =0 ; i r a m. l e n g t h ; i +)i f ( r a m i . e q u a l s ( s t r )b =t r u e;r e t u r n b;public void OPT(int start,String seq)/ / OPT 算法i f ( s e q . e q u a l s ()f o r ( i n t i =0 ; i r a m. l e n g t h ; i +) r a m i =; e l s ei n
47、t l a r g e =0;/記錄ram數(shù)組中的元素哪個(gè)是未來(lái)最長(zhǎng)時(shí)間不被訪問的in t a =0 , b=0 , c =0;S t r i n g Bu f f e r s t r =n e w S t r i n g Bu f f e r ();f o r ( i n t i =s t a r t ; i s e q 2 . l e n g t h ; i +)s t r . a p p e n d ( s e q 2 i . g e t Te x t ( ) . t r i m();/ System. out.println(str= = = = +str);/用于測(cè)試a =s t r
48、 . i n d e x Of ( r a m 0 );/ / /記錄r a m 0 在剩余頁(yè)面中第一次出現(xiàn)的位置b =s t r .i n d e x Of ( r a m 1 );/ / /記錄r a m 1 在剩余頁(yè)面中第一次出現(xiàn)的位置c =s t r .i n d e x Of ( r a m 2 );/ / /記錄r a m 2 在剩余頁(yè)面中第一次出現(xiàn)的位置i f ( a=-1 )r a m 0 =s e q;a b t i me+ + ;c h t i me+;r e t u r n;s e i f ( b =- 1 ) ra m 1 =s e q;a b t i me+ + ;c
49、 h t i me+;r e t u r n;s e i f ( c =- 1 ) ra m 2 =s e q;a b t i me+ + ;c h t i me+;r e t u r n;l a r g e =Ma t h . max ( a , b );l a r g e =Ma t h . ma x ( c , l a r g e );i f ( l a r g e =a )r a m 0 =s e q; e l s e i f ( l a r g e=b ) r a m 1 =s e q; e l s e i f ( l a r g e=c ) r a m 2 =s e q;a b t
50、 i me+ + ;c h t i me+ + ;public void FIFO( int start,String seq)/FI FO 算法i f ( s e q . e q u a l s ()f o r ( i n t i =0 ; i r a m. l e n g t h ; i +) r a m i =;int small=0;/ / /記錄r a m數(shù)組中的元素哪個(gè)是最先進(jìn)入內(nèi)存的in t a=0 , b =0 , c =0;S t r i n g Bu f f e r s t r =n e w S t r i n g Bu f f e r ();f o r ( i n t i
51、 =0 ; i s t a r t ; i+)s t r . a p p e n d ( s e q 3 i );/System. out.println(str= = = = +str);/用于測(cè)試=s t r . la s t I n d e x Of(r a m 0 );/ / /記錄m 0 在剩余頁(yè)面中最后一次出現(xiàn)的位置a s t I n d e x Of(r a m 1 );/ / /記錄m 1 在剩余頁(yè)面中最后一次出現(xiàn)的位置c =s t r . la s t I n d e x Ofm 2 );/ / /記錄m 2 在剩余頁(yè)面中最后一次出現(xiàn)的位置sma l l =Ma t h .
52、mi, b );sma l l =Ma t h . mi, s ma l l ); if ( s ma l l =a )r a m 0 =s e q;s e i f ( s ma l l =b ) r a m 1 =s e q;s e i f ( s ma l l =c ) r a m 2 =s e q;a b t i me+ + ;c h t i me+ + ;public void LRU(int start,String seq)/LRU 算法i f ( s e q . e q u a l s ()f o r ( i n t i =0 ; i r a m. l e n g t h ; i
53、 +) r a m i =; e l s eint small=0;/ / /記錄r a m數(shù)組中的元素哪個(gè)是最先進(jìn)入內(nèi)存的in t a=0 , b =0 , c =0;S t r i n g Bu f f e r s t r =n e w S t r i n g Bu f f e r ();f o r ( i n t i =0 ; i s t a r t ; i+)s t r . a p p e n d ( s e q 2 i . g e t Te x t ( ) . t r i m();/ System. out.println(str= = = = +str);/用 于測(cè)試a =s t
54、r . l a s t I n d e x Of ( r a m 0 );/ / /記錄r a m 0 在剩余頁(yè)面中最近一次出現(xiàn)的位置b =s t r . l a s t I n d e x Of ( r a m 1 );/ / /記錄r a m 1 在剩余頁(yè)面中最近一次出現(xiàn)的位置c =s t r . l a s t I n d e x Of ( r a m 2 );/ / /記錄r a m 2 在剩余頁(yè)面中最近一次出現(xiàn)的位置sma l l=Mat h .mi n ( a ,b );sma l l=Mat h .mi n ( c ,s ma ll ); if ( s ma l l =a )r
55、a m 0 =s e q; e l s e i f ( s ma l l=b ) r a m 1 =s e q; e l s e i f ( s ma l l=c ) r a m 2 =s e q;a b t i me+ + ;c h t i me+ + ;p u b l i c v o i d i t e mS t a t e Ch a n g e d ( I t e mEv e n t e )/ / TODO Au t o - g e n e r a t e d me t h o d s t ubi f ( e . g e t S o u r c e ( ) =c h o i c e )s
56、 e l e c t e d =c h o i c e . g e t S e l e c t e d I t e m();a b t i me =0;a b r a t e =0;c h t i me =0;p u b l i c s t a t i c v o i d ma i n ( S t r i n g a r g s ) / / TODO Au t o - g e n e r a t e d me t h o d s t ubOs Vi e w o s =n e w Os Vi e w(計(jì)算機(jī)操作系通用請(qǐng)求分頁(yè)調(diào)度算法程序:”);4模塊調(diào)試與系統(tǒng)測(cè)試4.1模塊調(diào)試:輸入的數(shù)據(jù)可以通過自動(dòng)產(chǎn)生隨機(jī)數(shù)獲得,也可以通過輸入獲得。自動(dòng)產(chǎn)生的隨機(jī)數(shù)是為1 5個(gè)19的 隨機(jī)i nt型數(shù),而輸入獲得的數(shù)則是小于或等于15個(gè)的19 的int型數(shù)。如果輸入的是字符或超過了 19的范圍則會(huì)出現(xiàn)錯(cuò)誤提示,并且在清除后可在重新輸入。輸出是19的頁(yè)面號(hào),即輸出在訪問每個(gè)頁(yè)面時(shí)內(nèi)存中物理塊的頁(yè)面號(hào)的情況,同時(shí)也輸出每種算法的缺 頁(yè)次數(shù)和缺頁(yè)率,以及每個(gè)算法的基本性能。程序所能達(dá)到的基本功能是根據(jù)所選的算法輸出運(yùn)用該算法在內(nèi)存中的頁(yè)面調(diào)度情況,并根據(jù)缺頁(yè)情況算 出
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 包干制合同模板
- 攝影大賽合同模板
- 2024年北林科發(fā)〔〕57號(hào)廣告制作與發(fā)布合同
- 2024年公共安全項(xiàng)目:防火門采購(gòu)安裝合同
- 2024年體育場(chǎng)館冠名贊助合同
- 2024年企業(yè)信息安全評(píng)估與整改合同
- (2024版)跨境電子商務(wù)平臺(tái)運(yùn)營(yíng)與服務(wù)外包合同
- 2024年互聯(lián)網(wǎng)廣告投放協(xié)議
- 2024年體育訓(xùn)練學(xué)校合作伙伴協(xié)議
- 2024年光電子技術(shù)研發(fā)合同
- 鹽酸安全知識(shí)培訓(xùn)
- 萬(wàn)盛關(guān)于成立醫(yī)療設(shè)備公司組建方案(參考模板)
- 停線管理規(guī)定
- 《我和小姐姐克拉拉》閱讀題及答案(一)
- 大型展會(huì)對(duì)城市會(huì)展業(yè)發(fā)展影響文獻(xiàn)綜述會(huì)展專業(yè)
- 鄉(xiāng)鎮(zhèn)結(jié)核病防治工作職責(zé)
- 機(jī)組啟動(dòng)試運(yùn)行工作報(bào)告
- 禮儀隊(duì)工作計(jì)劃三篇
- 互補(bǔ)輸出級(jí)介紹
- 中波廣播發(fā)送系統(tǒng)概述
- (完整版)管道代號(hào)對(duì)照
評(píng)論
0/150
提交評(píng)論