操作系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第頁(yè)中南大學(xué)操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告題目:多用戶(hù)多任務(wù)的類(lèi)操作系統(tǒng)學(xué)院:信息科學(xué)及工程學(xué)院姓名:班級(jí):日期:2019/07目錄概述課程設(shè)計(jì)要求設(shè)計(jì)的基本原理和概念總體設(shè)計(jì):實(shí)現(xiàn)的方法和主要技術(shù)路線(xiàn)1.總體功能模塊圖2.總體功能流圖詳細(xì)設(shè)計(jì):模塊內(nèi)部的流程實(shí)現(xiàn)算法運(yùn)行結(jié)果完成的情況使用說(shuō)明實(shí)驗(yàn)總結(jié)參考文獻(xiàn)附件:源程序代碼概述操作系統(tǒng)課程主要講述的內(nèi)容是多道操作系統(tǒng)的原理及技術(shù),及其它計(jì)算機(jī)原理、編譯原理、匯編語(yǔ)言、計(jì)算機(jī)網(wǎng)絡(luò)、程序設(shè)計(jì)等專(zhuān)業(yè)課程關(guān)系十分密切。本課程設(shè)計(jì)的目的綜合應(yīng)用學(xué)生所學(xué)知識(shí),建立系統(tǒng)和完整的計(jì)算機(jī)系統(tǒng)概念,理解和鞏固操作系統(tǒng)基本理論、原理和方法,掌握操作系統(tǒng)開(kāi)發(fā)的基本技能。課程設(shè)計(jì)要求采用VC、VB、java或C等編程語(yǔ)言,模擬開(kāi)發(fā)一個(gè)多用戶(hù)多任務(wù)的類(lèi)操作系統(tǒng)軟件。要求如下:模擬進(jìn)程調(diào)度算法,模擬各種進(jìn)程調(diào)度算法,并能管理各種進(jìn)程調(diào)度算法的演示過(guò)程。模擬各種內(nèi)存分配算法及回收過(guò)程,并能動(dòng)態(tài)演示。結(jié)合進(jìn)程調(diào)度算法,能為進(jìn)程模擬分配內(nèi)存,并設(shè)計(jì)一個(gè)跟蹤該內(nèi)存模擬分配的進(jìn)程或線(xiàn)程,記錄內(nèi)存分配的結(jié)果;模擬多用戶(hù)登錄管理過(guò)程,能允許多個(gè)用戶(hù)登錄,為每個(gè)用戶(hù)建立進(jìn)程或線(xiàn)程,并進(jìn)行進(jìn)程管理;能模擬文件系統(tǒng)管理,進(jìn)程可以對(duì)文件系統(tǒng)(包括文件和目錄)進(jìn)行讀、寫(xiě)、創(chuàng)建、刪除、打開(kāi)、關(guān)閉等操作;模擬磁盤(pán)管理過(guò)程,結(jié)合文件系統(tǒng)管理,顯示磁盤(pán)管理的結(jié)構(gòu)和文件在磁盤(pán)上的分布情況。能模擬進(jìn)程通信管理,用戶(hù)之間可以相互通信交流;最好能采用類(lèi)似于Windows的窗口界面。設(shè)計(jì)的基本原理和概念本系統(tǒng)軟件是模擬操作系統(tǒng)的整個(gè)工作過(guò)程,主要功能包括多用戶(hù)登錄管理,文件及用戶(hù)管理,進(jìn)程及存儲(chǔ)管理,以及系統(tǒng)進(jìn)程管理。多用戶(hù)操作系統(tǒng)允許多個(gè)不同用戶(hù)同時(shí)使用計(jì)算機(jī)的資源。操作系統(tǒng)必須確保均衡地滿(mǎn)足各個(gè)用戶(hù)的要求,他們使用的各個(gè)程序都具有足夠且獨(dú)立的資源,從而使一個(gè)用戶(hù)的問(wèn)題不會(huì)影響到整個(gè)用戶(hù)群。在本系統(tǒng)中,將用戶(hù)分為管理員用戶(hù)和普通用戶(hù)。登陸時(shí)可選擇,若選擇管理員用戶(hù)登陸,則對(duì)各用戶(hù)有管理權(quán)限(添加或刪除),對(duì)文件系統(tǒng)不僅有讀寫(xiě)權(quán)限,還能新建、刪除、修改文件或目錄等;若選擇普通用戶(hù)登陸,則只能查看用戶(hù),且只能讀文件。多用戶(hù)多級(jí)目錄的文件系統(tǒng):通過(guò)具體的文件存儲(chǔ)空間的管理、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作的實(shí)現(xiàn),加深對(duì)文件系統(tǒng)內(nèi)部功能和實(shí)現(xiàn)過(guò)程的理解。在本系統(tǒng)中,文件及用戶(hù)管理相結(jié)合,實(shí)現(xiàn)了以下幾項(xiàng)功能:查看文件目錄結(jié)構(gòu)、文件屬性、磁盤(pán)屬性、磁盤(pán)塊分配位示圖、索引節(jié)點(diǎn)分配位示圖、用戶(hù)管理(管理員有該權(quán)限),查看用戶(hù)、新建文件/目錄(管理員權(quán)限)、刪除文件/目錄(管理員權(quán)限),讀寫(xiě)文件(普通用戶(hù)只讀)。進(jìn)程及存儲(chǔ)管理系統(tǒng):即模擬cpu調(diào)度和內(nèi)存分配。作業(yè)進(jìn)入內(nèi)存中,由CPU分配產(chǎn)生PCB屬性,并通過(guò)PCB記錄進(jìn)程狀態(tài),實(shí)驗(yàn)即以PCB代表進(jìn)程模擬調(diào)度過(guò)程;在多道系統(tǒng)中,多道系統(tǒng)中,當(dāng)就緒進(jìn)程數(shù)大于處理機(jī)數(shù)時(shí),須按照某種策略決定哪些進(jìn)程優(yōu)先占用處理機(jī),本實(shí)驗(yàn)采用優(yōu)先級(jí);進(jìn)程調(diào)度時(shí),規(guī)定若就緒隊(duì)列進(jìn)程數(shù)少于6個(gè),則自動(dòng)從后備隊(duì)列調(diào)入一個(gè)作業(yè);系統(tǒng)會(huì)將占有較多資源、預(yù)期結(jié)果不符合要求的進(jìn)程自動(dòng)掛起,并回收所占資源,而本實(shí)驗(yàn)設(shè)置為手動(dòng)掛起;在適宜條件下,系統(tǒng)會(huì)將掛起的進(jìn)程自動(dòng)解掛,而且只解掛到就緒隊(duì)列;本實(shí)驗(yàn)為簡(jiǎn)化操作,設(shè)置為手動(dòng)解掛,若解掛條件合適(即CPU各種資源可用),則解掛到就緒隊(duì)列,并分配內(nèi)存;若解掛條件不適宜,則解掛至后備隊(duì)列,但不分配內(nèi)存。系統(tǒng)進(jìn)程管理器:即任務(wù)管理器。操作系統(tǒng)是一個(gè)介于軟件和硬件之間的特殊硬件,一方面分配硬件資源另一方面支持軟件在它上面的實(shí)現(xiàn),如何實(shí)時(shí)地監(jiān)控和掌握系統(tǒng)軟硬件工作的狀態(tài)、資源分配和使用的情況,對(duì)計(jì)算機(jī)用戶(hù)而言十分重要,于是就有了任務(wù)管理器這樣的實(shí)時(shí)監(jiān)控窗口。通過(guò)這個(gè)窗口我們可以了解到電腦所有進(jìn)程運(yùn)行狀況,并對(duì)運(yùn)行的進(jìn)程加于管理和控制,正如在本系統(tǒng)中,啟動(dòng)進(jìn)程管理器后,可以通過(guò)”獲取進(jìn)程”功能來(lái)獲得本計(jì)算機(jī)啟動(dòng)的進(jìn)程,以及及該進(jìn)程相關(guān)的信息,其中包括的信息有:進(jìn)程映像名稱(chēng),進(jìn)程的PID、會(huì)話(huà)名稱(chēng)、會(huì)話(huà)次數(shù)以及內(nèi)存使用,我們可以通過(guò)這些信息來(lái)了解計(jì)算機(jī)中每個(gè)進(jìn)程的使用狀況。同時(shí)我們可以在進(jìn)程管理器上選中一個(gè)要終止的的進(jìn)程,右擊選擇關(guān)閉方式,如“根據(jù)名稱(chēng)關(guān)閉進(jìn)程”或“根據(jù)PID關(guān)閉進(jìn)程”功能按鈕,該進(jìn)程被終止執(zhí)行并退出進(jìn)程列表,此按鈕實(shí)現(xiàn)的功能正如我們電腦任務(wù)管理器的“進(jìn)程”功能,當(dāng)電腦執(zhí)行程序不能通過(guò)關(guān)閉窗口進(jìn)行正常的關(guān)閉時(shí),可以借助此辦法來(lái)關(guān)閉進(jìn)程。其中還包括了關(guān)閉進(jìn)程樹(shù)和刷新進(jìn)程列表的功能。磁盤(pán)管理:磁盤(pán)格式化時(shí),系統(tǒng)把磁盤(pán)存儲(chǔ)空間分成許多磁道。每個(gè)磁道又分成若干個(gè)扇區(qū)(又叫做磁盤(pán)塊)。之后用fdisk命令對(duì)硬盤(pán)進(jìn)行分區(qū),即使只有一個(gè)分區(qū),也必須用fdisk命令進(jìn)行分區(qū)。分區(qū)的目的,就是制作文件卷,形成文件系統(tǒng)。一個(gè)文件卷一般都被劃分成引導(dǎo)扇區(qū)、文件系統(tǒng)管理區(qū)和文件數(shù)據(jù)區(qū)。其中,文件數(shù)據(jù)區(qū)用來(lái)存放系統(tǒng)文件和用戶(hù)文件。用戶(hù)可以通過(guò)文件系統(tǒng)提供的API,創(chuàng)建、打開(kāi)、關(guān)閉和對(duì)文件進(jìn)行讀寫(xiě)。當(dāng)用戶(hù)的文件不再需要時(shí),就應(yīng)該刪除。把一個(gè)文件放到磁盤(pán)上時(shí),可以組織成連續(xù)文件、鏈接文件或索引文件等。因此,磁盤(pán)空間的分配方法也有兩種,一種是連續(xù)空間的分配,一種是不連續(xù)空間的分配(又叫動(dòng)態(tài)分配)。四、總體設(shè)計(jì)1.總體功能模塊及關(guān)系圖系統(tǒng)進(jìn)程管理文件及用戶(hù)管理多用戶(hù)多任務(wù)類(lèi)操作系統(tǒng)系統(tǒng)進(jìn)程管理文件及用戶(hù)管理多用戶(hù)多任務(wù)類(lèi)操作系統(tǒng)多用戶(hù)登陸界面磁盤(pán)管理磁盤(pán)管理進(jìn)程及存儲(chǔ)管理進(jìn)程及存儲(chǔ)管理2.總體功能流圖開(kāi)始開(kāi)始初始化登陸界面初始化登陸界面管理員用戶(hù)登陸?管理員用戶(hù)登陸?文件及用戶(hù)管理系統(tǒng)進(jìn)程管理進(jìn)程及存儲(chǔ)管理文件及用戶(hù)管理系統(tǒng)進(jìn)程管理進(jìn)程及存儲(chǔ)管理內(nèi)存分配算法進(jìn)程控制進(jìn)程調(diào)度算法任務(wù)管理器磁盤(pán)屬性及分配查看及管理用戶(hù)文件及目錄管理內(nèi)存分配算法進(jìn)程控制進(jìn)程調(diào)度算法任務(wù)管理器磁盤(pán)屬性及分配查看及管理用戶(hù)文件及目錄管理五、詳細(xì)設(shè)計(jì)(一)多用戶(hù)操作系統(tǒng)(1)數(shù)據(jù)結(jié)構(gòu)及主要函數(shù)publicclassLoginViewextendsJFrame{ JFramejframe=newJFrame("歡迎登陸系統(tǒng)"); privateFilesysServerfss1=null; intsw=(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();intsh=(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight(); publicLoginView(FilesysServerfss){ this.fss1=fss; //初始化面板 JPanelloginPanel=newJPanel(); JLabeltitleJLable=newJLabel(); titleJLable.setText("歡迎登陸系統(tǒng)"); titleJLable.setSize(500,200); //用戶(hù)面板 JPaneluserPanel=newJPanel(); userPanel.setLayout(null); JButtonadminButton=newJButton(); adminButton.setText("管理員用戶(hù)登陸"); JButtonuserButton=newJButton(); userButton.setText("普通用戶(hù)登陸");(二)文件及用戶(hù)管理本系統(tǒng)分兩種用戶(hù):管理員用戶(hù)和普通用戶(hù),實(shí)現(xiàn)文件系統(tǒng)的模擬管理及查看過(guò)程。管理員用戶(hù)對(duì)文件系統(tǒng)可以進(jìn)行創(chuàng)建用戶(hù)、刪除用戶(hù)、創(chuàng)建文件、刪除文件、創(chuàng)建目錄、刪除目錄、讀文件、寫(xiě)文件、打開(kāi)文件、關(guān)閉文件、顯示目錄等操作;普通用戶(hù)只能讀文件和查看用戶(hù)。并且加入磁盤(pán)管理功能,在查看/創(chuàng)建/刪除文件等操作時(shí)時(shí),顯示文件屬性、磁盤(pán)屬性、磁盤(pán)分配情況。索引節(jié)點(diǎn)分配情況,動(dòng)態(tài)實(shí)時(shí)的掌握內(nèi)存分配。(1)數(shù)據(jù)結(jié)構(gòu)及主要函數(shù)publicclassMyFile{ publicintfsize; publicStringfname; publicStringftime; publicStringfcont; publicintfownid; publicintfgrpid; publicintfmode;publicclassDir{ //文件名 36B //TOTAL 36B publicStringfname; //文件名 15B publicintfindex; //INODE號(hào) 3B publicStringpname; //父文件名 15B publicintpindex; //父INODE號(hào) 3BpublicclassDisk{ publicfinalstaticintDISKSIZE=100*512; //磁盤(pán)大小 publicfinalstaticintINUM=80; //inode數(shù)量 publicfinalstaticintBNUM=100; //塊數(shù)量 512B*100=51200B publicfinalstaticintBSIZE=512; //塊大小 publicfinalstaticintISIZE=64; //inode大小 64B*80=5120B publicfinalstaticintDSIZE=36; //dir大小 36B*14~~512B publicfinalstaticintBASEB=11; //不能使用的塊publicclassInode{//索引節(jié)點(diǎn)信息 64B //TOTALNOW 59B publicintfsize; //文件大小 6B publicintfblock; //文件塊數(shù) 6B publicintfaddr[]; //直接塊號(hào) 4*3B publicintfadd1; //一級(jí)塊號(hào) 3B publicintfownid; //所有者ID 6B publicintfgrpid; //所在組ID 6B publicintfmode; //文件類(lèi)型權(quán)限 6B(d/-+二進(jìn)制) publicStringftime; //最近修改時(shí)間 14B(20XXXXXXXXXX) publicInode(){ faddr=newint[4];publicclassSuperBlock{ publicintbitindex[]; //空余塊位示圖 100B publicintbitblock[]; //空余節(jié)點(diǎn)位示圖 120B publicintfreindex; //剩余的節(jié)點(diǎn) 5B publicintfreblock; //剩余的塊 5B(2)流程圖文件瀏覽器文件瀏覽器管理員用戶(hù)?管理員用戶(hù)?NY磁盤(pán)管理查看文件及目錄查看及管理用戶(hù)磁盤(pán)管理查看文件及目錄查看及管理用戶(hù)索引節(jié)點(diǎn)分配磁盤(pán)塊分配磁盤(pán)屬性刪除用戶(hù)添加用戶(hù)查看用戶(hù)文件屬性讀/寫(xiě)文件刪除目錄新建目錄刪除文件新建文件索引節(jié)點(diǎn)分配磁盤(pán)塊分配磁盤(pán)屬性刪除用戶(hù)添加用戶(hù)查看用戶(hù)文件屬性讀/寫(xiě)文件刪除目錄新建目錄刪除文件新建文件查看文件及目錄查看及管理用戶(hù)磁盤(pán)管理查看文件及目錄查看及管理用戶(hù)磁盤(pán)管理索引節(jié)點(diǎn)使用情況磁盤(pán)塊使用情況磁盤(pán)屬性查看用戶(hù)讀文件文件屬性索引節(jié)點(diǎn)使用情況磁盤(pán)塊使用情況磁盤(pán)屬性查看用戶(hù)讀文件文件屬性(三)進(jìn)程及存儲(chǔ)管理3.1進(jìn)程控制:利用簡(jiǎn)單的結(jié)構(gòu)和控制方法模擬進(jìn)程結(jié)構(gòu)、進(jìn)程狀態(tài)和進(jìn)程控制。用PCB表示整個(gè)進(jìn)程實(shí)體,利用隨機(jī)數(shù)方法或鍵盤(pán)控制方法模擬進(jìn)程執(zhí)行中產(chǎn)生的事件。或者利用鼠標(biāo)或者鍵盤(pán)中斷的基于圖形接口方式的進(jìn)程控制管理。數(shù)據(jù)結(jié)構(gòu):publicclassPCB{ privateintPID;//進(jìn)程id privateinttimeNeed;//運(yùn)行所需的時(shí)間 privateintpriority;//進(jìn)程的優(yōu)先級(jí) privateintstate;//所處于的狀態(tài)5個(gè) privateintmemoryNeed;//所需內(nèi)存 privateintstartLocation;//開(kāi)始的位置 privatePCBnext;//下一個(gè)進(jìn)程控制塊的句柄 privateColorcolor;//顏色 privateintpecent;//執(zhí)行的百分比 publicfinalstaticintstate_running=0; //狀態(tài)標(biāo)志位0表示運(yùn)行1表示就緒2表示掛起3表示后備4表示解掛 publicfinalstaticintstate_ready=1; //就緒 publicfinalstaticintstate_hang=2; //掛起 publicfinalstaticintstate_reserve=3; //后備 publicfinalstaticintstate_resume=3; //解掛 publicfinalstaticintstate_block=4; //阻塞 publicfinalstaticintstate_dead=5; //死亡 //默認(rèn)構(gòu)造 publicPCB(){(2)主要函數(shù):publicclassScheduling{}publicbooleanexecuteProcess(){}queue.sortQueue1(); //對(duì)就緒隊(duì)列按優(yōu)先級(jí)排序 publicvoidschedulingProcess(){}/*調(diào)度進(jìn)程進(jìn)入ReadyQueue*/ publicbooleanschedulingFromResume(){}/*從解掛隊(duì)列調(diào)度進(jìn)程進(jìn)入就緒隊(duì)列*/ publicbooleanschedulingFromReserve(){}/*從后備隊(duì)列調(diào)度進(jìn)程進(jìn)入就緒隊(duì)列*/ publicvoidresumeProcess(PCBpcb){}/*結(jié)束一條進(jìn)程*/ publicvoidaddProcess(inttimeNeed,intpriority,intmemoryNeed){}//添加進(jìn)程 publicbooleanblockProcess(){}/*阻塞進(jìn)程*/classresumeBlockextendsThread{}/*解除阻塞*/ publicbooleanhangProcess(){}/*掛起進(jìn)程*/ classresumeHangextendsThread{ PCBpcb; inttime; publicresumeHang(PCBpcb,inttime){ this.pcb=pcb; this.time=time; }}/*解掛*/ publicintproducePID(){}//隨機(jī)產(chǎn)生PID(3)算法設(shè)計(jì)創(chuàng)建進(jìn)程:輸入進(jìn)程的名稱(chēng),先判斷進(jìn)程名是否已存在,若已存在,則創(chuàng)建進(jìn)程失敗,需重新操作,創(chuàng)建進(jìn)程成功后,新進(jìn)程進(jìn)入就緒隊(duì)列。若執(zhí)行態(tài)為空,將進(jìn)程插入執(zhí)行態(tài)。阻塞進(jìn)程:若當(dāng)前有執(zhí)行進(jìn)程,則將其阻塞,并將進(jìn)程加入阻塞態(tài),若就緒隊(duì)列不為空,則就緒隊(duì)列第一個(gè)進(jìn)程插入執(zhí)行態(tài);若當(dāng)前無(wú)執(zhí)行進(jìn)程,則阻塞失敗。喚醒進(jìn)程:若當(dāng)前阻塞態(tài)不為空,則將阻塞隊(duì)列第一個(gè)進(jìn)程插入就緒態(tài);若當(dāng)前阻塞態(tài)為空,則喚醒失敗。時(shí)間片到:若當(dāng)前有執(zhí)行態(tài)進(jìn)程,則插入就緒隊(duì)?wèi)B(tài),并將就緒態(tài)第一個(gè)進(jìn)程進(jìn)入執(zhí)行態(tài);若當(dāng)前無(wú)執(zhí)行進(jìn)程,則無(wú)執(zhí)行進(jìn)程。結(jié)束進(jìn)程:若當(dāng)前有執(zhí)行進(jìn)程,則結(jié)束進(jìn)程,若當(dāng)前就緒態(tài)不為空,則就緒態(tài)第一個(gè)進(jìn)程進(jìn)入執(zhí)行態(tài);若當(dāng)前無(wú)執(zhí)行進(jìn)程,則結(jié)束進(jìn)程失敗。(4)流程圖:開(kāi)始開(kāi)始輸入執(zhí)行命令輸入執(zhí)行命令輸入t輸入C輸入b輸入t輸入C輸入bNNN輸入進(jìn)程名執(zhí)行態(tài)插入就緒態(tài)執(zhí)行態(tài)轉(zhuǎn)為阻塞態(tài)YYY輸入進(jìn)程名執(zhí)行態(tài)插入就緒態(tài)執(zhí)行態(tài)轉(zhuǎn)為阻塞態(tài)將進(jìn)程插入就緒態(tài)將進(jìn)程插入就緒態(tài)就緒態(tài)第一個(gè)結(jié)點(diǎn)插入執(zhí)行態(tài)就緒態(tài)第一個(gè)結(jié)點(diǎn)插入執(zhí)行態(tài)就緒態(tài)第一個(gè)結(jié)點(diǎn)插入執(zhí)行態(tài)就緒態(tài)第一個(gè)結(jié)點(diǎn)插入執(zhí)行態(tài)執(zhí)行態(tài)為空?qǐng)?zhí)行態(tài)為空N顯示進(jìn)程信息顯示進(jìn)程信息將進(jìn)程插入執(zhí)行態(tài)顯示進(jìn)程信息Y將進(jìn)程插入執(zhí)行態(tài)顯示進(jìn)程信息顯示進(jìn)程信息顯示進(jìn)程信息輸入w輸入w執(zhí)行態(tài)為空YN執(zhí)行態(tài)為空阻塞態(tài)為空阻塞態(tài)為空NN結(jié)束進(jìn)程阻塞態(tài)插入就緒態(tài)YY結(jié)束進(jìn)程阻塞態(tài)插入就緒態(tài)就緒態(tài)第一個(gè)結(jié)點(diǎn)插入執(zhí)行態(tài)就緒態(tài)第一個(gè)結(jié)點(diǎn)插入執(zhí)行態(tài)顯示進(jìn)程信息顯示進(jìn)程信息結(jié)束顯示進(jìn)程信息結(jié)束顯示進(jìn)程信息3.2進(jìn)程調(diào)度:實(shí)現(xiàn)先來(lái)先服務(wù)FCFS、短作業(yè)優(yōu)先SJF以及動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法。我們可以根據(jù)創(chuàng)建進(jìn)程的系統(tǒng)時(shí)鐘,取相對(duì)時(shí)鐘作為進(jìn)程的到達(dá)時(shí)間,利用隨機(jī)數(shù)產(chǎn)生每個(gè)進(jìn)程的估計(jì)運(yùn)行時(shí)間。利用模擬系統(tǒng)中提供的算法分別計(jì)算其相應(yīng)的周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間。(1)數(shù)據(jù)結(jié)構(gòu)及主要函數(shù)publicclassNewPCBDialogextendsJDialogimplementsActionListener{ privateJLabeltips_priority; privateJLabeltips_timeNeed; privateJLabeltips_memoryNeed; privateJTextFieldtext_priority; privateJTextFieldtext_timeNeed; privateJTextFieldtext_memoryNeed; privateJButtoncreate; privateMainFrameparentFrame;publicNewPCBDialog(MainFrameframe){} publicvoidinit(){} publicvoidactionPerformed(ActionEvente){}(2)算法設(shè)計(jì):1、利用絕對(duì)時(shí)間和相對(duì)時(shí)鐘產(chǎn)生一組進(jìn)程的到達(dá)時(shí)刻和運(yùn)行時(shí)間。2、實(shí)現(xiàn)FCFS算法:根據(jù)進(jìn)程的到達(dá)時(shí)間的先后次序來(lái)完成對(duì)若干進(jìn)程的調(diào)度。3、實(shí)現(xiàn)SJF算法:根據(jù)當(dāng)前時(shí)間已經(jīng)到達(dá)進(jìn)程的需要運(yùn)行時(shí)間選取其中時(shí)間最小的進(jìn)程最先運(yùn)行。4、實(shí)現(xiàn)DPS算法:各進(jìn)程的優(yōu)先權(quán)隨運(yùn)行時(shí)間而改變,進(jìn)程在就緒隊(duì)列中等待一個(gè)時(shí)間片,優(yōu)先權(quán)值加1;進(jìn)程每運(yùn)行一個(gè)時(shí)間片,優(yōu)先權(quán)值減3。然后調(diào)用priority()函數(shù)按照個(gè)進(jìn)程的優(yōu)先級(jí)別的高低來(lái)決定進(jìn)程在每個(gè)時(shí)間片的狀態(tài),并通過(guò)輸出函數(shù)顯示。5、計(jì)算每種算法調(diào)度后,系統(tǒng)的平均周轉(zhuǎn)時(shí)間和平均帶權(quán)周轉(zhuǎn)時(shí)間。(3)流程圖:進(jìn)程調(diào)度過(guò)程FCFS算法開(kāi)始FCFS算法開(kāi)始創(chuàng)建數(shù)組,并初始化將數(shù)組中的進(jìn)程按到達(dá)時(shí)間的順序排序獲取某進(jìn)程執(zhí)行過(guò)程中到達(dá)的所有進(jìn)程對(duì)獲取的所有進(jìn)程按照短作業(yè)優(yōu)先進(jìn)行排序得到進(jìn)程的執(zhí)行序列依次執(zhí)行各個(gè)進(jìn)程所有進(jìn)程執(zhí)行完成結(jié)束SJF算法SJF算法DPS算法(四)系統(tǒng)進(jìn)程管理:任務(wù)管理器(1)數(shù)據(jù)結(jié)構(gòu)及主要函數(shù)publicTaskList(){ super("任務(wù)管理器"); this.addItem(); this.pack(); this.setVisible(true); this.setLocation(150,100);(2)任務(wù)管理器功能模塊六、完成的情況在課設(shè)期間,采用java編程語(yǔ)言,模擬開(kāi)發(fā)一個(gè)多用戶(hù)多任務(wù)的類(lèi)操作系統(tǒng)軟件,所實(shí)現(xiàn)的功能有:(1)模擬進(jìn)程調(diào)度算法,模擬各種進(jìn)程調(diào)度算法,并能管理各種進(jìn)程調(diào)度算法的演示過(guò)程。(2)模擬各種內(nèi)存分配算法及回收過(guò)程,并能動(dòng)態(tài)演示。結(jié)合進(jìn)程調(diào)度算法,能為進(jìn)程模擬分配內(nèi)存,并設(shè)計(jì)一個(gè)跟蹤該內(nèi)存模擬分配的進(jìn)程或線(xiàn)程,記錄內(nèi)存分配的結(jié)果;(3)模擬多用戶(hù)登錄管理過(guò)程,能允許多個(gè)用戶(hù)登錄,為每個(gè)用戶(hù)建立進(jìn)程或線(xiàn)程,并進(jìn)行進(jìn)程管理;(4)能模擬文件系統(tǒng)管理,進(jìn)程可以對(duì)文件系統(tǒng)(包括文件和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論