版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 實驗報告題目:</b></p><p><b> 自制時鐘</b></p><p><b> 問題描述</b></p><p> 編制和調(diào)試一個自制時鐘,在屏幕右上角當(dāng)時的時間;按XX:XX:XX形式顯示,并且能正確進(jìn)位,24小時應(yīng)消零。系統(tǒng)每隔55ms就自動調(diào)用新
2、的中斷,在主程序中取系統(tǒng)時間,并駐留程序。在新的1Ch號中斷中顯示時間。 編制一個匯編程序,它應(yīng)包括兩個部分: 1) 新的1CH中斷處理程序,其功能是,首先執(zhí)行原1CH中斷處理,然后取當(dāng) 時系統(tǒng)時間,處理進(jìn)位,正確顯示當(dāng)時的時間。 2) 初始化程序:其功能是,首先取原1CH中斷向量,然后設(shè)置新1CH中斷向 量,最后駐留新1CH中斷處理程序</p><p><b> 數(shù)據(jù)結(jié)構(gòu)及符號說明</
3、b></p><p> CLOCK: 設(shè)置新的1CH中斷處理程序并常駐內(nèi)存。</p><p> DISPLAY:利用宏定義及宏調(diào)用保存光標(biāo)位置,并寫入字符。</p><p> SHOW: 在在屏幕右上角顯示正確變化的當(dāng)時時間</p><p> TRNS: 利用宏定義及宏調(diào)用將時間的二進(jìn)制轉(zhuǎn)換成ASCII字符顯示出來
4、。</p><p> CURSOR: 在屏幕右上角顯示當(dāng)時的系統(tǒng)時鐘,如20:05:33。</p><p> DEAL: 對時間的進(jìn)位進(jìn)行處理控制。</p><p><b> 流程圖</b></p><p><b> 源程序及說明</b></p><p>&l
5、t;b> .286</b></p><p> DATAS SEGMENT</p><p><b> h1 db 0</b></p><p><b> h2 db 0</b></p><p><b> m1 db 0</b></p>&l
6、t;p><b> m2 db 0</b></p><p><b> s1 db 0</b></p><p><b> s2 db 0</b></p><p> DATAS ENDS</p><p> CODES SEGMENT</p><p&
7、gt; ASSUME CS:CODES,DS:DATAS</p><p><b> START:</b></p><p> MOV AX,DATAS</p><p> MOV DS,AX</p><p> mainprocfar</p><p> ;保存原有1ch中斷</p
8、><p> mov al,1ch</p><p> mov ah,35h</p><p><b> int 21h</b></p><p><b> push es</b></p><p><b> push bx</b></p>&
9、lt;p><b> push ds</b></p><p> ;設(shè)置新的1ch中斷</p><p> mov ax,seg clock</p><p><b> mov ds,ax</b></p><p> mov dx,offset clock</p><p&g
10、t; mov al,1ch</p><p> mov ah,25h</p><p><b> int 21h</b></p><p><b> ;常駐內(nèi)存</b></p><p> mov ax,3100h</p><p><b> int 21h<
11、;/b></p><p> ;恢復(fù)原有1ch中斷</p><p><b> pop ds</b></p><p><b> pop dx</b></p><p><b> pop ds</b></p><p> mov al,1ch<
12、;/p><p> mov ah,25h</p><p><b> int 21h</b></p><p><b> ;退出</b></p><p> mov ax,4c00h</p><p><b> int 21h</b></p>
13、<p> main endp</p><p> clockprocfar</p><p> call gettime</p><p><b> iret</b></p><p> clockendp</p><p><b> ;獲取系統(tǒng)時間</b>
14、;</p><p> gettime procnear</p><p><b> pusha</b></p><p> mov ah,2ch</p><p><b> int 21h</b></p><p> ;將除數(shù)10保存在bl中</p><
15、;p> mov bl,10d</p><p><b> ;處理小時</b></p><p><b> mov al,ch</b></p><p><b> cbw</b></p><p><b> div bl</b></p>
16、<p><b> mov h1,al</b></p><p><b> mov h2,ah</b></p><p><b> ;處理分鐘</b></p><p><b> mov al,cl</b></p><p><b>
17、 cbw</b></p><p><b> div bl</b></p><p><b> mov m1,al</b></p><p><b> mov m2,ah</b></p><p><b> ;處理秒</b></p>
18、<p><b> mov al,dh</b></p><p><b> cbw</b></p><p><b> div bl</b></p><p><b> mov s1,al</b></p><p><b> mov
19、 s2,ah</b></p><p><b> ;顯示時間</b></p><p> call showtime</p><p><b> popa</b></p><p><b> ret</b></p><p> gettime
20、endp</p><p><b> ;顯示時間</b></p><p> showtime proc near</p><p><b> pusha</b></p><p><b> ;獲取當(dāng)前光標(biāo)位置</b></p><p><b&g
21、t; mov bh,0h</b></p><p> mov ah,03h</p><p><b> int 10h</b></p><p><b> push dx</b></p><p><b> push cx</b></p><p
22、><b> ;重置光標(biāo)</b></p><p><b> mov bh,0d</b></p><p><b> mov dh,0d</b></p><p> mov dl,72d</p><p> mov ah,02h</p><p>&
23、lt;b> int 10h</b></p><p><b> ;顯示時間</b></p><p> add h1,30h</p><p><b> mov al,h1</b></p><p> mov ah,0eh</p><p><b>
24、; int 10h</b></p><p> add h2,30h</p><p><b> mov al,h2</b></p><p> mov ah,0eh</p><p><b> int 10h</b></p><p><b> ;顯
25、示":"</b></p><p> mov al,3ah</p><p> mov ah,0eh</p><p><b> int 10h</b></p><p><b> ;顯示分鐘</b></p><p> add m1,30h&
26、lt;/p><p><b> mov al,m1</b></p><p> mov ah,0eh</p><p><b> int 10h</b></p><p> add m2,30h</p><p><b> mov al,m2</b><
27、/p><p> mov ah,0eh</p><p><b> int 10h</b></p><p><b> ;顯示":"</b></p><p> mov al,3ah</p><p> mov ah,0eh</p><p&
28、gt;<b> int 10h</b></p><p><b> ;顯示秒</b></p><p> add s1,30h</p><p><b> mov al,s1</b></p><p> mov ah,0eh</p><p><b
29、> int 10h</b></p><p> add s2,30h</p><p><b> mov al,s2</b></p><p> mov ah,0eh</p><p><b> int 10h</b></p><p><b>
30、 ;恢復(fù)原來光標(biāo)位置</b></p><p><b> pop cx</b></p><p><b> pop dx</b></p><p><b> mov bh,0h</b></p><p> mov ah,02h</p><p>
31、;<b> int 10h</b></p><p><b> popa</b></p><p><b> ret</b></p><p> showtime endp</p><p> CODES ENDS</p><p><b>
32、 END START</b></p><p><b> 運行結(jié)果</b></p><p><b> 實驗說明</b></p><p> 1.實驗過程中應(yīng)該定義保存原1CH中斷的向量單元。</p><p> 2.實驗中用到以下的功能調(diào)用:25H(置中斷向量),35H(取中斷向量),
33、2CH(取系統(tǒng)時間)以及“int 10h“中的02H(置光標(biāo)位置)、03(讀光標(biāo)位置)、0E(寫字符),我們應(yīng)熟悉上述功能調(diào)用的實現(xiàn),否則在實現(xiàn)過程中將會出現(xiàn)麻煩。</p><p> 3.實驗過程中,不僅僅需要能在DOS中顯示時間,并且應(yīng)保證其他程序能使用DOS。</p><p> 4.在具體的實踐過程中要注意顯示時間時光標(biāo)位置的重置問題。</p><p>
34、5.掌握宏定義以及宏調(diào)用的相關(guān)規(guī)范,實驗過程中,要先進(jìn)行宏的定義后進(jìn)行宏的調(diào)用</p><p><b> 實驗報告題目</b></p><p><b> 處理器調(diào)度</b></p><p><b> 問題描述</b></p><p> (1) 假定系統(tǒng)有五個進(jìn)程,每一個
35、進(jìn)程用一個進(jìn)程控制塊PCB來代表,進(jìn)程控制塊的格式為:</p><p> 其中,進(jìn)程名——作為進(jìn)程的標(biāo)識,假設(shè)五個進(jìn)程的進(jìn)程名分別為P1,P2,P3,P4,P5。</p><p> 指針——按優(yōu)先數(shù)的大小把五個進(jìn)程連成隊列,用指針指出下一個進(jìn)程的進(jìn)程控制塊的首地址,最后一個進(jìn)程中的指針為“0”。</p><p> 要求運行時間——假設(shè)進(jìn)程需要運行的單位時間數(shù)。
36、</p><p> 優(yōu)先數(shù)——賦予進(jìn)程的優(yōu)先數(shù),調(diào)度時總是選取優(yōu)先數(shù)大的進(jìn)程先執(zhí)行。</p><p> 狀態(tài)——可假設(shè)有兩種狀態(tài),“就緒”狀態(tài)和“結(jié)束”狀態(tài)。五個進(jìn)程的初始狀態(tài)都為“就緒”,用“R”表示,當(dāng)一個進(jìn)程運行結(jié)束后,它的狀態(tài)為“結(jié)束”,用“E”表示。</p><p> (2) 在每次運行你所設(shè)計的處理器調(diào)度程序之前,為每個進(jìn)程任意確定它的“優(yōu)先數(shù)”和
37、“要求運行時間”。</p><p> (3) 為了調(diào)度方便,把五個進(jìn)程按給定的優(yōu)先數(shù)從大到小連成隊列。用一單元指出隊首進(jìn)程,用指針指出隊列的連接情況。例:</p><p><b> 隊首標(biāo)志</b></p><p><b> K2 </b></p><p> (4) 處理器調(diào)度總是選隊
38、首進(jìn)程運行。采用動態(tài)改變優(yōu)先數(shù)的辦法,進(jìn)程每運行一次優(yōu)先數(shù)就減“1”。由于本實驗是模擬處理器調(diào)度,所以,對被選中的進(jìn)程并不實際的啟動運行,而是執(zhí)行:</p><p><b> 優(yōu)先數(shù)-1</b></p><p><b> 要求運行時間-1</b></p><p> 來模擬進(jìn)程的一次運行。</p><
39、;p> 提醒注意的是:在實際的系統(tǒng)中,當(dāng)一個進(jìn)程被選中運行時,必須恢復(fù)進(jìn)程的現(xiàn)場,讓它占有處理器運行,直到出現(xiàn)等待事件或運行結(jié)束。在這里省去了這些工作。</p><p> (5) 進(jìn)程運行一次后,若要求運行時間0,則再將它加入隊列(按優(yōu)先數(shù)大小插入,且置隊首標(biāo)志);若要求運行時間=0,則把它的狀態(tài)修改成“結(jié)束”(E),且退出隊列。</p><p> (6) 若“就緒”狀態(tài)的進(jìn)程
40、隊列不為空,則重復(fù)上面(4)和(5)的步驟,直到所有進(jìn)程都成為“結(jié)束”狀態(tài)。</p><p> (7) 在所設(shè)計的程序中應(yīng)有顯示或打印語句,能顯示或打印每次被選中進(jìn)程的進(jìn)程名以及運行一次后進(jìn)程隊列的變化。</p><p> (8) 為五個進(jìn)程任意確定一組“優(yōu)先數(shù)”和“要求運行時間”,啟動所設(shè)計的處理器調(diào)度程序,顯示或打印逐次被選中進(jìn)程的進(jìn)程名以及進(jìn)程控制塊的動態(tài)變化過程。</p&
41、gt;<p><b> 數(shù)據(jù)結(jié)構(gòu)及符號說明</b></p><p> 進(jìn)程控制塊PCB的結(jié)構(gòu)</p><p> #define num 3 //假定系統(tǒng)中進(jìn)程個數(shù)為3</p><p> struct PCB{</p><p> char ID;//進(jìn)程名</p><p>
42、; int runtime;//要求運行時間</p><p> int pri;//優(yōu)先數(shù)</p><p> char state; //狀態(tài),R-就緒,F(xiàn)-結(jié)束</p><p><b> };</b></p><p> struct PCB pcblist[num];//定義進(jìn)程控制塊數(shù)組</p>
43、<p><b> 流程圖</b></p><p><b> 源程序及說明</b></p><p> 設(shè)置進(jìn)程和CPU單位運行時間</p><p> #include"ProcPCB.h"</p><p> #include"stdio.h&quo
44、t;</p><p> #include"stdlib.h"</p><p> extern int unitTime;</p><p> int procInit(procPCB **pcbHead)</p><p><b> {</b></p><p> int
45、procNum;</p><p> procPCB *head=NULL,*pcb1=NULL,*pcb2=NULL;</p><p> printf("請輸入進(jìn)程個數(shù):\n");</p><p> scanf("%d",&procNum);</p><p> for(int i=0;i
46、<procNum;i++)</p><p><b> {</b></p><p> printf("進(jìn)程名 需要時間\n");</p><p> pcb2=(procPCB *)malloc(sizeof(procPCB));</p><p> scanf("%s%d"
47、;,pcb2->name,&pcb2->requiredTime);</p><p> pcb2->status="Ready";</p><p> pcb2->runTime=0;</p><p> if(pcb1==NULL)</p><p> head=pcb2;</p&
48、gt;<p><b> else</b></p><p> pcb1->next=pcb2;</p><p> pcb1=pcb2;</p><p><b> }</b></p><p> //如果進(jìn)程個數(shù)不為0</p><p> if(pro
49、cNum!=0)</p><p><b> {</b></p><p> pcb2->next=head;</p><p> printf("請輸入CPU單位時間:\n");</p><p> scanf("%d",&unitTime);</p>
50、<p><b> }</b></p><p> *pcbHead=head;</p><p> return procNum;</p><p><b> }</b></p><p><b> 顯示進(jìn)程</b></p><p> #
51、include"ProcPCB.h"</p><p> #include"windows.h"</p><p> #include"stdio.h"</p><p> COORD whereXY()</p><p><b> {</b></p>
52、;<p> HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);</p><p> CONSOLE_SCREEN_BUFFER_INFO csbi;</p><p> GetConsoleScreenBufferInfo(handle,&csbi);</p><p> return csbi.dw
53、CursorPosition;</p><p><b> }</b></p><p> void gotoXY(COORD pos)</p><p><b> {</b></p><p> HANDLE handle=::GetStdHandle(STD_OUTPUT_HANDLE);<
54、;/p><p> SetConsoleCursorPosition(handle,pos);</p><p><b> }</b></p><p> void SetCursorVisible(bool bVisible)</p><p><b> {</b></p><p&
55、gt; HANDLE handle=::GetStdHandle(STD_OUTPUT_HANDLE);</p><p> CONSOLE_CURSOR_INFO cci;</p><p> cci.bVisible=bVisible;</p><p> cci.dwSize=10;</p><p> ::SetConsoleCur
56、sorInfo(handle,&cci);</p><p><b> }</b></p><p> void ProcShow(procPCB *head,bool bVisible)</p><p><b> {</b></p><p> bool flag=true;</p
57、><p> procPCB *p=head;</p><p> Sleep(500);</p><p> SetCursorVisible(bVisible);</p><p> printf("進(jìn)程名 需要時間 運行時間 運行狀態(tài)\n");</p><p> while(h
58、ead!=p||flag)</p><p><b> {</b></p><p> flag=false;</p><p> printf("%-8s %-10d %-10d %-8s\n",p->name,p->requiredTime,p->runTime,p->status);<
59、;/p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> 運行結(jié)果</b></p><p><b> 設(shè)置進(jìn)程</b></p>
60、;<p> 設(shè)置CPU時間并運行</p><p><b> 實驗說明</b></p><p> 通過本次實驗,我對時間片輪轉(zhuǎn)的調(diào)度思想有了進(jìn)一步的了解,通過動手實現(xiàn)其調(diào)度算法,更加深刻的理解了時間片輪轉(zhuǎn)調(diào)度算法與其他幾種算法的不同和優(yōu)點。同時,在實驗過程中,回顧書本上的理論知識,鞏固了我的知識</p><p><b&g
61、t; 實驗報告題目</b></p><p><b> 內(nèi)存的分配和回收</b></p><p><b> 問題描述</b></p><p> 本實驗主要是模擬基于多道程序設(shè)計系統(tǒng)在可變分區(qū)式和分頁式兩種存儲管理方式下的主存分配和回收。在程序中采用鏈表方式來管理作業(yè)和頁表項,采用隊列來管理等待作業(yè)。在模擬
62、可變分區(qū)式存儲管理時,采用最先適應(yīng)算法實現(xiàn)主存的分配與回收,建立了已分配區(qū)表和未分配區(qū)表,等待隊列。在模擬分頁式存儲管理時,采用位示圖來表示主存,建立了作業(yè)表和頁表,在主存中的作業(yè)隊列和等待隊列。需要說明的是,我們沒有考慮系統(tǒng)可容納作業(yè)的道數(shù)和作業(yè)對除主存以外的其它資源的要求,認(rèn)為只要系統(tǒng)主存可以滿足要求作業(yè)就加載到主存。同時等待隊列是采用先進(jìn)先出的管理方式</p><p><b> 數(shù)據(jù)結(jié)構(gòu)和符號說
63、明</b></p><p> 可變分區(qū)式存儲管理的已分配區(qū)表和未分配區(qū)表的結(jié)構(gòu)用記錄描述如下:</p><p> /***全局變量*****/</p><p> int bitMap[N][N]={0};</p><p> int freeBlock=N*N;</p><p> /********
64、/</p><p><b> 建立頁表并初始化</b></p><p> *pt=(PageTable *)malloc(sizeof(PageTable)*p->pageCount);</p><p> PageTable *ptcopy=*pt;</p><p> for(int k=0;k<p-
65、>pageCount;k++)</p><p><b> {</b></p><p> (*pt+k)->pageNum=k;</p><p> (*pt+k)->blockNum=-1;</p><p><b> }</b></p><p> P
66、ageTable *pageTable[N*N]={NULL};//指向進(jìn)程頁表的指針數(shù)組</p><p> void ShowMenu()</p><p><b> {</b></p><p> printf("1.申請內(nèi)存\n");</p><p> printf("2.回收內(nèi)存
67、\n");</p><p> printf("3.顯示內(nèi)存\n");</p><p> printf("4.顯示頁表\n");</p><p> printf("5.退出\n");</p><p><b> } </b></p>
68、<p> 頁表的結(jié)構(gòu)用記錄描述:</p><p> //作業(yè)的頁表結(jié)構(gòu)體typedef struct{ int pagenum;//頁號 int blocknum;//塊號}PageTable;</p><p><b> 流程圖</b></p><p><b> 源程序及說明</b></p>
69、;<p><b> 內(nèi)存的分配</b></p><p> #include"Process.h"</p><p> #include"PageTable.h"</p><p> #include"MemoryManager.h"</p><p&
70、gt; #include"stdio.h"</p><p> #include"stdlib.h"</p><p> bool MemoryAllocation(Process* &p,PageTable **pt)</p><p><b> {</b></p><p&
71、gt; if(p->pageCount>freeBlock)</p><p><b> {</b></p><p> printf("內(nèi)存不足\n");</p><p> free(p);//釋放申請的進(jìn)程空間</p><p><b> p=NULL;</b>
72、;</p><p> return false;</p><p><b> }</b></p><p> //建立頁表并初始化</p><p> *pt=(PageTable *)malloc(sizeof(PageTable)*p->pageCount);</p><p> Pa
73、geTable *ptcopy=*pt;</p><p> for(int k=0;k<p->pageCount;k++)</p><p><b> {</b></p><p> (*pt+k)->pageNum=k;</p><p> (*pt+k)->blockNum=-1;</
74、p><p><b> }</b></p><p> for(int i=0;i<N;i++)</p><p><b> {</b></p><p> for(int j=0;j<N;j++)</p><p><b> {</b><
75、/p><p> if(ptcopy-*pt==p->pageCount)</p><p><b> {</b></p><p> return true;</p><p><b> }</b></p><p> if(bitMap[i][j]==0)</p&
76、gt;<p><b> {</b></p><p> bitMap[i][j]=1;</p><p> freeBlock--;</p><p> ptcopy->blockNum=i*8+j;</p><p><b> ptcopy++;</b></p>
77、<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 內(nèi)存的回收</b></p>
78、<p> #include"MemoryManager.h"</p><p> #include"PageTable.h"</p><p> #include"Process.h"</p><p> #include"stdio.h"</p><p&
79、gt; #include"stdlib.h"</p><p> void MemoryRecory(Process* &p,PageTable* &pt)</p><p><b> {</b></p><p><b> int x,y;</b></p><p&
80、gt; for(int i=0;i<p->pageCount;i++)</p><p><b> {</b></p><p> x=(pt+i)->blockNum/N;</p><p> y=(pt+i)->blockNum%N;</p><p> bitMap[x][y]=0;<
81、;/p><p> freeBlock++;</p><p><b> }</b></p><p><b> free(p);</b></p><p><b> p=NULL;</b></p><p><b> free(pt);<
82、;/b></p><p><b> pt=NULL;</b></p><p><b> }</b></p><p><b> 3、主程序調(diào)用</b></p><p> #include"Process.h"</p><p&g
83、t; #include"stdio.h"</p><p> #include"MemoryAllocation.h"</p><p> #include"MemoryRecory.h"</p><p> #include"ShowBitMap.h"</p><
84、p> #include"stdlib.h"</p><p> #include"string.h"</p><p> #include"windows.h"</p><p> #define N 8</p><p> /***全局變量*****/</p>
85、<p> int bitMap[N][N]={0};</p><p> int freeBlock=N*N;</p><p> /********/</p><p> PageTable *pageTable[N*N]={NULL};//指向進(jìn)程頁表的指針數(shù)組</p><p> Process *process[N*N]
86、={NULL};</p><p> int processCount=0;</p><p> int index=0;</p><p> int NextIndex()</p><p><b> {</b></p><p> for(int i=0;i<processCount;i
87、++)</p><p><b> {</b></p><p> if(process[i]==NULL)</p><p><b> return i;</b></p><p><b> }</b></p><p><b> retur
88、n i;</b></p><p><b> }</b></p><p> void InitProcess(Process* &p)</p><p><b> {</b></p><p> p=(Process *)malloc(sizeof(Process));<
89、/p><p> printf("請輸入:\n進(jìn)程名 進(jìn)程分頁數(shù)\n");</p><p> scanf("%s%d",p->name,&p->pageCount);</p><p><b> }</b></p><p> bool IsProcessEm
90、pty()</p><p><b> {</b></p><p> if(processCount==0)</p><p><b> {</b></p><p> printf("當(dāng)前沒有進(jìn)程運行\(zhòng)n");</p><p> return tru
91、e;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p> int SearchProcess()</p><p><b> {</b></p>
92、<p> if(IsProcessEmpty())</p><p> return -1;</p><p> char processName[10];</p><p> printf("請輸入進(jìn)程名:\n");</p><p> scanf("%s",processName);&
93、lt;/p><p> for(int i=0;i<N*N;i++)</p><p><b> {</b></p><p> if(process[i]!=NULL&&strcmp(processName,process[i]->name)==0)</p><p><b> ret
94、urn i;</b></p><p><b> }</b></p><p> printf("沒有名為%s的進(jìn)程\n",processName);</p><p> return -1;</p><p><b> }</b></p><p&
95、gt; void ShowPageTable()</p><p><b> {</b></p><p> int tempCount;</p><p> if(IsProcessEmpty())</p><p><b> return;</b></p><p>
96、for(int i=0;i<N*N;i++)</p><p><b> {</b></p><p> if(process[i]!=NULL)</p><p><b> {</b></p><p> tempCount++;</p><p> printf(&
97、quot;進(jìn)程名:%s,頁面數(shù):%d\n",process[i]->name,process[i]->pageCount);</p><p> printf("頁號:");</p><p> for(int j=0;j<(*(process+i))->pageCount;j++)</p><p> prin
98、tf("%d ",(pageTable[i]+j)->pageNum);</p><p> printf("\n塊號:");</p><p> for(j=0;j<process[i]->pageCount;j++)</p><p> printf("%d ",(pageTable[
99、i]+j)->blockNum);</p><p> printf("\n");</p><p><b> }</b></p><p> if(tempCount==processCount)</p><p><b> return;</b></p>
100、<p><b> }</b></p><p><b> }</b></p><p> void ShowMenu()</p><p><b> {</b></p><p> printf("1.申請內(nèi)存\n");</p>&
101、lt;p> printf("2.回收內(nèi)存\n");</p><p> printf("3.顯示內(nèi)存\n");</p><p> printf("4.顯示頁表\n");</p><p> printf("5.退出\n");</p><p><b&
102、gt; }</b></p><p> void main()</p><p><b> {</b></p><p> int select;</p><p> while(true)</p><p><b> {</b></p><
103、p> ShowMenu();</p><p> scanf("%d",&select);</p><p> switch(select)</p><p><b> {</b></p><p><b> case 1:</b></p><
104、;p> InitProcess(process[index]);</p><p> if(MemoryAllocation(process[index],&pageTable[index]))</p><p> processCount++;</p><p> index=NextIndex();</p><p><
105、;b> break;</b></p><p><b> case 2:</b></p><p> index=SearchProcess();</p><p> if(index==-1)</p><p><b> break;</b></p><p&
106、gt; MemoryRecory(process[index],pageTable[index]);</p><p> processCount--;</p><p> index=NextIndex();</p><p><b> break;</b></p><p><b> case 3:<
107、;/b></p><p> ShowBitMap();</p><p><b> break;</b></p><p><b> case 4:</b></p><p> ShowPageTable();</p><p><b> break;<
108、;/b></p><p><b> case 5:</b></p><p><b> exit(0);</b></p><p><b> break;</b></p><p><b> default:</b></p><
109、p> printf("請輸入正確編號:\n");</p><p><b> }</b></p><p><b> }</b></p><p> //ShowBitMap();</p><p><b> }</b></p><
110、;p><b> //</b></p><p><b> 運行結(jié)果</b></p><p><b> 1、運行主界面</b></p><p> 2、申請內(nèi)存p1并顯示內(nèi)存</p><p><b> 3、再申請內(nèi)存p2</b></p>
111、;<p><b> 4、顯示頁表</b></p><p> 5、回收內(nèi)存p1再顯示內(nèi)存</p><p><b> 實驗說明</b></p><p> 在清楚主存儲器分配和回收的情況下,做些實驗還是比較簡單的。關(guān)鍵是注意當(dāng)找到一個大的塊時,如何將這個大塊分成兩小塊,一塊用于分配,另一塊依舊是未分配。希望
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計——操作系統(tǒng)課程設(shè)計模擬操作系統(tǒng)
- 操作系統(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è)計報告
評論
0/150
提交評論