操作系統(tǒng)課程設計--請求調(diào)頁_第1頁
已閱讀1頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設 計</p><p>  課程設計名稱: 操作系統(tǒng)課程設計 </p><p>  專 業(yè) 班 級 : </p><p>  學 生 姓 名 : </p><p>  學 號 :

2、 </p><p>  指 導 教 師 : </p><p>  課程設計時間: </p><p><b>  專業(yè)課程設計任務書</b></p><p>  說明:本表由指導教師填寫,由教研室主任審核后下達給選題學生,裝訂在設計(論文)首頁<

3、/p><p><b>  1 需求分析 </b></p><p>  該設計使用C程序模擬請求調(diào)頁存儲管理方式,實現(xiàn)對頁面、頁表、地址轉(zhuǎn)換和頁面置換過程的模擬。要求能從終端接收需要分配給作業(yè)的內(nèi)存塊數(shù),完成給定內(nèi)存塊數(shù)的作業(yè)模擬,在指令執(zhí)行過程中能依次顯示其物理地址,最后計算出作業(yè)運行的缺頁率。另外要能對不同內(nèi)存塊數(shù)的作業(yè)模擬作出比較,分析它們的命中率有何不同,分析其規(guī)律

4、。采用先進先出置換算法。</p><p><b>  2 概要設計</b></p><p>  假設每個頁面中可存放10條指令,分配給作業(yè)的內(nèi)存塊數(shù)為4。用c語言模擬一個作業(yè)的執(zhí)行過程,該作業(yè)共有320條指令,即它的地址空間為32頁,目前它的所有頁都還未調(diào)入內(nèi)存。在模擬過程中,如果所訪問的指令已在內(nèi)存,則顯示其物理地址,并轉(zhuǎn)下一條指令。如果所訪問的指令還未裝入內(nèi)存,則

5、發(fā)生缺頁,此時需記錄缺頁的次數(shù),并將相應頁調(diào)入內(nèi)存。如果4個內(nèi)存塊均已裝入該作業(yè),則需進行頁面置換,最后顯示其物理地址,并轉(zhuǎn)下一條指令。在所有320指令執(zhí)行完畢后,請計算并顯示作業(yè)運行過程中發(fā)生的缺頁率。置換算法:采用先進先出(FIFO)置換算法。</p><p>  2.1 通過隨機數(shù)產(chǎn)生一個指令序列,共320條指令。指令的地址按下述原則生成:</p><p> ?、?50%的指令是順序

6、執(zhí)行的;</p><p> ?、?25%的指令是均勻分布在前地址部分;</p><p>  ③ 25%的指令是均勻分布在后地址部分;</p><p><b>  具體的實施方法是:</b></p><p> ?、?在[0,319]的指令地址之間隨機選取一起點m;</p><p> ?、?順序執(zhí)行一

7、條指令,即執(zhí)行地址為m+1的指令;</p><p> ?、?在前地址[0,m+1]中隨機選取一條指令并執(zhí)行,該指令的地址為m′;</p><p> ?、?順序執(zhí)行一條指令,其地址為m′+1的指令;</p><p> ?、?在后地址[m′+2,319]中隨機選取一條指令并執(zhí)行;</p><p>  ⑥ 重復上述步驟①~⑤,直到執(zhí)行320次指令。

8、</p><p>  2.2 將指令序列變換為頁地址流</p><p> ?、?設頁面大小為1K;</p><p> ?、?用戶內(nèi)存容量為4頁到32頁;</p><p> ?、?用戶虛存容里為32K。</p><p>  在用戶虛存中,按每K存放10條指令排列虛存地址,即320條指令在虛存中的存放方式為:</p&

9、gt;<p>  第0條~第9條指令為第0頁(對應虛存地址為[0,9]);</p><p>  第10條~第19條指令為第1頁(對應虛存地址為[10,19]);</p><p><b>  ……</b></p><p><b>  ……</b></p><p>  第310條~第319

10、條指令為第31頁(對應虛存地址為[310,319])。</p><p>  按以上方式,用戶指令可組成32頁。</p><p>  2.3 計算先進先出(FIFO)算法在不同內(nèi)存容量下的命中率。</p><p>  其中,命中率=1-頁面失效次數(shù)/頁地址流長度</p><p><b>  3 運行環(huán)境</b></p

11、><p><b>  3.1 硬件環(huán)境</b></p><p><b>  PC</b></p><p><b>  3.2 軟件環(huán)境</b></p><p> ?。?)Windows XP</p><p> ?。?)Microsoft Visual C

12、++6.0</p><p>  4 開發(fā)工具和編程語言</p><p><b>  4.1 開發(fā)工具</b></p><p>  Microsoft Visual C++6.0 </p><p><b>  4.2 編程語言</b></p><p><b>  

13、C語言</b></p><p><b>  5 詳細設計</b></p><p>  5.1 全局變量的宏定義</p><p>  #define INVALID -1</p><p>  #define total_instruction 320 /* 指令流長 */</p><p

14、>  #define total_vp 32 /* 虛頁長 */</p><p>  5.2 頁面的數(shù)據(jù)結(jié)構(gòu)</p><p>  typedef struct{ //定義頁面類型</p><p>  int pn; //pn為頁號</p><p>  int pfn; //pfn為塊號&

15、lt;/p><p>  int counter; //為一個周期內(nèi)訪問頁面次數(shù)</p><p>  int time; //為訪問時間</p><p><b>  }pl_type;</b></p><p>  pl_type pl[total_vp]; //頁面結(jié)構(gòu)數(shù)組</p><p&

16、gt;  5.3 頁面控制的數(shù)據(jù)結(jié)構(gòu)及相關變量</p><p>  pl_type pl[total_vp]; //頁面結(jié)構(gòu)數(shù)組</p><p>  struct pfc_struct{ //定義頁面控制結(jié)構(gòu)</p><p>  int pn,pfn;</p><p>  struct pfc_struct *n

17、ext;</p><p><b>  };</b></p><p>  typedef struct pfc_struct pfc_type;</p><p>  pfc_type pfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;</p><p>  //pfc[

18、total_vp]定義用戶進程虛頁控制結(jié)構(gòu)</p><p>  //*freepf_head為空內(nèi)存塊號的頭指針</p><p>  //*busypf_head為忙內(nèi)存塊的頭指針</p><p>  //*busypf_tail為忙內(nèi)存塊的尾指針</p><p>  int diseffect, a[total_instruction];

19、</p><p>  int page[total_instruction], offset[total_instruction];</p><p>  //int a[total_instruction]:指令流數(shù)組</p><p>  //int page[total_instruction]:每條指令所屬頁號</p><p>  //

20、int offset[total_instruction]:每頁裝入10條指令后取模運算頁號偏移值</p><p>  //int diseffect:頁面失效次數(shù)</p><p>  5.4 先進先出算法函數(shù)的設計</p><p>  void FIFO(total_pf,j) /* FIFO算法,計算使用FIFO算法時的命中率*/</p><

21、;p>  int total_pf; /* 用戶進程的內(nèi)存頁面數(shù)*/</p><p><b>  int j;</b></p><p><b>  {</b></p><p><b>  int i;</b></p><p>  pfc_type *p;&l

22、t;/p><p>  initialize(total_pf); /* 初始化相關頁面控制用數(shù)據(jù)結(jié)構(gòu)*/</p><p>  busypf_head=busypf_tail=NULL; /* 忙頁面隊列頭,隊列尾鏈接*/</p><p>  for(i=0;i<total_instruction;i++)</p><p><b&

23、gt;  {</b></p><p>  page[i]=a[i]/10;</p><p>  offset[i]=a[i]%10;</p><p>  if(pl[page[i]].pfn==INVALID) /*頁面失效*/</p><p><b>  {</b></p><p

24、>  diseffect+=1; /* 失效次數(shù)*/</p><p>  if(freepf_head==NULL) /* 無空閑頁面*/</p><p><b>  {</b></p><p>  p=busypf_head->next;</p><p>

25、  pl[busypf_head->pn].pfn=INVALID;</p><p>  freepf_head=busypf_head; /*釋放忙頁面隊列中的第一個頁面*/</p><p>  freepf_head->next=NULL;</p><p>  busypf_head=p;</p><p><b> 

26、 }</b></p><p>  p=freepf_head->next; /*按FIFO方式調(diào)新頁面入內(nèi)存頁面*/</p><p>  freepf_head->next=NULL;</p><p>  freepf_head->pn=page[i];</p><p>  pl[page[i]].pfn=

27、freepf_head->pfn;</p><p>  if(busypf_tail==NULL)</p><p>  busypf_head=busypf_tail=freepf_head;</p><p><b>  else</b></p><p><b>  {</b></p&g

28、t;<p>  busypf_tail->next=freepf_head;</p><p>  busypf_tail=freepf_head;</p><p><b>  }</b></p><p>  freepf_head=p; </p><p><b>  }</b

29、></p><p><b>  if(j==1)</b></p><p><b>  {</b></p><p>  printf("指令%3d的物理地址為%x ",i+1,&pl[page[i]]+offset[i]);</p><p>  if(i%2==

30、1) printf("\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("缺頁率:%6.4f 命中率:%6.4f\n",(float)diseffect/320,1-(float)diseffect/320

31、);</p><p><b>  }</b></p><p>  5.5 初始化功能函數(shù)的設計</p><p>  void initialize(total_pf) /*初始化相關數(shù)據(jù)結(jié)構(gòu),給每個相關的頁面賦值*/</p><p>  int total_pf; /*用戶進程的內(nèi)存頁面數(shù)*/&

32、lt;/p><p><b>  {</b></p><p><b>  int i;</b></p><p>  diseffect=0;</p><p>  for(i=0;i<total_vp;i++)</p><p><b>  {</b><

33、;/p><p>  pl[i].pn=i;pl[i].pfn=INVALID; /*置頁面控制結(jié)構(gòu)中的頁號,頁面為空*/</p><p>  pl[i].counter=0;pl[i].time=-1; /*頁面控制結(jié)構(gòu)中的訪問次數(shù)為0,時間為-1*/</p><p><b>  }</b></p><p>  for(i

34、=1;i<total_pf;i++)</p><p><b>  {</b></p><p>  pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1; /*建立pfc[i-1]和pfc[i]之間的鏈接*/</p><p><b>  }</b></p><p>

35、;  pfc[total_pf-1].next=NULL;pfc[total_pf-1].pfn=total_pf-1;</p><p>  freepf_head=&pfc[0]; /*空頁面隊列的頭指針為pfc[0]*/</p><p><b>  }</b></p><p>  5.6 主函數(shù)的算法設計</p>

36、;<p><b>  main()</b></p><p><b>  {</b></p><p>  int S,i,j,temp;</p><p>  srand(getpid()*10); /*由于每次運行時進程號不同,故可以用來作為初始化隨即數(shù)隊列的"種子"*/</p>

37、;<p>  S=(float)319*rand()/RAND_MAX+1;</p><p>  for(i=0;i<total_instruction;i+=4) /* 產(chǎn)生指令隊列*/</p><p><b>  {</b></p><p>  a[i]=S; /*任選

38、一指令訪問點*/</p><p>  a[i+1]=a[i]+1; /* 順序執(zhí)行一條指令*/</p><p>  a[i+2]=(float)a[i]*rand()/RAND_MAX;/* 執(zhí)行前地址指令m'*/</p><p>  a[i+3]=a[i+2]+1; /* 執(zhí)行后地址指

39、令*/</p><p>  S=(float)rand()*(318-a[i+2])/RAND_MAX+a[i+2]+2;</p><p><b>  }</b></p><p><b>  do</b></p><p><b>  {</b></p><p

40、>  printf("***************************************\n");</p><p>  printf(" 1:給定內(nèi)存塊數(shù)的作業(yè)模擬\n");</p><p>  printf(" 2:比較不同內(nèi)存容量下的命中率\n");</p><p>  print

41、f(" 3:退出\n");</p><p>  printf("***************************************\n");</p><p>  printf("請選擇需要實現(xiàn)的功能:");</p><p>  scanf("%d",&temp);&

42、lt;/p><p>  printf("***************************************\n");</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 1:printf("請輸入給定的內(nèi)存塊數(shù)(4--3

43、2):");</p><p>  scanf("%d",&j);</p><p>  printf("***************************************\n");</p><p>  FIFO(j,1);break;</p><p>  case 2:for

44、(i=4;i<=32;i++) /* 用戶內(nèi)存工作區(qū)從4個頁面到32個頁面*/</p><p><b>  {</b></p><p>  printf("內(nèi)存塊數(shù):%2d ",i); </p><p>  FIFO(i,2);</p><p><b>  }&l

45、t;/b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  }while(temp!=3);</p><p><b>  }</b></p><p><b>  5.7 源代碼

46、如下</b></p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <sys/types.h></p><p>  //#include <unistd.h></p>

47、<p>  //#define TRUE 1</p><p>  //#define FALSE 0</p><p>  #define INVALID -1</p><p>  #define total_instruction 320 /* 指令流長 */</p><p>  #define total_vp 32

48、 /* 虛頁長 */</p><p>  //#define clear_period 50 /*清零周期*/</p><p>  typedef struct{ /* 頁面結(jié)構(gòu)*/</p><p>  int pn,pfn,counter,time; /*pn頁號, pfn塊號, counter

49、為一個周期內(nèi)訪問頁面的次數(shù),time訪問時間*/</p><p><b>  }pl_type;</b></p><p>  pl_type pl[total_vp]; /* 頁面結(jié)構(gòu)數(shù)組*/</p><p>  struct pfc_struct{ /* 頁面控制結(jié)構(gòu)*/</p>

50、<p>  int pn,pfn;</p><p>  struct pfc_struct *next;</p><p><b>  };</b></p><p>  typedef struct pfc_struct pfc_type;</p><p>  /*pfc[total_vp]定義用戶進程虛頁控制

51、結(jié)構(gòu)</p><p>  *freepf_head為空頁面頭的指針</p><p>  *busypf_head為忙頁面頭的指針</p><p>  *busypf_tail為忙頁面尾的指針*/</p><p>  pfc_type pfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;&l

52、t;/p><p>  int diseffect, a[total_instruction]; </p><p>  /*int a[total_instruction]:指令流數(shù)組*/</p><p>  int page[total_instruction], offset[total_instruction]; </p>

53、<p>  /*page[total_instruction]:每條指令所屬頁號,offset[total_instruction]:每頁裝入10條指令后取模運算頁號偏移值*/</p><p>  void initialize();</p><p>  void FIFO();</p><p><b>  main()</b>&

54、lt;/p><p><b>  {</b></p><p>  int S,i,j,temp;</p><p>  srand(getpid()*10); /*由于每次運行時進程號不同,故可以用來作為初始化隨即數(shù)隊列的"種子"*/</p><p>  S=(float)319*rand()/RAND_M

55、AX+1;</p><p>  for(i=0;i<total_instruction;i+=4) /* 產(chǎn)生指令隊列*/</p><p><b>  {</b></p><p>  a[i]=S; /*任選一指令訪問點*/</p><p>  a[i+1]=a[

56、i]+1; /* 順序執(zhí)行一條指令*/</p><p>  a[i+2]=(float)a[i]*rand()/RAND_MAX;/* 執(zhí)行前地址指令m'*/</p><p>  a[i+3]=a[i+2]+1; /* 執(zhí)行后地址指令*/</p><p>  S=(float)rand(

57、)*(318-a[i+2])/RAND_MAX+a[i+2]+2;</p><p><b>  }</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("*********************

58、******************\n");</p><p>  printf(" 1:給定內(nèi)存塊數(shù)的作業(yè)模擬\n");</p><p>  printf(" 2:比較不同內(nèi)存容量下的命中率\n");</p><p>  printf(" 3:退出\n");</p><

59、p>  printf("***************************************\n");</p><p>  printf("請選擇需要實現(xiàn)的功能:");</p><p>  scanf("%d",&temp);</p><p>  printf("*****

60、**********************************\n");</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 1:printf("請輸入給定的內(nèi)存塊數(shù)(4--32):");</p><p>  scanf(

61、"%d",&j);</p><p>  printf("***************************************\n");</p><p>  FIFO(j,1);break;</p><p>  case 2:for(i=4;i<=32;i++) /*

62、用戶內(nèi)存工作區(qū)從4個頁面到32個頁面*/</p><p><b>  {</b></p><p>  printf("內(nèi)存塊數(shù):%2d ",i); </p><p>  FIFO(i,2);</p><p><b>  }</b></p><p>

63、;<b>  break;</b></p><p><b>  }</b></p><p>  }while(temp!=3);</p><p><b>  }</b></p><p>  void FIFO(total_pf,j) /*

64、FIFO算法,計算使用FIFO算法時的命中率*/</p><p>  int total_pf; /* 用戶進程的內(nèi)存頁面數(shù)*/</p><p><b>  int j;</b></p><p><b>  {</b></p><p><b&g

65、t;  int i;</b></p><p>  pfc_type *p;</p><p>  initialize(total_pf); /* 初始化相關頁面控制用數(shù)據(jù)結(jié)構(gòu)*/</p><p>  busypf_head=busypf_tail=NULL; /* 忙頁面隊列頭,隊列尾鏈接*/</p><

66、;p>  for(i=0;i<total_instruction;i++)</p><p><b>  {</b></p><p>  page[i]=a[i]/10;</p><p>  offset[i]=a[i]%10;</p><p>  if(pl[page[i]].pfn==INVALID)

67、 /*頁面失效*/</p><p><b>  {</b></p><p>  diseffect+=1; /* 失效次數(shù)*/</p><p>  if(freepf_head==NULL) /* 無空閑頁面*/</p><p><b>  {</b&

68、gt;</p><p>  p=busypf_head->next;</p><p>  pl[busypf_head->pn].pfn=INVALID;</p><p>  freepf_head=busypf_head; /*釋放忙頁面隊列中的第一個頁面*/</p><p>  freepf_head->next

69、=NULL;</p><p>  busypf_head=p;</p><p><b>  }</b></p><p>  p=freepf_head->next; /*按FIFO方式調(diào)新頁面入內(nèi)存頁面*/</p><p>  freepf_head->next=NULL;</p>

70、;<p>  freepf_head->pn=page[i];</p><p>  pl[page[i]].pfn=freepf_head->pfn;</p><p>  if(busypf_tail==NULL)</p><p>  busypf_head=busypf_tail=freepf_head;</p><p

71、><b>  else</b></p><p><b>  {</b></p><p>  busypf_tail->next=freepf_head;</p><p>  busypf_tail=freepf_head;</p><p><b>  }</b>&l

72、t;/p><p>  freepf_head=p; </p><p><b>  }</b></p><p><b>  if(j==1)</b></p><p><b>  {</b></p><p>  printf("指令%3d的物

73、理地址為%x ",i+1,&pl[page[i]]+offset[i]);</p><p>  if(i%2==1) printf("\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  print

74、f("缺頁率:%6.4f 命中率:%6.4f\n",(float)diseffect/320,1-(float)diseffect/320);</p><p><b>  }</b></p><p>  void initialize(total_pf) /*初始化相關數(shù)據(jù)結(jié)構(gòu),給每個相關的頁面賦值*/</p>&l

75、t;p>  int total_pf; /*用戶進程的內(nèi)存頁面數(shù)*/</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  diseffect=0;</p><p>  for(i=0;i<tot

76、al_vp;i++)</p><p><b>  {</b></p><p>  pl[i].pn=i;pl[i].pfn=INVALID; /*置頁面控制結(jié)構(gòu)中的頁號,頁面為空*/</p><p>  pl[i].counter=0;pl[i].time=-1; /*頁面控制結(jié)構(gòu)中的訪問次數(shù)為0,時間為-1*/</p><

77、;p><b>  }</b></p><p>  for(i=1;i<total_pf;i++)</p><p><b>  {</b></p><p>  pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1; /*建立pfc[i-1]和pfc[i]之間的鏈接*/</p&

78、gt;<p><b>  }</b></p><p>  pfc[total_pf-1].next=NULL;pfc[total_pf-1].pfn=total_pf-1;</p><p>  freepf_head=&pfc[0]; /*空頁面隊列的頭指針為pfc[0]*/</p><p><

79、;b>  }</b></p><p><b>  6 調(diào)試分析</b></p><p>  1)在對頁面的數(shù)據(jù)結(jié)構(gòu)設計時,本來是只想著實現(xiàn)先進先出算法,只需要有頁號和塊號就行了。后來在看一些參考書的時候,發(fā)現(xiàn)對頁面數(shù)據(jù)結(jié)構(gòu)的設計比較復雜,有加進去了訪問頁面的次數(shù)和訪問時間,數(shù)據(jù)結(jié)構(gòu)如下:</p><p>  typedef s

80、truct{ //定義頁面類型</p><p>  int pn; //pn為頁號</p><p>  int pfn; //pfn為塊號</p><p>  int counter; //為一個周期內(nèi)訪問頁面次數(shù)</p><p>  int time; //為訪問時間</p><p>

81、;<b>  }pl_type;</b></p><p>  后來仔細一想,這樣設計的話就會更加完善,雖然在先進先出算法中用不到,但是別的算法中會用到,比如最近最久未使用算法。這樣的話就可以增加算法的通用性和可移植性。</p><p>  2)因為本程序是要求隨機的產(chǎn)生一個個數(shù)為320的指令序列,這就要求程序能隨機的產(chǎn)生320個隨機數(shù)??墒窃谟胷and()函數(shù)和sra

82、nd()產(chǎn)生隨機數(shù)的時候是要用到種子,而這個種子必須要求在每次執(zhí)行的時候的是不一樣的。這著實讓我費盡心思啊,后來經(jīng)過參考一些資料,終于找到方法。我們可以用getpid()函數(shù)得到的進程號作為產(chǎn)生隨機數(shù)的種子,由于每次運行時進程號不同,故可以用來作為初始化隨即數(shù)隊列的"種子"。</p><p>  3)在做主程序的功能實現(xiàn)是,我想要顯示出每個指令的物理地址,又想把不同內(nèi)存容量下的命中率做個比較。

83、先開始把這些功能做在了一起,但是程序執(zhí)行時要顯示的東西太多了,太亂。后來想想,把這兩個主要功能分開,用switch()分支語句非別實現(xiàn),這樣的話目的就比較明確。</p><p>  4)在做初始化函數(shù)的設計時,先開始沒有想到要把各個物理塊鏈接起來,在先進先出的算法設計時就感覺很不對勁,感覺沒有辦法對物理塊之間進行操作。后來想想,應該在初始化對各個指針做好初始化,這樣才能把各個內(nèi)存上的物理塊聯(lián)系起來。</p&

84、gt;<p>  5)還有些其它方面的錯誤,不過只要看一眼,就能改正,是粗心造成的。</p><p><b>  7 測試結(jié)果</b></p><p>  1)給定內(nèi)存塊數(shù)的作業(yè)模擬,內(nèi)存塊數(shù)4塊。</p><p>  運行結(jié)果如圖1.1、圖1.2、圖1.3、圖1.4</p><p>  圖1.1 內(nèi)存塊

85、數(shù)為4的作業(yè)模擬</p><p>  圖1.2 內(nèi)存塊數(shù)為4的作業(yè)模擬</p><p>  圖1.3 內(nèi)存塊數(shù)為4的作業(yè)模擬</p><p>  圖1.4 內(nèi)存塊數(shù)為4的作業(yè)模擬</p><p>  2)不同內(nèi)存容量下命中率的比較,運行結(jié)果如圖2</p><p>  圖2 不同內(nèi)存容量下命中率的比較</p

86、><p><b>  參考文獻</b></p><p>  任滿杰等《操作系統(tǒng)原理實用教程》 電子工業(yè)出版社 2006</p><p>  湯子瀛 《計算機操作系統(tǒng)》(修訂版)西安電子科技大學出版社 2001</p><p>  張堯?qū)W 史美林《計算機操作系統(tǒng)教程》實驗指導 清華大學出版社 2000 </p>

87、<p>  羅宇等 《操作系統(tǒng)課程設計》機械工業(yè)出版社 2005</p><p><b>  心得體會</b></p><p>  我的實驗的主要目的是完成請求調(diào)頁存儲管理方式的模擬,通過對頁面、頁表、地址轉(zhuǎn)換和頁面置換過程的模擬,加深對請求調(diào)頁系統(tǒng)的原理和實現(xiàn)過程的理解。主要功能是在用戶給定分配給用戶作業(yè)的內(nèi)存空間后,隨機產(chǎn)生個數(shù)是320的指令序列,在

88、指令執(zhí)行過程中顯示其物理地址,最后計算過程中的缺頁次數(shù)和缺頁率。本程序中用到的頁面置換算法是先進先出算法,算是比較簡單的,在理論知識學習的時候就感覺比較簡單。功能的實現(xiàn)還是主要依靠鏈表,來實現(xiàn)內(nèi)存和外存的頁面置換。因為在大一時就開始學習指針和鏈表,到現(xiàn)在來說還是比較熟悉的,在應用過程中也沒有遇到特別難解決的問題。雖然程序的算法比較簡單些,但從中我還是學到了好多以前沒學到的東西,那些被我認為沒有用的知識和感覺自己已經(jīng)會了的東西。</

89、p><p>  通過這一周的實踐學習,我認識到學好計算機要重視實踐操作,不僅僅是學習操作系統(tǒng),以及其它的計算機方面的知識都要重在實踐,很多以前學過的東西,在運用時都不能很熟練,也說明理論知識和實踐之間的差別。這就告訴了我們在以后的學習過程中要培養(yǎng)自己的動手能力,要將學過的知識轉(zhuǎn)化為實踐。作為一個計科專業(yè)的學生,通過這周的學習,使我更加明白了動手能力的重要性。</p><p>  在這次的課程設

90、計中,我不斷地去找書本知識和查閱其它有關資料,不僅鞏固了對課本知識的掌握,還有利于以后更好的進步,提高了對課外知識的了解,雖然花費了不少時間,但只要學到有價值的東西,我認為都是值得的。在完成該試驗的過程中,我問了同學和老師,還查閱了很多書籍,通過學習,翻看以前學過的知識,使我明白了我在學習知識上的很多不足。不過在此同時又重新復習了課本,從中學到了許多以前未學到的知識,感覺非常有成就感,讓我對自己更加有信心,讓我對操作系統(tǒng)這門課程也更感興

溫馨提示

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

評論

0/150

提交評論