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

下載本文檔

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

文檔簡介

1、中南大學操作系統(tǒng)課程設(shè)計實驗報告題 目:多用戶多任務(wù)的類操作系統(tǒng)學 院:信息科學與工程學院姓 名:班 級:日 期:2014/07目錄一、 概述 二、 課程設(shè)計要求 三、 設(shè)計的基本原理和概念四、 總體設(shè)計:實現(xiàn)的方法和主要技術(shù)路線 1總體功能模塊圖 2總體功能流圖五、 詳細設(shè)計:1. 模塊內(nèi)部的流程2. 實現(xiàn)算法3. 運行結(jié)果六、 完成的情況七、 使用說明 八、 實驗總結(jié) 九、 參考文獻 十、 附件:源程序代碼一、 概述操作系統(tǒng)課程主要講述的內(nèi)容是多道操作系統(tǒng)的原理與技術(shù),與其它計算機原理、編譯原理、匯編語言、計算機網(wǎng)絡(luò)、程序設(shè)計等專業(yè)課程關(guān)系十分密切。本課程設(shè)計的目的綜合應(yīng)用學生所學知識,建

2、立系統(tǒng)和完整的計算機系統(tǒng)概念,理解和鞏固操作系統(tǒng)基本理論、原理和方法,掌握操作系統(tǒng)開發(fā)的基本技能。二、 課程設(shè)計要求采用VC、VB、java或C等編程語言,模擬開發(fā)一個多用戶多任務(wù)的類操作系統(tǒng)軟件。要求如下:1. 模擬進程調(diào)度算法,模擬各種進程調(diào)度算法,并能管理各種進程調(diào)度算法的演示過程。2. 模擬各種內(nèi)存分配算法及回收過程,并能動態(tài)演示。結(jié)合進程調(diào)度算法,能為進程模擬分配內(nèi)存,并設(shè)計一個跟蹤該內(nèi)存模擬分配的進程或線程,記錄內(nèi)存分配的結(jié)果;3. 模擬多用戶登錄管理過程,能允許多個用戶登錄,為每個用戶建立進程或線程,并進行進程管理;4. 能模擬文件系統(tǒng)管理,進程可以對文件系統(tǒng)(包括文件和目錄)進

3、行讀、寫、創(chuàng)建、刪除、打開、關(guān)閉等操作;5. 模擬磁盤管理過程,結(jié)合文件系統(tǒng)管理,顯示磁盤管理的結(jié)構(gòu)和文件在磁盤上的分布情況。6. 能模擬進程通信管理,用戶之間可以相互通信交流;7. 最好能采用類似于Windows的窗口界面。三、 設(shè)計的基本原理和概念本系統(tǒng)軟件是模擬操作系統(tǒng)的整個工作過程,主要功能包括多用戶登錄管理,文件與用戶管理,進程與存儲管理,以及系統(tǒng)進程管理。多用戶操作系統(tǒng)允許多個不同用戶同時使用計算機的資源。操作系統(tǒng)必須確保均衡地滿足各個用戶的要求,他們使用的各個程序都具有足夠且獨立的資源,從而使一個用戶的問題不會影響到整個用戶群。在本系統(tǒng)中,將用戶分為管理員用戶和普通用戶。登陸時可

4、選擇,若選擇管理員用戶登陸,則對各用戶有管理權(quán)限(添加或刪除),對文件系統(tǒng)不僅有讀寫權(quán)限,還能新建、刪除、修改文件或目錄等;若選擇普通用戶登陸,則只能查看用戶,且只能讀文件。多用戶多級目錄的文件系統(tǒng):通過具體的文件存儲空間的管理、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作的實現(xiàn),加深對文件系統(tǒng)內(nèi)部功能和實現(xiàn)過程的理解。 在本系統(tǒng)中,文件與用戶管理相結(jié)合,實現(xiàn)了以下幾項功能:查看文件目錄結(jié)構(gòu)、文件屬性、磁盤屬性、磁盤塊分配位示圖、索引節(jié)點分配位示圖、用戶管理(管理員有該權(quán)限),查看用戶、新建文件/目錄(管理員權(quán)限)、刪除文件/目錄(管理員權(quán)限),讀寫文件(普通用戶只讀)。進程與存儲管理系統(tǒng):即模擬cpu

5、調(diào)度和內(nèi)存分配。作業(yè)進入內(nèi)存中,由CPU分配產(chǎn)生PCB屬性,并通過PCB記錄進程狀態(tài),實驗即以PCB代表進程模擬調(diào)度過程;在多道系統(tǒng)中,多道系統(tǒng)中,當就緒進程數(shù)大于處理機數(shù)時,須按照某種策略決定哪些進程優(yōu)先占用處理機,本實驗采用優(yōu)先級;進程調(diào)度時,規(guī)定若就緒隊列進程數(shù)少于6個,則自動從后備隊列調(diào)入一個作業(yè);系統(tǒng)會將占有較多資源、預(yù)期結(jié)果不符合要求的進程自動掛起,并回收所占資源,而本實驗設(shè)置為手動掛起;在適宜條件下,系統(tǒng)會將掛起的進程自動解掛,而且只解掛到就緒隊列;本實驗為簡化操作,設(shè)置為手動解掛,若解掛條件合適(即CPU各種資源可用),則解掛到就緒隊列,并分配內(nèi)存;若解掛條件不適宜,則解掛至后

6、備隊列,但不分配內(nèi)存。系統(tǒng)進程管理器:即任務(wù)管理器。操作系統(tǒng)是一個介于軟件和硬件之間的特殊硬件,一方面分配硬件資源另一方面支持軟件在它上面的實現(xiàn),如何實時地監(jiān)控和掌握系統(tǒng)軟硬件工作的狀態(tài)、資源分配和使用的情況,對計算機用戶而言十分重要,于是就有了任務(wù)管理器這樣的實時監(jiān)控窗口。通過這個窗口我們可以了解到電腦所有進程運行狀況,并對運行的進程加于管理和控制,正如在本系統(tǒng)中,啟動進程管理器后,可以通過”獲取進程”功能來獲得本計算機啟動的進程,以及與該進程相關(guān)的信息,其中包括的信息有:進程映像名稱,進程的PID、會話名稱、會話次數(shù)以及內(nèi)存使用,我們可以通過這些信息來了解計算機中每個進程的使用狀況。同時我

7、們可以在進程管理器上選中一個要終止的的進程,右擊選擇關(guān)閉方式,如“根據(jù)名稱關(guān)閉進程”或“根據(jù)PID關(guān)閉進程”功能按鈕,該進程被終止執(zhí)行并退出進程列表,此按鈕實現(xiàn)的功能正如我們電腦任務(wù)管理器的“進程”功能,當電腦執(zhí)行程序不能通過關(guān)閉窗口進行正常的關(guān)閉時,可以借助此辦法來關(guān)閉進程。其中還包括了關(guān)閉進程樹和刷新進程列表的功能。磁盤管理:磁盤格式化時,系統(tǒng)把磁盤存儲空間分成許多磁道。每個磁道又分成若干個扇區(qū)(又叫做磁盤塊)。之后用fdisk命令對硬盤進行分區(qū),即使只有一個分區(qū),也必須用fdisk命令進行分區(qū)。分區(qū)的目的,就是制作文件卷,形成文件系統(tǒng)。一個文件卷一般都被劃分成引導扇區(qū)、文件系統(tǒng)管理區(qū)和文

8、件數(shù)據(jù)區(qū)。其中,文件數(shù)據(jù)區(qū)用來存放系統(tǒng)文件和用戶文件。用戶可以通過文件系統(tǒng)提供的API,創(chuàng)建、打開、關(guān)閉和對文件進行讀寫。當用戶的文件不再需要時,就應(yīng)該刪除。把一個文件放到磁盤上時,可以組織成連續(xù)文件、鏈接文件或索引文件等。因此,磁盤空間的分配方法也有兩種,一種是連續(xù)空間的分配,一種是不連續(xù)空間的分配(又叫動態(tài)分配)。四、總體設(shè)計 1總體功能模塊及關(guān)系圖系統(tǒng)進程管理文件與用戶管理多用戶多任務(wù)類操作系統(tǒng)多用戶登陸界面磁盤管理進程與存儲管理 2總體功能流圖開始初始化登陸界面管理員用戶登陸?文件與用戶管理系統(tǒng)進程管理進程與存儲管理內(nèi)存分配算法進程控制進程調(diào)度算法任務(wù)管理器磁盤屬性及分配查看及管理用戶

9、文件及目錄管理五、詳細設(shè)計(一)多用戶操作系統(tǒng)(1)數(shù)據(jù)結(jié)構(gòu)及主要函數(shù)public class LoginView extends JFrameJFrame jframe = new JFrame("歡迎登陸系統(tǒng)");private FilesysServer fss1= null;int sw=(int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); int sh=(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();public Logi

10、nView(FilesysServer fss)this.fss1 = fss;/初始化面板 JPanel loginPanel = new JPanel(); JLabel titleJLable = new JLabel(); titleJLable.setText("歡迎登陸系統(tǒng)"); titleJLable.setSize(500,200); /用戶面板 JPanel userPanel = new JPanel(); userPanel.setLayout(null); JButton adminButton = new JButton(); adminButto

11、n.setText("管理員用戶登陸"); JButton userButton = new JButton(); userButton.setText("普通用戶登陸"); 。(二)文件與用戶管理本系統(tǒng)分兩種用戶:管理員用戶和普通用戶,實現(xiàn)文件系統(tǒng)的模擬管理與查看過程。管理員用戶對文件系統(tǒng)可以進行創(chuàng)建用戶、刪除用戶、創(chuàng)建文件、刪除文件、創(chuàng)建目錄、刪除目錄、讀文件、寫文件、打開文件、關(guān)閉文件、顯示目錄等操作;普通用戶只能讀文件和查看用戶。并且加入磁盤管理功能,在查看/創(chuàng)建/刪除文件等操作時時,顯示文件屬性、磁盤屬性、磁盤分配情況。索引節(jié)點分配情況,動態(tài)實

12、時的掌握內(nèi)存分配。(1)數(shù)據(jù)結(jié)構(gòu)及主要函數(shù)public class MyFile public int fsize;public String fname;public String ftime;public String fcont;public int fownid;public int fgrpid;public int fmode;public class Dir /文件名36B/TOTAL36Bpublic String fname;/文件名15Bpublic int findex;/INODE號3Bpublic String pname;/父文件名15Bpublic int pin

13、dex;/父INODE號3Bpublic class Disk public final static int DISKSIZE=100*512;/磁盤大小public final static int INUM=80;/inode數(shù)量 public final static int BNUM=100;/塊數(shù)量512B*100 = 51200Bpublic final static int BSIZE=512;/塊大小public final static int ISIZE=64;/inode大小64B * 80 = 5120Bpublic final static int DSIZE=36

14、;/dir大小36B * 14 512Bpublic final static int BASEB=11;/不能使用的塊public class Inode /索引節(jié)點信息64B/TOTAL NOW59Bpublic int fsize;/文件大小 6Bpublic int fblock;/文件塊數(shù) 6Bpublic int faddr;/直接塊號 4*3Bpublic int fadd1;/一級塊號 3Bpublic int fownid;/所有者ID6Bpublic int fgrpid;/所在組ID6Bpublic int fmode;/文件類型權(quán)限6B (d/- + 二進制)publi

15、c String ftime;/最近修改時間14B (20XXXXXXXXXX)public Inode()faddr=new int4;public class SuperBlock public int bitindex;/空余塊位示圖100Bpublic int bitblock;/空余節(jié)點位示圖120Bpublic int freindex;/剩余的節(jié)點5Bpublic int freblock;/剩余的塊5B(2)流程圖文件瀏覽器管理員用戶? NY磁盤管理查看文件及目錄查看與管理用戶索引節(jié)點分配磁盤塊分配磁盤屬性刪除用戶添加用戶查看用戶文件屬性讀/寫文件刪除目錄新建目錄刪除文件新建文

16、件查看文件及目錄查看與管理用戶磁盤管理索引節(jié)點使用情況磁盤塊使用情況磁盤屬性查看用戶讀文件文件屬性(三)進程與存儲管理3.1進程控制:利用簡單的結(jié)構(gòu)和控制方法模擬進程結(jié)構(gòu)、進程狀態(tài)和進程控制。用PCB表示整個進程實體,利用隨機數(shù)方法或鍵盤控制方法模擬進程執(zhí)行中產(chǎn)生的事件?;蛘呃檬髽嘶蛘哝I盤中斷的基于圖形接口方式的進程控制管理。(1) 數(shù)據(jù)結(jié)構(gòu):public class PCB private int PID;/進程idprivate int timeNeed;/運行所需的時間private int priority;/進程的優(yōu)先級private int state;/所處于的狀態(tài) 5個pri

17、vate int memoryNeed;/所需內(nèi)存private int startLocation;/開始的位置private PCB next;/下一個進程控制塊的句柄private Color color;/顏色private int pecent;/執(zhí)行的百分比public final static int state_running = 0;/狀態(tài)標志位 0表示運行 1表示就緒 2表示掛起 3表示后備 4表示解掛public final static int state_ready = 1;/就緒public final static int state_hang = 2;/掛起pu

18、blic final static int state_reserve = 3;/后備public final static int state_resume = 3;/解掛public final static int state_block = 4;/阻塞public final static int state_dead = 5;/死亡/默認構(gòu)造public PCB()(2)主要函數(shù):public class Schedulingpublic boolean executeProcess()queue.sortQueue1();/對就緒隊列按優(yōu)先級排序public void schedu

19、lingProcess()/*調(diào)度進程進入ReadyQueue*/public boolean schedulingFromResume()/*從解掛隊列調(diào)度進程進入就緒隊列*/public boolean schedulingFromReserve()/*從后備隊列調(diào)度進程進入就緒隊列*/public void resumeProcess(PCB pcb) /*結(jié)束一條進程*/public void addProcess(int timeNeed,int priority,int memoryNeed) /添加進程public boolean blockProcess()/*阻塞進程*/cl

20、ass resumeBlock extends Thread/*解除阻塞*/public boolean hangProcess()/*掛起進程*/class resumeHang extends ThreadPCB pcb;int time;public resumeHang(PCB pcb,int time)this.pcb = pcb;this.time = time;/*解掛*/public int producePID()/隨機產(chǎn)生PID(3)算法設(shè)計創(chuàng)建進程:輸入進程的名稱,先判斷進程名是否已存在,若已存在,則創(chuàng)建進程失敗,需重新操作,創(chuàng)建進程成功后,新進程進入就緒隊列。若執(zhí)行態(tài)為

21、空,將進程插入執(zhí)行態(tài)。阻塞進程:若當前有執(zhí)行進程,則將其阻塞,并將進程加入阻塞態(tài),若就緒隊列不為空,則就緒隊列第一個進程插入執(zhí)行態(tài);若當前無執(zhí)行進程 ,則阻塞失敗。喚醒進程:若當前阻塞態(tài)不為空,則將阻塞隊列第一個進程插入就緒態(tài);若當前阻塞態(tài)為空,則喚醒失敗。時間片到:若當前有執(zhí)行態(tài)進程,則插入就緒隊態(tài),并將就緒態(tài)第一個進程進入執(zhí)行態(tài);若當前無執(zhí)行進程,則無執(zhí)行進程。結(jié)束進程:若當前有執(zhí)行進程,則結(jié)束進程,若當前就緒態(tài)不為空,則就緒態(tài)第一個進程進入執(zhí)行態(tài);若當前無執(zhí)行進程 ,則結(jié)束進程失敗。(4)流程圖: 開始輸入執(zhí)行命令輸入t輸入C輸入b N N N輸入進程名執(zhí)行態(tài)插入就緒態(tài)執(zhí)行態(tài)轉(zhuǎn)為阻塞態(tài)

22、Y Y Y將進程插入就緒態(tài)就緒態(tài)第一個結(jié)點插入執(zhí)行態(tài)就緒態(tài)第一個結(jié)點插入執(zhí)行態(tài)執(zhí)行態(tài)為空 N顯示進程信息將進程插入執(zhí)行態(tài)顯示進程信息Y顯示進程信息輸入w執(zhí)行態(tài)為空 Y N阻塞態(tài)為空 N N結(jié)束進程阻塞態(tài)插入就緒態(tài) Y Y就緒態(tài)第一個結(jié)點插入執(zhí)行態(tài)顯示進程信息結(jié)束顯示進程信息3.2進程調(diào)度:實現(xiàn)先來先服務(wù)FCFS、短作業(yè)優(yōu)先以及動態(tài)優(yōu)先級調(diào)度算法。我們可以根據(jù)創(chuàng)建進程的系統(tǒng)時鐘,取相對時鐘作為進程的到達時間,利用隨機數(shù)產(chǎn)生每個進程的估計運行時間。利用模擬系統(tǒng)中提供的算法分別計算其相應(yīng)的周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間。(1)數(shù)據(jù)結(jié)構(gòu)及主要函數(shù)public class NewPCBDialog extend

23、s JDialog implements ActionListenerprivate JLabel tips_priority;private JLabel tips_timeNeed;private JLabel tips_memoryNeed;private JTextField text_priority;private JTextField text_timeNeed;private JTextField text_memoryNeed;private JButton create;private MainFrame parentFrame;public NewPCBDialog(Ma

24、inFrame frame)public void init()public void actionPerformed(ActionEvent e) (2)算法設(shè)計:1、利用絕對時間和相對時鐘產(chǎn)生一組進程的到達時刻和運行時間。2、實現(xiàn)FCFS算法:根據(jù)進程的到達時間的先后次序來完成對若干進程的調(diào)度。3、實現(xiàn)算法:根據(jù)當前時間已經(jīng)到達進程的需要運行時間選取其中時間最小的進程最先運行。4、實現(xiàn)DPS算法:各進程的優(yōu)先權(quán)隨運行時間而改變,進程在就緒隊列中等待一個時間片,優(yōu)先權(quán)值加1;進程每運行一個時間片,優(yōu)先權(quán)值減3。然后調(diào)用 priority()函數(shù) 按照個進程的優(yōu)先級別的高低來決定進程在每個時間

25、片的狀態(tài),并通過輸出函數(shù)顯示。5、計算每種算法調(diào)度后,系統(tǒng)的平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間。 (3)流程圖: 進程調(diào)度過程FCFS 算法 開 始創(chuàng)建數(shù)組,并初始化將數(shù)組中的進程按到達時間的順序排序獲取某進程執(zhí)行過程中到達的所有進程對獲取的所有進程按照短作業(yè)優(yōu)先進行排序得到進程的執(zhí)行序列依次執(zhí)行各個進程所有進程執(zhí)行完成結(jié) 束 SJF算法DPS算法(四)系統(tǒng)進程管理:任務(wù)管理器(1)數(shù)據(jù)結(jié)構(gòu)及主要函數(shù)public TaskList() super("任務(wù)管理器");this.addItem();this.pack();this.setVisible(true);this.set

26、Location(150, 100);(2)任務(wù)管理器功能模塊六、完成的情況在課設(shè)期間,采用java編程語言,模擬開發(fā)一個多用戶多任務(wù)的類操作系統(tǒng)軟件,所實現(xiàn)的功能有:(1)模擬進程調(diào)度算法,模擬各種進程調(diào)度算法,并能管理各種進程調(diào)度算法的演示過程。(2)模擬各種內(nèi)存分配算法及回收過程,并能動態(tài)演示。結(jié)合進程調(diào)度算法,能為進程模擬分配內(nèi)存,并設(shè)計一個跟蹤該內(nèi)存模擬分配的進程或線程,記錄內(nèi)存分配的結(jié)果;(3)模擬多用戶登錄管理過程,能允許多個用戶登錄,為每個用戶建立進程或線程,并進行進程管理;(4)能模擬文件系統(tǒng)管理,進程可以對文件系統(tǒng)(包括文件和目錄)進行讀、寫、創(chuàng)建、刪除、打開、關(guān)閉等操作;(5)模擬磁盤管理過程,結(jié)合文件系統(tǒng)管理,顯示磁盤管理的結(jié)構(gòu)和文件在磁盤上的分布情況。(6)采用類似于Windows的窗口界面。未實現(xiàn)模擬進程通信管理功能。七、 運行及使用說明

溫馨提示

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

評論

0/150

提交評論