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

下載本文檔

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

文檔簡介

1、<p>  Java語言模擬操作系統(tǒng)的設(shè)計(jì)</p><p><b>  摘 要</b></p><p>  此系統(tǒng)使用java語言,實(shí)現(xiàn)了單用戶多進(jìn)程的存儲(chǔ)管理、設(shè)備管理、進(jìn)程管理和文件管理部分。存儲(chǔ)管理包括主存分配與回收。設(shè)備管理包括設(shè)備的分配與回收。設(shè)備分配時(shí)采用采用先來先服務(wù)策略,設(shè)備回收時(shí)喚醒等待設(shè)備的進(jìn)程。進(jìn)程管理主要包括進(jìn)程調(diào)度,進(jìn)程的創(chuàng)建和撤銷

2、、進(jìn)程的阻塞和喚醒,中斷作用的實(shí)現(xiàn)。文件管理包括了文件的新建,復(fù)制,剪切,粘貼等主要功能本系統(tǒng)根據(jù)操作系統(tǒng)理論課上學(xué)習(xí)的操作系統(tǒng)的知識(shí),在采用混合索引文件結(jié)構(gòu)、成組鏈接法的基礎(chǔ)上實(shí)現(xiàn)單用戶的磁盤文件管理部分,包括:文件的邏輯結(jié)構(gòu)、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)、磁盤分配回收等操作。同時(shí)模擬實(shí)現(xiàn)了操作系統(tǒng)的進(jìn)程管理,內(nèi)存管理和設(shè)備管理。</p><p>  本論文主要闡述四部分內(nèi)容,引言部分,主要說明本次操作系統(tǒng)課程設(shè)計(jì)

3、的性質(zhì)、教學(xué)目的、教學(xué)任務(wù)與要求、意義以及論文的結(jié)構(gòu)安排;系統(tǒng)分析與設(shè)計(jì)部分,主要闡述系統(tǒng)的主要功能模塊以及每個(gè)模塊計(jì)劃采用的實(shí)現(xiàn)方法和原理;系統(tǒng)實(shí)現(xiàn)部分,主要通過流程圖等工具描述主要模塊的實(shí)現(xiàn)流程;最后一部分,結(jié)束語部分,主要書寫已經(jīng)實(shí)現(xiàn)的本系統(tǒng)存在的不足、改進(jìn)方案和在課程設(shè)計(jì)中的實(shí)際感受。</p><p>  關(guān)鍵詞:java語言; 模擬操作系統(tǒng) ; 物理結(jié)構(gòu)</p><p><

4、b>  ABSTRACT</b></p><p>  The system based on operating system course learning operating system knowledge, the hybrid indexing file structure, group link method based on single user disk file manage

5、ment part, including : the logical structure of the document, the physical structure of the document, the directory structure, magnetic disk allocation recovery operation. At the same time to achieve a simulated operatin

6、g system process management, memory management and equipment management. This paper on a four-part, the </p><p>  key words: Java Language Operating system </p><p><b>  目 錄</b>

7、</p><p><b>  1概述1</b></p><p><b>  1.1性質(zhì)1</b></p><p><b>  1.2設(shè)計(jì)目的1</b></p><p><b>  1.3設(shè)計(jì)意義1</b></p><p> 

8、 1.4論文結(jié)構(gòu)安排1</p><p>  2系統(tǒng)分析與設(shè)計(jì)1</p><p><b>  2.1系統(tǒng)要求1</b></p><p>  2.2文件的邏輯結(jié)構(gòu)2</p><p>  2.3文件的物理結(jié)構(gòu)2</p><p><b>  2.4目錄結(jié)構(gòu)3</b><

9、;/p><p><b>  2.5磁盤狀態(tài)3</b></p><p><b>  2.6用戶接口4</b></p><p><b>  3系統(tǒng)實(shí)現(xiàn)4</b></p><p><b>  3.1磁盤管理4</b></p><p>

10、  3.11磁盤的創(chuàng)建4</p><p>  3.1.2磁盤的分配5</p><p>  3.1.3磁盤的歸還6</p><p>  3.1.4磁盤狀態(tài)的顯示7</p><p><b>  3.2目錄結(jié)構(gòu)7</b></p><p>  3.2.1創(chuàng)建目錄7</p><

11、;p>  3.2.2刪除空目錄9</p><p>  3.2.3刪除目錄9</p><p><b>  3.3文件10</b></p><p>  3.3.1建立文件10</p><p>  3.3.2刪除文件12</p><p>  3.3.3保存文件12</p>

12、<p>  3.3.4復(fù)制文件13</p><p>  3.3.5移動(dòng)文件14</p><p>  3.4 內(nèi)存分配14</p><p>  3.5移動(dòng)文件14</p><p>  3.6進(jìn)程管理15</p><p>  3.6.1進(jìn)程管理的要求15</p><p>  

13、3.6.2進(jìn)程控制塊15</p><p>  3.6.3進(jìn)程調(diào)度16</p><p>  3.6.4進(jìn)程創(chuàng)建16</p><p>  3.6.5進(jìn)程撤銷16</p><p>  3.6.6進(jìn)程阻塞16</p><p>  3.6.7進(jìn)程的喚醒16</p><p>  3.7硬件工作的

14、模擬17</p><p>  3.8整體布局18</p><p><b>  總 結(jié)19</b></p><p><b>  致 謝20</b></p><p><b>  參考文獻(xiàn)21</b></p><p><b>  1概

15、述</b></p><p><b>  1.1性質(zhì)</b></p><p>  操作系統(tǒng)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的主要專業(yè)基礎(chǔ)課和主干課。操作系統(tǒng)對(duì)計(jì)算機(jī)系統(tǒng)資源實(shí)施管理,是所有其他軟件與計(jì)算機(jī)硬件的唯一接口,所有用戶在使用計(jì)算機(jī)時(shí)都要得到操作系統(tǒng)提供的服務(wù)。</p><p><b>  1.2設(shè)計(jì)目的</b>&

16、lt;/p><p>  通過模擬操作系統(tǒng)的全部或者部分功能的實(shí)現(xiàn),加深對(duì)操作系統(tǒng)工作原理和操作系統(tǒng)實(shí)現(xiàn)方法的理解,達(dá)到聯(lián)系編程的目的,提高我們的運(yùn)用理論知識(shí)分析問題、解決問題的能力,為從事科學(xué)研究和獨(dú)立負(fù)擔(dān)計(jì)算機(jī)及其應(yīng)用方面的工作打好扎實(shí)的基礎(chǔ)。</p><p><b>  1.3設(shè)計(jì)意義</b></p><p>  通過模擬操作系統(tǒng)原理的實(shí)現(xiàn),熟

17、悉加強(qiáng)用java語言的編程能力,加深對(duì)操作系統(tǒng)工作原理和操作系統(tǒng)實(shí)現(xiàn)方法的理解,掌握了初步分析實(shí)際問題的能力,為其今后在相關(guān)領(lǐng)域開展工作打下堅(jiān)實(shí)的基礎(chǔ)。同時(shí)使系統(tǒng)科學(xué)地受到分析問題和解決問題的訓(xùn)練,提高運(yùn)用理論知識(shí)解決實(shí)際問題的能力。</p><p><b>  1.4論文結(jié)構(gòu)安排</b></p><p>  本論文主要闡述四部分內(nèi)容,引言部分,主要說明本次操作系統(tǒng)課

18、程設(shè)計(jì)的性質(zhì)、教學(xué)目的、教學(xué)任務(wù)與要求、意義以及論文的結(jié)構(gòu)安排;系統(tǒng)分析與設(shè)計(jì)部分,主要闡述系統(tǒng)的主要功能模塊以及每個(gè)模塊計(jì)劃采用的實(shí)現(xiàn)方法和原理;系統(tǒng)實(shí)現(xiàn)部分,主要通過流程圖等工具描述主要模塊的實(shí)現(xiàn)流程;最后一部分,結(jié)束語部分,主要書寫已經(jīng)實(shí)現(xiàn)的本系統(tǒng)存在的不足、改進(jìn)方案和在課程設(shè)計(jì)中的實(shí)際感受。</p><p><b>  2系統(tǒng)分析與設(shè)計(jì)</b></p><p>

19、;<b>  2.1系統(tǒng)要求</b></p><p>  本系統(tǒng)要求實(shí)現(xiàn)實(shí)現(xiàn)并模擬單用戶操作系統(tǒng)的四部分內(nèi)容:①文件管理和用戶接口;②存儲(chǔ)管理;③設(shè)備管理;④進(jìn)程管理。</p><p>  2.2文件的邏輯結(jié)構(gòu)</p><p>  文件的邏輯結(jié)構(gòu)采用流式結(jié)構(gòu),文件的內(nèi)容均采用文本文件,系統(tǒng)中有兩種文件,一種是存放任意字符的文件,一種是可執(zhí)行文件

20、,可執(zhí)行文件的內(nèi)容就是系統(tǒng)內(nèi)進(jìn)程的程序體。</p><p>  可執(zhí)行文件要包括如下命令:</p><p>  X=?; 給i賦值一位數(shù)</p><p><b>  X++; i加1</b></p><p><b>  X--; i減1</b></p><p>  !??

21、; 第一個(gè)?為A,B,C中某個(gè)設(shè)備,第二個(gè)?為一位數(shù),表示使用設(shè)備的時(shí)間</p><p>  end; 表示文件結(jié)束</p><p>  2.3文件的物理結(jié)構(gòu)</p><p>  文件的物理結(jié)構(gòu)采用索引文件,每個(gè)文件分配一個(gè)索引塊(存放索引的盤塊)把分配給該文件的所有盤塊號(hào)都記錄在該索引塊中,按照這種分派方式存儲(chǔ)的文件就是索引文件。由于索引塊就是一個(gè)存放許多盤塊

22、號(hào)的盤塊,因此,為使系統(tǒng)能找到文件存放的地址,文件目錄項(xiàng)記錄該文件索引塊的盤塊號(hào)和文件長度【1】。為一個(gè)大文件分配磁盤空間時(shí),如果所分配除去盤塊的盤塊號(hào),已經(jīng)裝滿一索引塊時(shí),便需再為該文件分配另一個(gè)索引塊,用于將以后繼續(xù)分配給該文件的盤塊號(hào)記錄其中,以此類推。同時(shí),應(yīng)為這些索引塊再建立一級(jí)索引,即系統(tǒng)再分配一索引塊,作為一級(jí)索引塊的索引塊,將第一塊、第二塊、第三塊、……索引塊的盤塊號(hào)寫入此索引塊中,這樣便形成了二級(jí)索引的分配方式,如果文

23、件非常大的時(shí)候,還可以用三級(jí)、四級(jí)索引分配方式。本系統(tǒng)實(shí)現(xiàn)二級(jí)索引,如圖1所示:</p><p><b>  2.4目錄結(jié)構(gòu)</b></p><p>  目錄結(jié)構(gòu)采用樹形目錄結(jié)構(gòu),根目錄項(xiàng)既可以表示一個(gè)普通文件,也可以是下一級(jí)目錄的目錄文件的一個(gè)說明項(xiàng),如此層層類推,形成一個(gè)樹形層次結(jié)構(gòu),如圖2所示:</p><p><b>  2.

24、5磁盤狀態(tài)</b></p><p>  磁盤使用情況用空閑塊成組鏈接法來記錄:把空閑塊分成若干組,把指向一組中各空閑塊的指針集中在一起,每一組的第一個(gè)空閑塊中登記下一組空閑塊的塊號(hào)和空閑塊數(shù),余下不足一組塊數(shù)的空閑塊的塊號(hào)級(jí)快數(shù)登記在一個(gè)專用塊中,這樣既可方便查找,又可減少為修改指針而啟動(dòng)的磁盤的次數(shù),在本系統(tǒng)中將第0塊作為專用塊,如圖3是空閑塊成組鏈接示意圖:</p><p>

25、;<b>  2.6用戶接口</b></p><p>  用戶接口提供用戶命令接口,具體只實(shí)現(xiàn)以下命令,其余都可在操作中實(shí)現(xiàn):</p><p>  1.退出系統(tǒng)指令 quit</p><p>  2.磁盤格式化命令:forma</p><p><b>  3系統(tǒng)實(shí)現(xiàn)</b></p>&

26、lt;p><b>  3.1磁盤管理</b></p><p><b>  3.11磁盤的創(chuàng)建</b></p><p>  磁盤的創(chuàng)建主要采用的文件流的方式,采用了二位byte數(shù)組進(jìn)行儲(chǔ)存。</p><p>  public class Disk {</p><p>  private stat

27、ic Disk d=new Disk();</p><p>  private static byte[][] block;</p><p>  private static File dataFile;</p><p>  private Disk(){</p><p><b>  }</b></p>&

28、lt;p>  public static Disk getDisk(){</p><p>  dataFile = new File(Params.HARD_DISK_PATH);</p><p>  if (dataFile.exists()) {</p><p><b>  try {</b></p><p>

29、<b>  init();</b></p><p>  } catch (IOException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p><b>  }</b>&

30、lt;/p><p><b>  } else {</b></p><p>  throw new IllegalAccessError("文件不村在");</p><p><b>  }</b></p><p><b>  return d;</b></p

31、><p><b>  }</b></p><p><b>  /**</b></p><p>  * @throws IOException</p><p><b>  */</b></p><p>  private static void init()

32、throws IOException{</p><p>  block = new byte[256][128];</p><p>  FileInputStream input = new FileInputStream(dataFile);</p><p>  for(int i=0;i<256;i++){</p><p>  in

33、put.read(block[i],0,128);</p><p><b>  }</b></p><p>  input.close();</p><p><b>  }</b></p><p>  public byte[][] getBlock() {</p><p>

34、  return block;</p><p><b>  }</b></p><p>  3.1.2磁盤的分配</p><p>  空閑塊的分配和回收都是針對(duì)專用塊來操作的,沒分配一塊后,把空閑塊數(shù)減1,但要把一組中的第一個(gè)空閑塊分配除去之前應(yīng)該把登記在該塊中的下一組的塊號(hào)及塊數(shù)保存到專用快中(原專用塊中的信息已經(jīng)無用,因?yàn)樗甘镜囊唤M空閑

35、塊都已被分配)【2】,如圖4所示:</p><p>  3.1.3磁盤的歸還</p><p>  當(dāng)歸還一塊時(shí),只要把歸還塊的塊號(hào)登記到專用塊的當(dāng)前組中且將空閑塊數(shù)加1,如果當(dāng)前組已經(jīng)滿10塊,則把專用塊中的內(nèi)容寫到歸還的那塊中,該歸還塊作為新組的第一塊【3】,如圖5所示:</p><p>  3.1.4磁盤狀態(tài)的顯示</p><p>  磁

36、盤的狀態(tài)在每次分配和回收磁盤塊的函數(shù)過程中實(shí)現(xiàn),每分配一個(gè)空閑塊,將相應(yīng)Label由白色改為紅色,表示該磁盤塊已經(jīng)被占用;每回收一塊磁盤塊的時(shí)候,將相應(yīng)Label由紅色改為白色,表示該磁盤塊空閑【4】</p><p><b>  3.2目錄結(jié)構(gòu)</b></p><p><b>  3.2.1創(chuàng)建目錄</b></p><p>

37、;  建立目錄首先要找到建立目錄的位置(父目錄),然后查找該目錄是否存在,如果父目錄不存在,不能建立,如果存在,查找是否存在同名目錄,存在,不能建立,不存在,則查找一個(gè)空目錄項(xiàng),,為該目錄項(xiàng)申請(qǐng)一個(gè)盤塊,并填寫目錄內(nèi)容,如圖6所示</p><p>  3.2.2刪除空目錄</p><p>  刪除空目錄首先要找到該目錄,如果目錄不存在,刪除失??;如果存在,但是,是非空目錄,顯示不能刪除,操

38、作失?。蝗羰强漳夸?,將目錄在樹形目錄和磁盤中刪除【5】,如圖7所示:</p><p><b>  3.2.3刪除目錄</b></p><p>  刪除目錄是在刪除空目錄的基礎(chǔ)上增加了刪除非空目錄的功能。首先檢查要?jiǎng)h除的目錄是否為空,若為空,調(diào)用刪除空目錄的函數(shù),將其刪除;若不為空,深度優(yōu)先遍歷以該目錄為根節(jié)點(diǎn)的子樹,將其孩子節(jié)點(diǎn)依次都刪除,最后調(diào)用刪除空目錄的函數(shù),將

39、該目錄刪除,就完成了刪除目錄的工作。具體流程如圖8所示:</p><p><b>  3.3文件</b></p><p>  對(duì)于文件的很多操作,是通過掉用目錄的操作來完成的,這樣,就大大減少了文件的許多工作。</p><p><b>  3.3.1建立文件</b></p><p>  實(shí)現(xiàn)了建立目

40、錄,建立文件就顯得簡單多了,只需要調(diào)用建立目錄函數(shù),建立文件目錄,然后,將該文件插入到打開文件表中就完成了一個(gè)文件的建立,具體流程如圖9所示:</p><p>  3.3.2刪除文件如圖10</p><p><b>  3.3.3保存文件</b></p><p>  保存文件的過程就是將文件內(nèi)容寫入特定磁盤塊的過程,動(dòng)態(tài)申請(qǐng)一塊磁盤塊,將內(nèi)容寫

41、入磁盤,如果內(nèi)容已經(jīng)寫完,結(jié)束,如果一塊不夠,則要再申請(qǐng)一塊磁盤,依次類推,直至把全部的內(nèi)容都寫到磁盤為止,就完成了保存文件的工作,程序結(jié)束。此模擬操作系統(tǒng)設(shè)定的為在寫入磁盤的同時(shí)自動(dòng)存儲(chǔ)。</p><p><b>  具體實(shí)現(xiàn)代碼如下:</b></p><p>  public void saveFile(String text,DirEntry de){</

42、p><p>  DiskService ds=new DiskService();</p><p>  BlockService bs=new BlockService();</p><p>  bs.freeBlock(de);</p><p>  byte[] b=text.getBytes();</p><p>  

43、int num=b.length/128+1;</p><p>  if(num>1){</p><p><b>  //申請(qǐng)索引塊</b></p><p>  int index=bs.getFreeBlock();</p><p>  int[] position=bs.getDirEntryPosition(

44、de, Explorer.getCDB());</p><p>  de.setIndexAddress((short) index);</p><p>  de.setDirAddress((short) 0); </p><p>  ds.writeTODisk(de, position[0], position[1]);</p><p

45、>  for(int i=0;i<num-1;i++){</p><p>  int blockNum=bs.getFreeBlock();</p><p>  bs.addBlockToIndex(blockNum, index);</p><p>  byte[][] block=Disk.getDisk().getBlock();</p>

46、;<p>  for(int j=0;j<128;j++){</p><p>  block[blockNum][j]=b[i*128+j];</p><p><b>  }</b></p><p>  ds.writeTODisk(block);</p><p><b>  }</b

47、></p><p>  int blockNum=bs.getFreeBlock();</p><p>  bs.addBlockToIndex(blockNum, index);</p><p>  byte[][] block=Disk.getDisk().getBlock();</p><p>  for(int i=0;i<

48、;(b.length)%128;i++){</p><p>  block[blockNum][i]=b[i+(num-1)*128];</p><p><b>  }</b></p><p>  ds.writeTODisk(block);</p><p><b>  }else{</b><

49、/p><p>  int blockNum=bs.getFreeBlock();</p><p>  int[] position=bs.getDirEntryPosition(de, Explorer.getCDB());</p><p>  de.setDirAddress((short) blockNum); </p><p>  de.s

50、etIndexAddress((short) 0);</p><p>  ds.writeTODisk(de, position[0], position[1]);</p><p>  byte[][] block=Disk.getDisk().getBlock();</p><p>  for(int i=0;i<b.length;i++){</p&g

51、t;<p>  block[blockNum][i]=b[i];</p><p><b>  }</b></p><p>  ds.writeTODisk(block);</p><p><b>  }</b></p><p><b>  }</b></p&

52、gt;<p><b>  3.3.4復(fù)制文件</b></p><p>  復(fù)制文件是建立在建立文件和保存文件的基礎(chǔ)之上的基礎(chǔ)之上的,首先,根據(jù)文件名建立文件,然后將內(nèi)容寫到新建立的文件里,就完成了復(fù)制文件的功能。</p><p><b>  3.3.5移動(dòng)文件</b></p><p>  文件的移動(dòng),此操作系

53、統(tǒng)中設(shè)定的為剪切,粘貼操作??梢詫?duì)已經(jīng)建立好的文件進(jìn)行剪切和粘貼操作,通過此操作實(shí)現(xiàn)文件的移動(dòng)。</p><p><b>  3.4 內(nèi)存分配</b></p><p>  內(nèi)存分配后,內(nèi)存區(qū)顏色有改變。如圖11所示。</p><p>  圖11 內(nèi)存分配后的界面顯示</p><p><b>  3.5移動(dòng)文件&

54、lt;/b></p><p>  內(nèi)存回收后顏色恢復(fù)。如圖12所示。</p><p>  圖12 內(nèi)存回收后的界面顯示</p><p><b>  3.6進(jìn)程管理</b></p><p>  3.6.1進(jìn)程管理的要求</p><p>  進(jìn)程管理主要包括進(jìn)程調(diào)度,進(jìn)程的創(chuàng)建和撤銷、進(jìn)程的阻塞

55、和喚醒,中斷作用的實(shí)現(xiàn)。</p><p>  3.6.2進(jìn)程控制塊</p><p>  進(jìn)程控制塊內(nèi)容包括進(jìn)程標(biāo)識(shí)符、主要寄存器內(nèi)容、進(jìn)程狀態(tài)、阻塞原因等等。本模擬系統(tǒng)最多容納10個(gè)進(jìn)程塊。pcb區(qū)域用數(shù)組模擬。</p><p>  進(jìn)程控制塊根據(jù)內(nèi)容的不同組成不同的隊(duì)列,空白進(jìn)程控制塊鏈、就緒隊(duì)列和阻塞隊(duì)列,正在運(yùn)行的進(jìn)程只有一個(gè),系統(tǒng)初始時(shí)只有空白進(jìn)程控制塊鏈。

56、</p><p><b>  3.6.3進(jìn)程調(diào)度</b></p><p>  采用時(shí)間片輪轉(zhuǎn)調(diào)度算法,時(shí)間片為5。 </p><p>  進(jìn)程調(diào)度函數(shù)的主要工作是:</p><p>  第一步,將正在運(yùn)行的進(jìn)程保存在該進(jìn)程對(duì)應(yīng)進(jìn)程控制塊中;</p><p>  第二步,從就緒隊(duì)列中選擇一個(gè)進(jìn)程;&

57、lt;/p><p>  第三步,將這個(gè)進(jìn)程中進(jìn)程控制塊中記錄的各寄存器內(nèi)容恢復(fù)到CPU各個(gè)寄存器內(nèi)。</p><p><b>  3.6.4進(jìn)程創(chuàng)建</b></p><p>  進(jìn)程創(chuàng)建creat的主要工作是:</p><p>  第一步,申請(qǐng)空白進(jìn)程控制塊;</p><p>  第二步,申請(qǐng)主存空間

58、,申請(qǐng)成功,裝入主存;</p><p>  第三步,初始化進(jìn)程控制塊;</p><p>  第四步,將進(jìn)程鏈入就緒隊(duì)列,根據(jù)情況決定是否轉(zhuǎn)向進(jìn)程調(diào)度。</p><p><b>  3.6.5進(jìn)程撤銷</b></p><p>  進(jìn)程撤銷destory的主要工作是:</p><p>  第一步,回收

59、進(jìn)程所占內(nèi)存資源;</p><p>  第二步,回收進(jìn)程控制塊;</p><p>  第三步,在屏幕上顯示進(jìn)程執(zhí)行結(jié)果,進(jìn)程撤銷</p><p><b>  3.6.6進(jìn)程阻塞</b></p><p>  進(jìn)程阻塞block的主要工作是:</p><p>  第一步,保存運(yùn)行進(jìn)程的CPU現(xiàn)場;&l

60、t;/p><p>  第二步,修改進(jìn)程狀態(tài);</p><p>  第三步,將進(jìn)程鏈入對(duì)應(yīng)的阻塞隊(duì)列,然后轉(zhuǎn)向進(jìn)程調(diào)度。</p><p>  3.6.7進(jìn)程的喚醒</p><p>  進(jìn)程喚醒的主要工作是</p><p>  第一步,將進(jìn)程由阻塞隊(duì)列中摘下;</p><p>  第二步,修改進(jìn)程狀態(tài)為

61、就緒;</p><p>  第三步,鏈入就緒隊(duì)列,根據(jù)情況決定是否轉(zhuǎn)向進(jìn)程調(diào)度。</p><p>  3.7硬件工作的模擬</p><p>  硬件工作的模擬包括中央處理器的模擬、主要寄存器的模擬、中斷的模擬和時(shí)鐘的模擬四方面。</p><p> ?、僦醒胩幚砥鞯哪M。用函數(shù)CPU( )(該函數(shù)不能有參數(shù))模擬中央處理器。該函數(shù)主要負(fù)責(zé)解釋

62、“可執(zhí)行文件”中的命令。如:給x賦值x=?;x自加x++;x自減x--;申請(qǐng)?jiān)O(shè)備和時(shí)間!??;程序結(jié)束end;</p><p>  CPU只能解釋指令寄存器IR中的指令。一個(gè)進(jìn)程的運(yùn)行時(shí)要根據(jù)進(jìn)程執(zhí)行的位置,將對(duì)應(yīng)的指令存放到指令寄存器中。</p><p> ?、谥饕拇嫫鞯哪M用全局變量模擬重要寄存器,如cpu重要寄存器,程序狀態(tài)寄存器PSW、指令寄存器IR,程序計(jì)數(shù)器PC,數(shù)據(jù)緩沖寄存

63、器DR等。</p><p> ?、壑袛嗟哪M。中斷的發(fā)現(xiàn)應(yīng)該是硬件的工作,這里在函數(shù)CPU中加檢測PSW的方式來模擬。在CPU()函數(shù)中,每執(zhí)行一條指令之前,先檢查PSW,判斷有無中斷,若有進(jìn)行中斷處理,然后再運(yùn)行解釋指令。CPU函數(shù)應(yīng)該不斷循環(huán)執(zhí)行的。</p><p>  模擬中斷的種類有如下幾種:程序結(jié)束、時(shí)間片到、I/O中斷。程序結(jié)束(執(zhí)行指令end形成的中斷,軟中斷):將結(jié)果寫入文

64、件out,其中包括文件路徑名和x的值,調(diào)用進(jìn)程撤銷原語撤銷進(jìn)程,然后進(jìn)行進(jìn)程調(diào)度;I/O中斷(設(shè)備完成輸入輸出):將輸入輸出完成的進(jìn)程喚醒,將等待該設(shè)備的一個(gè)進(jìn)程同時(shí)喚醒。時(shí)鐘中斷:進(jìn)程時(shí)間片用完,轉(zhuǎn)為就緒,重新進(jìn)程調(diào)度。</p><p> ?、軙r(shí)鐘的模擬。系統(tǒng)中的絕對(duì)時(shí)鐘和相對(duì)時(shí)鐘用全局變量模擬。系統(tǒng)時(shí)鐘用來記錄開機(jī)以后的時(shí)間。 這里的系統(tǒng)時(shí)鐘并不是計(jì)算機(jī)的真正的時(shí)鐘,這里所說的時(shí)間只是一個(gè)單位,例如

65、使用vb中的時(shí)鐘控件實(shí)現(xiàn),每觸發(fā)一次timer事件,絕對(duì)時(shí)鐘增1,表示增加一個(gè)時(shí)間單位,絕對(duì)時(shí)鐘減1。</p><p><b>  模擬系統(tǒng)的相對(duì)時(shí)鐘</b></p><p><b>  3.8整體布局</b></p><p>  此模擬操作系統(tǒng)的整體布局模仿了win7的布局。文件的管理可以進(jìn)入桌面的“計(jì)算機(jī)”進(jìn)行操作實(shí)現(xiàn)

66、;而磁盤管理,內(nèi)存管理,命令接口和顯示外部系統(tǒng)時(shí)間,關(guān)閉系統(tǒng)操作在左下角的“開始”菜單實(shí)現(xiàn)。</p><p><b>  總 結(jié)</b></p><p>  此系統(tǒng)我主要模擬的是文件部分。通過編寫此系統(tǒng),采用了java語言。但是,在實(shí)現(xiàn)此系統(tǒng)中,一方面因?yàn)槲覍?duì)java這門語言掌握的不是很熟練,另外一方面,對(duì)操作系統(tǒng)理解的不夠深入以至于部分功能沒有實(shí)現(xiàn) 。</p

67、><p>  經(jīng)過了兩周的編程,使得我對(duì)java編程和操作系統(tǒng)的知識(shí)有了更深一步了理解。熟練了java的各個(gè)組件和操作系統(tǒng)內(nèi)部的工作原理。同時(shí),在編寫過程中遇到解決的種種困難也讓我學(xué)會(huì)了自己解決困難的方法。</p><p><b>  致 謝</b></p><p>  在嵌入式課程設(shè)計(jì)中,受到老師以及很多同學(xué)的熱情幫助,特別是我的同學(xué)們,他們

68、的熱情使我感動(dòng),也讓我明白友情的重要。還有老師淵博的學(xué)識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度使我受非淺,同學(xué)們的熱情幫助使我信心十足,設(shè)計(jì)的成功凝聚了大家共同的心血,在此我表示忠心的感謝。</p><p>  同時(shí),在此期間,我也從我的室友和同學(xué)們得到許多幫助,是他們?cè)谖铱酂o頭緒之時(shí)幫我找資料,在我有疑難時(shí)耐心給我解答,并一直給予我鼓勵(lì)和支持,支持我認(rèn)真細(xì)致的完成這篇設(shè)計(jì)。我也要向他們致以謝意。在設(shè)計(jì)中遇到了很多專業(yè)知識(shí)問題,最后在

69、老師的辛勤指導(dǎo)下,終于游逆而解。同時(shí),在老師的身上我們學(xué)也到很多實(shí)用的知識(shí),在次我們表示感謝!同時(shí),對(duì)給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!</p><p>  此次課程設(shè)計(jì),學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問題,出現(xiàn)差錯(cuò)的隨機(jī)應(yīng)變,和與人合作共同提高,都受益非淺,今后的制作應(yīng)該更輕松,自己也都能扛的起并高質(zhì)量的完成項(xiàng)目。在此,感謝*老師的細(xì)心指導(dǎo),也同樣謝謝其他各組同學(xué)的無私幫助!&

70、lt;/p><p>  最后,再次向幫助我完成這篇論文的指導(dǎo)老師**老師和親愛的同學(xué)們表示最誠摯的感謝!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 王明臣.數(shù)字電視與高清晰度電.中國廣播電視出版社,2003</p><p>  [2] 方濤.數(shù)字電視業(yè)務(wù)信息及其編碼.國防工業(yè)出版社,2003&

71、lt;/p><p>  [3] 張大波.嵌入式系統(tǒng)原理、設(shè)計(jì)與應(yīng)用.機(jī)械工業(yè)出版社,2005</p><p>  [4] 沈連豐.嵌入式系統(tǒng)及其開發(fā)應(yīng)用.電子工業(yè)出版社,2005</p><p>  [5] 田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用.北京航空航天大學(xué)出版社,2005</p><p>  [6] 符意德.嵌入式系統(tǒng)設(shè)計(jì)原理及應(yīng)用.北京:清華大學(xué)出

溫馨提示

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

評(píng)論

0/150

提交評(píng)論