版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計</b></p><p> 題目: 操作系統(tǒng)課程設(shè)計 </p><p> 學(xué) 部 信息科學(xué)與工程學(xué)部 </p><p> 學(xué)科門類 工學(xué) </p><p>
2、; 專 業(yè) 網(wǎng)絡(luò)工程 </p><p> 學(xué) 號 </p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p><b> 年 月
3、 日</b></p><p><b> 目 錄</b></p><p><b> 一 基本思想1</b></p><p> 1.1硬件工作的模擬1</p><p> 1.1.1中央處理器的模擬1</p><p> 1.1.2主要寄存器的模擬1&
4、lt;/p><p> 1.1.3中斷的模擬1</p><p> 1.1.4 時鐘的模擬1</p><p> 1.2進程控制塊2</p><p><b> 1.3進程調(diào)度2</b></p><p><b> 1.4進程控制2</b></p><
5、;p> 1.5屏幕顯示要求 ……………………………………………………………3</p><p> 二 定義的公共變量或數(shù)據(jù)結(jié)構(gòu)(給出注釋)4</p><p> 2.1主要公共變量4</p><p> 2.1.1關(guān)于進程4</p><p> 2.1.2時間片4</p><p> 2.1.3定時器
6、4</p><p> 2.2主要數(shù)據(jù)結(jié)構(gòu)4</p><p> 三 各部分主要函數(shù)的過程描述6</p><p> 3.1中央處理器的模擬6</p><p> 3.2中斷的模擬6</p><p> 3.3時鐘的模擬7</p><p> 3.4 進程創(chuàng)建create8</
7、p><p> 3.5進程阻塞block8</p><p><b> 四 運行截圖9</b></p><p><b> 4.1添加進程9</b></p><p> 4.2運行進程10</p><p> 4.3 結(jié)束進程2</p><p>
8、<b> 五 總 結(jié)13</b></p><p><b> 一 基本思想</b></p><p> 1.1硬件工作的模擬</p><p> 1.1.1中央處理器的模擬</p><p> 用函數(shù)CPU()(該函數(shù)不能有參數(shù))模擬中央處理器。該函數(shù)主要負責(zé)解釋“可執(zhí)行文件”中的命令。<
9、;/p><p> x=?; 給x賦值一位數(shù)</p><p><b> x++; x加1</b></p><p><b> x--; x減1</b></p><p> !??; 第一個?為A,B,C中某個設(shè)備,第二個?為一位數(shù),表示使用設(shè)備的時間;</p><p>
10、 end. 表示進程結(jié)束,同時將結(jié)果寫入運行結(jié)果框中,其中包括進程名和最終結(jié)果。</p><p> CPU只能解釋指令寄存器IR中的指令。一個進程的運行時要根據(jù)進程執(zhí)行的位置,將對應(yīng)的指令存放到指令寄存器中。</p><p> 1.1.2主要寄存器的模擬</p><p> 用全局變量模擬重要寄存器,如CPU重要寄存器,程序狀態(tài)寄存器PSW、指令寄存器IR,程序
11、計數(shù)器PC,數(shù)據(jù)緩沖寄存器DR等。</p><p> 1.1.3中斷的模擬</p><p> I.中斷的發(fā)現(xiàn)應(yīng)該是硬件的工作,這里在函數(shù)CPU中加檢測PSW的方式來模擬</p><p> 在CPU()函數(shù)中,每執(zhí)行一條指令之前,先檢查PSW,判斷有無中斷,若有進行中斷處理,然后再運行解釋指令。CPU函數(shù)應(yīng)該不斷循環(huán)執(zhí)行的。</p><p&g
12、t; ?、颍M中斷的種類和中斷處理方式:</p><p> 程序結(jié)束(執(zhí)行指令end形成的中斷,軟中斷):將結(jié)果寫入運行結(jié)果框體中,其中包括運行指令的指令名和指令的值,調(diào)用進程撤銷原語撤銷進程,然后進行進程調(diào)度;</p><p> 時間片到(當(dāng)相對始終寄存器值減到0時):將正在運行進程的CPU現(xiàn)場保存在進程控制塊中,然后進行進程調(diào)度;</p><p> I/
13、O中斷(設(shè)備完成輸入輸出):將輸入輸出完成的進程喚醒,將等待該設(shè)備的一個進程同時喚醒。</p><p> 1.1.4時鐘的模擬</p><p> 系統(tǒng)中的絕對時鐘和相對時鐘用全局變量模擬。絕對時鐘用來記錄進程運行后直到軟件關(guān)閉的的時間,相對時鐘用來存放進程可執(zhí)行的時間片,在進程調(diào)度時設(shè)置初值,隨系統(tǒng)時間的增值1而減值1,減到0時,發(fā)出時鐘中斷。</p><p>
14、<b> 1.2進程控制塊</b></p><p> 進程控制塊內(nèi)容包括進程標識符、處理機狀態(tài)信息(如主要寄存器內(nèi)容)、進程調(diào)度信息(如進程狀態(tài)、進程優(yōu)先級、進程調(diào)度所需的其他信息、阻塞原因)、進程控制信息(如進程程序和數(shù)據(jù)的地址)。本模擬系統(tǒng)最多容納10個進程塊。</p><p> PCB區(qū)域用數(shù)組模擬。</p><p> 進程控制塊
15、根據(jù)內(nèi)容的不同組成不同的隊列:空白進程控制塊鏈、就緒隊列和阻塞隊列,正在運行的進程只有一個,系統(tǒng)初始時只有空白進程控制塊鏈。</p><p><b> 1.3進程調(diào)度</b></p><p> 1.進程調(diào)度在模擬系統(tǒng)中,采用時間片輪轉(zhuǎn)調(diào)度算法,時間片可設(shè)定。</p><p> 2.進程調(diào)度函數(shù)的主要工作是:將正在運行的進程保存在該進程對應(yīng)
16、進程控制塊中;從就緒隊列中選擇一個進程;將這個進程中進程控制塊中記錄的各寄存器內(nèi)容恢復(fù)到CPU各個寄存器內(nèi)。</p><p><b> 3.閑逛進程</b></p><p> 建立一個閑逛進程,當(dāng)就緒對列為空時,系統(tǒng)調(diào)用該進程運行。當(dāng)有進程就緒時,就調(diào)度就緒進程運行。閑逛進程什么也不做,只是起到系統(tǒng)能正常運轉(zhuǎn)的作用。例如windows中的idle進程。</p
17、><p><b> 1.4進程控制</b></p><p> 建立四個函數(shù)模擬進程創(chuàng)建、撤銷、阻塞和喚醒四個原語。</p><p> 1.進程創(chuàng)建create</p><p> 進程創(chuàng)建的主要工作是:</p><p> 第一步,申請空白進程控制塊;</p><p>
18、 第二步,申請主存空間,申請成功,裝入主存;</p><p> 第三步,初始化進程控制塊;</p><p> 第四步,將進程鏈入就緒隊列。</p><p> 2.進程撤銷destory</p><p> 進程撤銷的主要工作是:</p><p> 第一步,回收進程所占內(nèi)存資源;</p><p
19、> 第二步,回收進程控制塊;</p><p> 第三步,在屏幕上顯示進程執(zhí)行結(jié)果,進程撤銷</p><p> 3.進程阻塞block</p><p> 進程阻塞的主要工作是:</p><p> 第一步,保存運行進程的CPU現(xiàn)場;</p><p> 第二步,修改進程狀態(tài);</p><
20、p> 第三步,將進程鏈入對應(yīng)的阻塞隊列,然后轉(zhuǎn)向進程調(diào)度。</p><p><b> 4.進程的喚醒</b></p><p> 進程喚醒的主要工作是將進程由阻塞隊列中摘下,修改進程狀態(tài)為就緒,然后鏈入就緒隊列。</p><p><b> 1.5屏幕顯示要求</b></p><p>&l
21、t;b> 屏幕顯示要求包括:</b></p><p><b> 顯示系統(tǒng)時鐘;</b></p><p> 顯示正在運行的進程的進程名、運行的指令、中間結(jié)果、相對時鐘內(nèi)容;</p><p> 顯示就緒隊列中進程名;</p><p> 顯示阻塞隊列中進程名,等待時間。</p><
22、;p> 二 定義的公共變量或數(shù)據(jù)結(jié)構(gòu)(給出注釋)</p><p><b> 2.1主要公共變量</b></p><p><b> 2.1.1關(guān)于進程</b></p><p> 三個編輯框分別對應(yīng)三個變量:</p><p> CString m_jcming //顯示進程
23、名</p><p> CString m_zhiling //顯示當(dāng)前執(zhí)行指令</p><p> CString m_jieguo //顯示中間結(jié)果</p><p> 三個列表框分別對應(yīng)三個變量:</p><p> ClistBox m_jiuxu //就緒隊列</p><p>
24、; ClistBox m_zuse //阻塞隊列</p><p> ClistBox m_jieshu //運行結(jié)束的隊列</p><p> 還有一個編輯框用來輸入指令:</p><p> CString m_shuruzhiling //得到命令文件</p><p><b> 2.1.2時間片&
25、lt;/b></p><p> 編輯框IDC_EDIT_shijianpian</p><p> 對應(yīng)變量int m_timelength //時間片大小</p><p><b> 2.1.3定時器</b></p><p> 靜態(tài)文本框IDC_CSTATIC</p><p>
26、 對應(yīng)變量CStatic m_cpushijian //顯示時間</p><p><b> 2.2主要數(shù)據(jù)結(jié)構(gòu)</b></p><p><b> 進程控制塊PCB:</b></p><p> enum event_source {null,timeout,waiting,processing};//枚舉變量包含進
27、程狀態(tài)</p><p> enum event_type {a,b,c};//枚舉變量包含阻塞請求資源</p><p> typedef struct pcb</p><p><b> {</b></p><p> CString pcb_name;// 進程名</p><p> int
28、 pcb_no;//進程號</p><p> CString *command;//進程文件</p><p> int linesnum;//進程文件指令數(shù)</p><p> int current;//當(dāng)前指針</p><p> int result;//計算結(jié)果</p><p> enum event_s
29、ource event;//事件 </p><p> enum event_type eventtype;//阻塞事件請求的資源</p><p> int event_time;//使用資源時間</p><p> pcb *link;//pcb指針指向下一個節(jié)點</p><p> }pcb; </p>&
30、lt;p> 三 各部分主要函數(shù)的過程描述</p><p> 3.1中央處理器的模擬</p><p> public CPU {</p><p><b> 解釋可執(zhí)行性指令</b></p><p> 定義IR[4]指令寄存器,通過每四個字符串的截取來解釋可執(zhí)行指令</p><p>
31、; 當(dāng)運行指令時,通過判斷</p><p> IF(指令是????格式)</p><p><b> {</b></p><p> 則進程阻塞,把進程放入阻塞隊列,</p><p><b> 記錄阻塞時間</b></p><p><b> 保存CPU現(xiàn)場&l
32、t;/b></p><p><b> }</b></p><p> ELSE IF(指令是i=?格式)</p><p><b> {</b></p><p><b> 則為賦值語句</b></p><p><b> }<
33、/b></p><p> ELSE IF(指令是i++格式)</p><p><b> {</b></p><p> 則指令執(zhí)行加1操作,此時顯示到中間結(jié)果框體中</p><p><b> }</b></p><p> ELSE IF(指令是i--格式)&
34、lt;/p><p><b> {</b></p><p> 則指令執(zhí)行減一操作,此時顯示到中間結(jié)果框體中</p><p><b> }</b></p><p><b> ELSE </b></p><p><b> {</b>
35、</p><p> 則由于指令格式不符合要求,運行出錯。</p><p><b> }</b></p><p><b> 3.2中斷的模擬</b></p><p><b> 1.時間片中斷</b></p><p> public onTimer
36、(){</p><p> 將執(zhí)行的進程插入到就緒隊列尾部;</p><p> 應(yīng)保存好此進程的CPU現(xiàn)場;</p><p> 再從就緒隊列頭部取出一個新的進程執(zhí)行;</p><p> 調(diào)用:OnTimer(UINT nIDEvent)函數(shù)</p><p><b> }</b></p
37、><p><b> 2.申請設(shè)備中斷</b></p><p> public Block()</p><p><b> {</b></p><p> 將進程放入阻塞隊列中;</p><p> 保存好此進程的CPU現(xiàn)場信息;</p><p>
38、再從就緒隊列頭部取出一個新的進程執(zhí)行;</p><p> 調(diào)用:Block(PCB *pcb)函數(shù)</p><p><b> }</b></p><p><b> 3.程序正常結(jié)束</b></p><p> public onBUTTONjieshu()</p><p&
39、gt;<b> {</b></p><p> 進程正常結(jié)束,則把進程名和運行結(jié)果顯示到最終結(jié)果顯示框中;</p><p> 再從就緒隊列頭部取出一個新的進程執(zhí)行;</p><p> 調(diào)用:OnBUTTONjieshu()函數(shù)</p><p><b> } </b></p>
40、<p> 3.3進程創(chuàng)建create</p><p><b> 輸入指令</b></p><p> IF (文本域為空)</p><p><b> {</b></p><p> 命令文件有誤,請檢查或仔細閱讀幫助</p><p><b> ?。?
41、lt;/b></p><p><b> ELSE</b></p><p><b> ?。?lt;/b></p><p><b> 提交給進程管理</b></p><p><b> ?。?lt;/b></p><p> 在進程管理類中
42、,初始化進程控制塊PCB類</p><p> public class PCB</p><p><b> {</b></p><p> id 進程的標識符</p><p> state 進程當(dāng)前狀態(tài), 就緒0, 執(zhí)行1, 阻塞-1.</p><p> name 進程的名稱 </p
43、><p> next 進程隊列指針 , PCB鏈中下一個PCB的地址,當(dāng)NEXT=-1時,表示隊尾。</p><p> time 進程阻塞的時間</p><p><b> }</b></p><p><b> 將進程鏈入就緒隊列</b></p><p> IF(判斷插入
44、的進程數(shù)是否超過10個)</p><p><b> {</b></p><p> 顯示的進程名數(shù)字混亂</p><p><b> }</b></p><p><b> IF(非空)</b></p><p><b> {</b&g
45、t;</p><p> 則把進程插入到隊列尾部</p><p><b> }</b></p><p> 3.4進程阻塞block</p><p> 當(dāng)申請設(shè)備時,進行阻塞</p><p> public Block()</p><p><b> {&
46、lt;/b></p><p> 將進程放入阻塞隊列中;</p><p> 保存好此進程的CPU現(xiàn)場信息;</p><p> 再從就緒隊列頭部取出一個新的進程執(zhí)行;</p><p> 調(diào)用:Block(PCB *pcb)函數(shù)。</p><p><b> }</b></p>
47、<p><b> ?。?5進程的喚醒</b></p><p> 阻塞時間結(jié)束,則進程喚醒</p><p> public wakeUp()</p><p><b> {</b></p><p> 阻塞隊列的此進程被喚醒;</p><p> 將此進程在插
48、入到就緒隊列。 </p><p><b> }四 運行截圖</b></p><p><b> 4.1添加進程</b></p><p><b> 添加進程不能為空</b></p><p><b> 圖 1</b></p>&l
49、t;p><b> 添加合法的進程</b></p><p><b> 圖2</b></p><p> 最多添加的進程不能超過10個</p><p><b> 圖 3</b></p><p><b> 4.2運行進程</b></p>
50、<p> 以添加4個進程為例,進行演示</p><p> 點擊運行按鈕,執(zhí)行指令的全過程如下圖片:</p><p><b> 圖 4</b></p><p> 把五個進程插入就緒隊列,點擊運行按鈕,此時為運行的中間過程</p><p><b> 圖 5</b></p&g
51、t;<p> 進程執(zhí)行完畢,最終結(jié)果在結(jié)束進程一欄顯示</p><p><b> 圖6</b></p><p> 四個進程全部執(zhí)行完畢。</p><p><b> 4.3 結(jié)束進程</b></p><p> 當(dāng)按下結(jié)束按鈕后,將清空所有框體中的內(nèi)容。</p>&
52、lt;p><b> 五 總 結(jié)</b></p><p> 本課程設(shè)計主要是針對進程管理,在做的過程中主要是按照面向?qū)ο蟮脑O(shè)計展開的,可能有些內(nèi)容放錯了位置,與操作系統(tǒng)的原理可能有些細微的偏差。</p><p> 由于自己頭一次編寫這么大的程序,也是第一次對操作系統(tǒng)進行模擬,對操作系統(tǒng)的原理可能理解的還不夠透徹,如果發(fā)現(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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計-- 操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計
- 內(nèi)存管理(操作系統(tǒng))操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計題目
- 操作系統(tǒng)課程設(shè)計報告
- 操作系統(tǒng)課程設(shè)計論文
- 操作系統(tǒng)課程設(shè)計 (4)
- 操作系統(tǒng)課程設(shè)計1
- 課程設(shè)計報告--操作系統(tǒng)
- linux操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計報告
- 操作系統(tǒng)原理課程設(shè)計
- 操作系統(tǒng)課程設(shè)計--模擬操作系統(tǒng)的實現(xiàn)
- 操作系統(tǒng)課程設(shè)計報告
- 操作系統(tǒng)課程設(shè)計1
評論
0/150
提交評論