2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論