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

正文內(nèi)容

最新基于c語(yǔ)言的小型模擬操作系統(tǒng)設(shè)計(jì)-文庫(kù)吧資料

2025-06-28 07:39本頁(yè)面
  

【正文】 61 (d)。這時(shí)ready指向原來(lái)的第二個(gè)結(jié)點(diǎn)。如此一次一次地使p1后移,直到找到所要?jiǎng)h除的結(jié)點(diǎn)或檢查完全部鏈表都找不到要?jiǎng)h除的結(jié)點(diǎn)為止??梢栽O(shè)兩個(gè)指針變量p1和p2,先使p1指向第一個(gè)結(jié)點(diǎn)(圖 361(a) )。return true。 } printf(*****************************************************************************\n)。 ready = ready next。 run state = 39。 tail = run。 } } else { if(ready != NULL) { runstate = 39。 run = NULL。 } runstate = 39。 if(run != tail) { tailnext = ready。 runnext = finish。 runcount++。 runneedtime = runneedtime timeSlice。 prt()。 runstate=39。 ready=readynext。 printf(*****************************************************************************\n)。timeSlice)。 } printf( 請(qǐng)輸入時(shí)間片的大小: )。 if(processCount1) { printf(當(dāng)前程序無(wú)進(jìn)程,請(qǐng)重新輸入!\n\n)。q!=NULLq=qnext。q!=runqnext== runq = qnext。q!=NULLamp。 finish = run。結(jié)束runneedtime= 0runneedtime = 0。 ready = ready next。 run state = 39。tail = run。runstate = 39。R39。ready!= NULLrun=ready。 run = NULL。runstate = 39。run != tailtailnext = ready。runround+=timeSlice。run != NULLruncputime=runcputime+timeSlice。R39。tailnext =run。 流程圖ready!= NULL開始run=ready。另外,再設(shè)一個(gè)當(dāng)前運(yùn)行進(jìn)程的指針,指向當(dāng)前正在運(yùn)行的進(jìn)程。再設(shè)一個(gè)隊(duì)首指針指向第一個(gè)到達(dá)進(jìn)程的首址。 算法工作安排(1) 用戶可以自行輸入進(jìn)程的數(shù)量,每一個(gè)進(jìn)程由進(jìn)程控制塊( PCB)表示,各種隊(duì)列均采用鏈表數(shù)據(jù)結(jié)構(gòu)。同時(shí),進(jìn)程調(diào)度又去選擇就緒隊(duì)列中的隊(duì)首進(jìn)程,分配給它一時(shí)間片,以投入運(yùn)行。即將CPU的處理時(shí)間劃分成一個(gè)個(gè)相同的時(shí)間片,就緒隊(duì)列的諸進(jìn)程輪流運(yùn)行一個(gè)時(shí)間片。)。 putchar(39。 } printf(***輸出結(jié)束***\n)。 j++) { printf(| %2d | %2d |\n,count,process[id][j],count++)。 for (int j=1,count=0。 printf(| 頁(yè)號(hào)| 塊號(hào)|\n)。 printf(進(jìn)程號(hào): %d \n, id)。 printf(內(nèi)存詳細(xì)使用情況如下:\n)。 scanf(%d,amp。 } if (processCount 0) { int id。\n39。 count = 0。\n39。 k++) { if (block[k] == 1) printf(%2d , k, ++count)。 for (int k=0,count=0。amp。j++falsetruetruefalse輸入要查看的進(jìn)程:id輸出:內(nèi)存無(wú)進(jìn)程!false圖 342 查看內(nèi)存流程圖void output(){ printf(\n內(nèi)存總量:%d 塊, 已用空間:%d 塊, 剩余空間:%d 塊, 進(jìn)程總數(shù):%d 個(gè)\n, N, NblockCount, blockCount, processCount)。printf(||\n)。輸出 頁(yè)號(hào):count 塊號(hào):process[id][j]count++;printf(||\n)。內(nèi)存輸出函數(shù)output()主要功能是輸出內(nèi)存初始化下的內(nèi)存占用信息以及在系統(tǒng)執(zhí)行撤銷進(jìn)程函數(shù)endProcess()后輸出內(nèi)存占用情況。在進(jìn)程地址空間內(nèi)的所有頁(yè)(0~n),依次在頁(yè)表中有一頁(yè)表項(xiàng),其中記錄了相應(yīng)頁(yè)在內(nèi)存中對(duì)應(yīng)的物理塊號(hào),見圖341。} 測(cè)試結(jié)果圖 335 查看內(nèi)存 頁(yè)表在分頁(yè)系統(tǒng)中,允許將進(jìn)程的各個(gè)頁(yè)離散的存儲(chǔ)在內(nèi)存的不同物理塊中,但系統(tǒng)應(yīng)能保證進(jìn)程的正確運(yùn)行,即能在內(nèi)存中找到每個(gè)頁(yè)面對(duì)應(yīng)的物理塊。 printf(創(chuàng)建新進(jìn)程成功!\n\n)。 tail=ready。 else { pnext=ready。 pcount =0。W39。 pneedtime=time。 ppid=na。 } p=(PCB *)malloc(sizeof(PCB))。 block[k] = 1。 k100) k++。 i++) { while (block[k]==1 amp。 for (int i=1。 } blockCount = pages。 } if (pages blockCount) { printf(錯(cuò)誤!內(nèi)存分配失敗,沒有你要求的進(jìn)程塊數(shù)!\n)。 } } if (na 99) { printf(錯(cuò)誤!進(jìn)程號(hào)過(guò)大!\n)。k++) { if(a[k]==a[k+1]) { printf(進(jìn)程號(hào)輸入重復(fù),請(qǐng)重新輸入!\n\n)。 for(int k=0。pages)。na, amp。j++) { loop:printf(請(qǐng)輸入進(jìn)程號(hào)(小于%d)和運(yùn)行時(shí)間和所需頁(yè)面數(shù):, N)。 for(int j=0。M)。 printf( 輸入進(jìn)程數(shù):)。 finish=NULL。 //char na[10]。 PCB *p。truefalse開始結(jié)束圖 333 創(chuàng)建進(jìn)程流程圖 主要代碼bool createProcess(){ int na。i++。block[k] = 1。process[na][0] = pages。pcount =0。W39。 pneedtime=time。ppid=na。 ready=p。tail=tailnext。 PCB1PCB2PCB3PCB6PCB7PCB9PCB8PCB5PCB4...43087901運(yùn)行指針就緒隊(duì)列指針完成隊(duì)列指針圖 332 PCB鏈接隊(duì)列示意圖輸入進(jìn)程數(shù):Mj=0JM輸入進(jìn)程號(hào):na運(yùn)行時(shí)間:time 頁(yè)面數(shù):pagesp=(PCB *)malloc(sizeof(PCB))?,F(xiàn)做如下定義。 進(jìn)程隊(duì)列的描述進(jìn)程隊(duì)列包括就緒隊(duì)列、運(yùn)行隊(duì)列和完成隊(duì)列,指向進(jìn)程隊(duì)列的指針有就緒頭隊(duì)列指針ready、運(yùn)行隊(duì)列頭指針run、完成隊(duì)列頭指針finish以及隊(duì)列尾指針tail。 struct node *next。 int count。 int needtime。typedef struct node{ int pid。} 測(cè)試結(jié)果圖 322 創(chuàng)建進(jìn)程 進(jìn)程結(jié)構(gòu)PCB的描述每個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊(PCB)表示。 output()。 } processCount = 0。 jN。 i++){ process[i][0] = 0。 for (i=0。 iN。 blockCount = 0。 i80。 i++) block[i] = 0。 for (i=0。用一個(gè)內(nèi)存狀態(tài)標(biāo)志數(shù)組來(lái)記錄內(nèi)存的占用情況。假定內(nèi)存空間已經(jīng)按塊劃分,目標(biāo)程序無(wú)需關(guān)心內(nèi)存塊大小等底層細(xì)節(jié),只需按算法對(duì)內(nèi)存塊進(jìn)行分配即可。PCB *finish,*ready,*tail,*run。 struct node *next。 int count。 int needtime。typedef struct node{ int pid。 // 記錄當(dāng)前進(jìn)程數(shù)bool flag = true。 // 內(nèi)存塊狀態(tài)標(biāo)志數(shù)組,0:空閑,1:使用int blockCount。 創(chuàng)建進(jìn)程查看內(nèi)存 主函數(shù) 初始化 菜 單撤銷進(jìn)程運(yùn)行進(jìn)程圖 23 總體設(shè)計(jì)模塊3 系統(tǒng)詳細(xì)設(shè)計(jì) 全局變量系統(tǒng)代碼中定義的一些全局變量define N 100 // 共有100個(gè)內(nèi)存塊int process[N][N+1]。結(jié)束進(jìn)程并釋放其占用的內(nèi)存空間。采用時(shí)間片輪轉(zhuǎn)調(diào)度算法調(diào)度進(jìn)程運(yùn)行。查看內(nèi)存的分配情況。創(chuàng)建并初始化進(jìn)程控制塊以及分配內(nèi)存空間。調(diào)用創(chuàng)建進(jìn)程、查看內(nèi)存、運(yùn)行進(jìn)程、撤銷進(jìn)程代碼塊。初始化內(nèi)存數(shù)組。調(diào)用初始化代碼塊和菜單代碼塊。(2) 回收的PCB在完成隊(duì)列。 回收內(nèi)存當(dāng)進(jìn)程運(yùn)行完釋放內(nèi)存時(shí),系統(tǒng)根據(jù)用戶的要求從相應(yīng)的鏈表上摘下,然后釋放內(nèi)存數(shù)組的數(shù)據(jù),此時(shí)可能出現(xiàn)兩種情況。(2) 為進(jìn)程分配用戶提出請(qǐng)求的頁(yè)數(shù)。采用二維數(shù)組模擬基本分頁(yè)存儲(chǔ)。 存儲(chǔ)管理要求 內(nèi)存分配由于本系統(tǒng)采用的內(nèi)存分配策略是基本分頁(yè)存儲(chǔ)管理方式,又稱為離散分配方式。(2) 釋放進(jìn)程所占內(nèi)存。(4) 否則將這一進(jìn)程插入到就緒隊(duì)列隊(duì)尾,等待下一次調(diào)度。(2) 修改PCB中的信息。 進(jìn)程調(diào)度進(jìn)程調(diào)度采用時(shí)間片輪轉(zhuǎn)調(diào)度算法,時(shí)間片大小由用戶自己定義。(3) 初始化PCB中的內(nèi)容。(1) 申請(qǐng)一個(gè)空白的PCB。把具有同一狀態(tài)的進(jìn)程控制塊鏈接成一個(gè)隊(duì)列,這樣就形成了就緒狀態(tài)、運(yùn)行狀態(tài)和完成
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1