freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

最新基于c語言的小型模擬操作系統(tǒng)設計-預覽頁

2025-07-16 07:39 上一頁面

下一頁面
 

【正文】 (7) 結束進程代碼塊。 // 存放每個進程的頁表int block[N]。int M。 int cputime。}PCB。采用二維數(shù)組321來模擬進程使用內存塊情況。 iN。 i++) block[rand()%(N1)] = 1。 i++) if (block[i] == 0) blockCount++。 for (j=1。 printf(初始化結果如下:)。進程控制塊包含如下信息:進程名、輪數(shù)、需要運行時間、已用CPU時間、進程狀態(tài)、指針。 int cputime。}PCB。PCB *finish,*ready,*tail,*run。pnext=ready。pcputime=0。 pround =0。i=1i=pagesprocess[na][i] = k。falsetrueetruefalsej++。 int time。 run=NULL。 int a[N]。 scanf(%d%d%d, amp。 a[j]=na。 goto loop。 return false。 i=pages。 process[na][i] = k。 //strcpy(ppid,pid)。 pstate=39。 if(ready!=NULL) insert(p)。 } processCount++。為此,系統(tǒng)又為每個進程建立了一張頁面映像表,簡稱頁表。0123452368911......頁號塊號頁表圖341 頁表 流程圖開始processCount 0process[id][0] 0j=process[id][0]。結束j=1,count=0。 blockCount N) { printf(已使用的內存塊(%d):\n, NblockCount)。 if (count == 10) { putchar(39。 } } putchar(39。 printf(請輸入要查看的進程號: )。 if (process[id][0] 0) { printf(**************\n)。 printf(||\n)。 printf(||\n)。\n39。當一個時間片結束時,如果運行進程用完它的時間片后還未完成,就強迫運行機制進程讓出CPU,就把它送回到就緒隊列的末尾,等待下一次調度。(2) 按照進程輸入的先后順序排成一個隊列。(4) 在規(guī)定的時間片內進程是根據(jù)先來先服務的方式配列的,每個進程只運行時間片大小的時間然后轉到下一個進程運行,直到所有進程運行完為止。runstate=39。runneedtime=runneedtimetimeSlice。ready = NULL。 run = NULL。ready=readynext。run = ready。調用輸出函數(shù):prt()。falsetruefalsefalsetruetrue輸入時間片:timeSlice圖 353(a)進程運行流程圖開始run!=NULLq=ready。q=finish。 return 0。 printf( 時間片輪轉法輸出信息\n)。 tailnext =run。 while(run != NULL) { runcputime = runcputime + timeSlice。 if(runneedtime = 0) { runneedtime = 0。 } else { ready = NULL。 if(ready != NULL) { firstin()。 run = ready。 } } prt()。} 測試結果圖 452 撤銷進程 結束進程控制塊當用戶提出結束進程命令,系統(tǒng)依次用指針搜索就緒隊列和完成隊列,如果找到要結束的的進程控制塊就將其刪去,這里的刪去并不是真正的從內存中把它抹掉,而是把它從鏈表中分離出來,只要撤銷原來的鏈接關系即可。如果找到某一節(jié)點是要刪除的節(jié)點,還要區(qū)分兩種情況: (1)要刪除的是第一個結點(p1的值等于ready的值,如圖361(a) 那樣),則應將p1next賦給ready,見圖361 (c)。123readyp1(a)NULL123readyp2p1NULL(b)123NULL(c)readyp1123NULL(d)readyp1p2圖 351 回收內存數(shù)組在模擬回收內存的算法中主要采用的是數(shù)組形式和一些計數(shù)的變量,所以在回收內存數(shù)組中并沒有真正的回收內存,而是通過改變其中的變量模擬回收的過程。 流程圖開始輸入結束進程號:IDp1=ready||finishID!=p1pidamp。 p1=p1next。輸出:已經(jīng)刪除進程結束輸出:結束進程不存在falsefalsetruetruefalsefalsetruefalsetrue圖 363 撤銷進程流程圖 主要代碼bool endProcess(){ int ID, pages。 for (int i=0。\n39。ID)。p1next!=NULL) { p2=p1。 printf(已刪除進程%d \n,ID)。p1next!=NULL) { p2=p1。 printf(已刪除進程%d \n,ID)。 for (int j=1。 } process[ID][0] = 0。} 測試結果圖 3654 問題與總結在模擬進程管理和存儲管理的模擬操作系統(tǒng)設計中,處于核心的問題是如何實現(xiàn)時間片輪轉調度算法和基本分頁存儲算法。在這次設計中,主要遇到了以下一些問題:(1) 內存使用情況應該以哪種形式輸出以及輸出哪些信息。為了達到這種效果,使用了一個全局變量作為判斷依據(jù),詳細情況見附錄中代碼。 總體而言,這次設計還是比較順利的,沒有遇到什么特別難解決的問題。 // 內存塊狀態(tài)標志數(shù)組,0:空閑,1:使用int blockCount。typedef struct node{ int pid。 int count。PCB *finish,*ready,*tail,*run。//bool endProcess()。 i++) block[i] = 0。 blockCount = 0。 // 初始化存放進程的數(shù)組 for (i=0。 jN。 output()。amp。 k++) { if (block[k] == 1) printf(%2d , k, ++count)。 count = 0。 } // 輸出各進程占用內存詳細情況 if (processCount 0) { int id。 //if(id==ID) //break。 i++) //{ if (process[id][0] 0) { printf(**************\n)。 printf(||\n)。 printf(||\n)。)。 // putchar(39。 putchar(39。 runstate=39。}void prt(){ PCB *q。 while(q!=NULLamp。 else q = qnext。 } getchar()。 int pages, k = 0。 ready=NULL。 scanf(%d,amp。jM。time,amp。kj。 goto loop。 process[na][0] = pages。amp。 k++。 pcputime=0。 pround =0。 ready=p。 } return true。 } printf( 請輸入時間片的大小: )。 printf( 時間片輪轉法輸出信息\n)。 tailnext =run。 while(run != NULL) { runcputime = runcputime + timeSlice。 if(runneedtime = 0) { runneedtime = 0。 } else { ready = NULL。 if(ready != NULL) { firstin()。 run = ready。 } } prt()。}結束進程模塊代碼:bool endProcess(){ int ID, pages。 for (int i=0。\n39。ID)。p1next!=NULL) { p2=p1。 printf(已刪除進程%d \n,ID)。p1next!=NULL) { p2=p1。 printf(已刪除進程%d \n,ID)。/* if (pages == 0) { printf(對不起!該進程不存在!\n)。 j++) { block[process[ID][j]] = 0。 blockCount+= pages。 printf( 1 創(chuàng)建進程\n 2 查看內存\n 3 運行程序\n 4 撤銷進程\n 0 退出程序\n)。 switch (choice) { case 1: if (createProcess()) //else // printf(抱歉!內存空間不足,創(chuàng)建新進程失??!\n\n)。 case 3: Roundrun()。 break。 menu()。如果有問題希望下次還能有機會找
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1