Nachos的線程管理模塊升級_第1頁
Nachos的線程管理模塊升級_第2頁
Nachos的線程管理模塊升級_第3頁
Nachos的線程管理模塊升級_第4頁
Nachos的線程管理模塊升級_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)實踐設(shè)計報告學(xué)號姓名1 作業(yè)題目Nachos的線程管理模塊升級2 本作業(yè)要求本實習(xí)項目希望通過修改Nachos系統(tǒng)平臺的底層源代碼來實現(xiàn)以下目標:1. 擴充線程數(shù)據(jù)結(jié)構(gòu)。增加“用戶ID、線程ID”兩個數(shù)據(jù)成員,同時在Nachos現(xiàn)有的線程管理機制中增加對這兩個數(shù)據(jù)成員的維護機制。(必選)2. 擴展現(xiàn)有的線程狀態(tài)。Nachos平臺中的線程狀態(tài)只有“初啟態(tài)”、“就緒態(tài)”、“阻塞態(tài)”、“運行態(tài)”四種情況。請增加“掛起(suspending這個狀態(tài),所謂“掛起”是指當前的線程映象保存在磁盤文件而不是內(nèi)存中。“掛起”狀態(tài)是未來實現(xiàn)“虛擬內(nèi)存管理”的重要基礎(chǔ)。3. 修改線程調(diào)度算法。將Nachos

2、平臺的線程管理機制調(diào)整為“搶占式”。具體可選擇“時間片輪轉(zhuǎn)”、“優(yōu)先級調(diào)度”、“多級隊列”等不同的調(diào)度算法。(必選)4. 增加全局性的線程管理機制。擴充Nachos平臺的現(xiàn)有操作命令,例如可以增加一個名為“ThreadView”的命令,執(zhí)行該命令,可以在屏幕上顯示目前所有存在的線程信息,包括“用戶ID“、“線程ID”、“當前狀態(tài)”等。5. 實現(xiàn)一個同步與互斥的例子。在完成以上修改后,可編寫一個實例程序,來實現(xiàn)某個“同步互斥”經(jīng)典問題的正確解法。例如可選擇“哲學(xué)家就餐”問題,實例程序會創(chuàng)建5個哲學(xué)家線程,這些線程擁有同樣的用戶ID,可以遵循“信號量”機制來正確的運行。也可以選擇“生產(chǎn)者消費者”問

3、題、“睡眠理發(fā)師問題”等其他經(jīng)典IPC問題。(可選)3 實踐過程詳細說明1 .擴充線程數(shù)據(jù)結(jié)構(gòu):在Thread類中增加線程ID,增加整形變量tid,增加全局變量id_port對tid進行管理,tid的分配是從0開始掃描直到最大的線程數(shù),看是否已經(jīng)被分配,尋找到一個最小的未被分配的tid分配給新建的線程,可以增加一些函數(shù)來維護線程ID。因為沒有理解用戶ID號是什么,所以在這次的實驗中沒有擴充用戶ID。2 .擴展現(xiàn)有的線程狀態(tài):在ThreadStatus中增加倆個元素STATIC_READY和STATIC_BLOCKED狀態(tài),增加了倆個成員函數(shù)Thread:suspend()OThread:act

4、ive(),分別為掛起線程和激活線程。在掛起時,判斷線程的狀態(tài),若為正在運行或者就緒,則把線程狀態(tài)修改為STATIC_READY;若為阻塞,則修改為STATIC_BLOCKED,并把此線程加入掛起隊列中。在active()中根據(jù)給定的線程的id在掛起隊列中找到指定線程并修改其狀態(tài)。注:由于時間有限,如何把線程保存到磁盤文件中的功能未實現(xiàn)。3.修改線程調(diào)度算法:分為時間片輪轉(zhuǎn)和多級隊列算法。時間片輪轉(zhuǎn)算法中要求每個進程每個進程依次按時間片輪流執(zhí)行,時間片用完則計時器觸發(fā)一中斷,重新調(diào)度,在一給定的時間內(nèi),就緒進程均能獲得一時間片的執(zhí)行時間。多級隊列算法根據(jù)作業(yè)的性質(zhì)或類型的不同,將就緒進程隊列再

5、分為若干個獨立于隊列,每個隊列采用一種算法。因此在scheduler.h增加了兩個就緒進程隊列,為各隊列分配一定的占用CPU的時間比例來處理各隊列之間的關(guān)系。1)就緒隊列按時間片大小劃分,時間片愈小,優(yōu)先權(quán)愈高;(2)進程不固定在一個隊列中,新創(chuàng)建進程&最高優(yōu)先權(quán)隊列,時間片到尚未完成的進程a下一級優(yōu)先隊列的末尾;4 代碼修改及評測說明代碼修改主要有:1 .擴充線程數(shù)據(jù)結(jié)構(gòu):在Thread.h中1聲明pritave的成員變量uid和tid,在system.h/+rach34ode/threadsWeadh!EclipseFileEditSourceRefactorNavigateSearchR

6、unProjectWindowHelp卜中QyQY四O回用Qi而 thneadxc E schedulec listh mainxc出 systemxc ttireacttest.ccW stats, h listcc interrupts system.hEverythrMdtaionExecutisiistackfaractivatiQiirBcardi(stackJRjp11and11聶tack11,即亂檔tD疑wCPU(regiLstsri曲11磨naninniiifmadiineStaleJ由status(rimnina/ready/blo4kedj勾璇ttrearisalssbel

7、img比auwraddress:spare:threadsthatunlyrwintirefei麗眶aKILLsiiclrMS等沖e.classThreadprivate:HUESSDE1OTCtffiKGEthe011rderGftbsefirsttwomembers1HFYNUFbeinth加posttienf(xrSWITCHtowark.inft stackTop;群theCTnnentstartpointerintmachineStateMachinestatesize:/allregistersexExptfsrstacffapinttid;intlevelschar*uid;pu

8、blic:Thread(char-debugHameFintTHJ.char1n);intusedslip;*Thread(f/tallsotEbThmriH艮SITEthraadbeingdeletedIfmustnutbe風(fēng)口而現(xiàn)hendelateiscalled即bask,thraulBpsratistaticThread*CreatjhreadlcharithreadNamejChar*uh/theckifthreadcanbeforkedint Tid(return tid;void Fok|UoidFun匚tionPt func int arg; /0島卸卸許階仁於小QZa白的fi

9、.HI|&/中機fIfIIrxI曲th曲d口1scheduler,atlisthmainxcsysterxcIttireadtest.eestats.li3listccmintenupt.ee占sy5tem.fi罌j出曲曲5intendefineTHREADS,NUH128.1/thesystemcanhaveTHREADSNUH32threadsincludecopyrightNhnclideutility,h(includethread-h1tuiclideschedulerincludeinterruptincludestats,hfincludctiter,hI!Initializat

10、ionanddeoproutinesexternvoidInitialize(intargcfcharargv);Initialization,calledbeforeanythingelseexternvoidCleanup()Cleanup,calledwhen/Mdsista.extern Thread WrartThread;extern Thread *threadToBeDestroyed;extern Scheduler 也heduler:extern Interrupt Interrupt1extern Statistics Ws;extern Timer Zirner;ext

11、ern List* hook list;/ the thread holding the CPU/ the thread that just finished the 軸 lilt/ interrupt status performance metrics/ the hardware 祉an clock/manage the tid*打打*打*,*收*工*打*收升*打externint*idport;externintthreadjlag;#ifddUSERPROGRAMfindudemato.hexternMachinmachine:/userprog冏nemoryandregisters#

12、endif#ifdefFILE5YS_NEEDED/FILERSorFILESY5STUBfincludefilesys-h11externFileSystem*fikSystem;#endifWritableSmartInsert35:232.擴展現(xiàn)有的線程狀態(tài):在system.h中聲明externList*hook_list,在thread.cc中聲明Thread:suspend僧口Thread:active(intthread_id),在list.cc中13.修改線程調(diào)度算法:在thread.h中聲明privateintlevel,在scheduler.cc中修改了Scheduler:R

13、eadyToRun(Thread*thread)和修改了Scheduler:FindNexToRun(),在scheduler.h中1聲明了privateList*readyList1和List*readyList2CiC+4-nachw.tcode.tliieads.EcheduleF.K-EclipseF2EditSourcefefartMNavigate5earhftrRfcjaiWindowHelp0T 臥 g*蘭VDebug易保+i.thftad.(t2KtahilerxcKZlisi.hEmaincc訝部的n#:區(qū)thwit融*i.stats.hEli瞰Sintmpt.eeG*te

14、mJithrtad.hiinteirupt.hiubliry.tt1E/h,“對血l;她耐打朗叫H H ff fl H-Harkathreadasready,hutnotrurwing.hititonthereadylist,%rLaterschedulingontotheCPU.threadisthethreadtobeputonthereadylist.nid5chediler::RNdyTAfpenil(voidthread;if他reed電ctl曬l|urnentThreadgetlevfJHurnfltrhPHd-YitU);elseifthrE3d-XKelslipS)thread

15、-etlmUl);readyListb3明p印川IvtMJthraadl;if卜read-可式呢gjMmntn耐溺值劇)|curRntTlireadieLdH;)a*曲威-靖式iMim;readylistS-xAppendmidthread;)/卜中BTFT-KTWM/,=K7V-S-TTF9丁=5=,川=,=/Sdietiiler:zFlndiextToRiii/ReturnthenextthreadtobescheduledontotheCPU.Tftherearerareadythreadsrreturnnull/Sideeffect:WiiGbESmartlnsert 11 iC/C+

16、-nachoS3J1,c0de1!thread5scheduler.cc-EclipseFilfEdit5o*e曬機期艮的巾掘searchanEject叫nd。*Help百I國甫“31商v0”片”號“茵曲介點III叵|?G”中“工號 Detwrf1、忠由曜山底i?shediieixck1耐力0mainxl5Enpty1J)(return(ThreadJ|reddyList-sRenDwel;elseif(Ireadytistl-IsE*pty)treturn(Thread*)resdyListl-taave(;elseU?readyLiitZ-I&Efipty(H(return(Thread,

17、卜助dyList2-RfihO峰口;)elsereturnNULL;/Scheduler:RunDi$p4UlitheCPUtonemhrewJ.saveiliestateoftheaidthreadHdludtheititeofthenewtiireid,bycallingthenaciiinedependentcontextswitdtroutine,switch.Hate:we拈釗晚the5tateofthepreviouslyrunningthread曲與alreadybeenchangedfrutrunningtoblKkedorreadydepending.HSideeffect:

18、ilTheglobalvariablecurrentlhreadbEccmesnextliread.HnextHreadisthethreadtDbeputintotheCPU./-Wimble即3點II15M72:64.運行結(jié)果:qfgu:auburrtu:-jw&rkTAchciSinafhm-Sicflds.thrMdsqfgu卸tmntu:CH,nnhoE/n恥加弓14/code/threads$qfguubuntu:-ZMirk/naGhos/nachos13,/code/threadsSqFguubuhTuL/wdrkfiiH亡h的,附亡h的-3.4,亡口也找卜而也$qfguubu

19、ntu:-/iirk/nacho5/nacho5-3;4/code/thfead5$./nachos*nachossthreadHslip1* *nachossthread9slip2* n虻hgthrcgrf15Up1* *nachossthread1slip2* *nBEhnasthread2slip1nachosthread2slip2* *nachossthread3slip1* *nachossthread3slip2nachossthread1slip1* *nachnssthread4slip2* *nqchCifi$threadBslip3* nachnssthread6sli

20、pfl* *nachossthread9slip5時chq$i$thread自$Up6* *nachossthread1slipJ* *nachossthread1slip4* *nfiCheiSthread1$Up9* *nachossthread5slip1* *nachossthread5ilip2nachossthrstd2slip3* *nachossthread2slip4*nachossthreadsslip5*nachessthreadgslip6nachos1sthread1slip3*4*nachossthread1slip4*nachos1sthreadislip54t*

21、nachos1sthread5sUp1k*nachossthread5slip2nachos1sthread2slip3nachassthread2slip4*nachossthread2slipS*nachos1sthread2slip6nachossthread3slip3*nachosethread3slip4*#nachossthread3slip5qfguubuntulTwork/nachos/nachos3,4/code/threads文件片劇目查看4的線澈I)幫助出-1*1Bqfguubuntu:;/work/nachos/nachos=3.4/code/threadsOGDO文

22、件由片網(wǎng)目查得M蜴瑞I)幫助的4t*nachossthread3slip41nachessthread3slip5nachos1sthread3slip6*nachossthread4slip3*nachossthread4Slip44t4nachos1sthread4專lip5nachossthread4slip6*nachos1sthread1slip64睢*nachossthread5slip3.*nachossthread5slip44t*nachos&thread5Slip5nachos導(dǎo)thread5slip6中宜n配11。5&thread0slip79*nachossthread電slip8qfguubuntil;/work/nachos/nachos3.4/code/threadsBE文件(E)酬周日s(v)線瑞山幫即電*力mthssthreadBSlip89nachossthread0slip9naclios&thread0slipIO*nachossthread2slip7*nachossthread2slip84*n久hsFthread2Slip94*nachossthread2slip10nachos&thread3slip7nachos1

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論