版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、下載可編輯理工學(xué)院操作系統(tǒng)課程設(shè)計(jì)報(bào)告學(xué)院:計(jì)算機(jī)學(xué)院專業(yè)班級:13軟件工程1班學(xué)號評價(jià)提交時(shí)間:2015/9/14指導(dǎo)教師評閱意見:.項(xiàng)目名稱 :進(jìn)程與線程管理功能一、設(shè)計(jì)目的用語言來模擬進(jìn)程和線程管理系統(tǒng), 加深對進(jìn)程和線程的理解, 掌握對進(jìn)程和線程各種狀態(tài)和管理的算法原理。二、環(huán)境條件.專業(yè) .整理 .下載可編輯系統(tǒng): WindowsXP、 VMWare、 Ubuntu Linux語言: C/C+開發(fā)工具: gcc/g+ 、 Visual C+ 6.0三、設(shè)計(jì)容1. 項(xiàng)目背景計(jì)算機(jī)的硬件資源有限, 為了提高存的利用率和系統(tǒng)的吞吐量, 就要根據(jù)某種算法來管理進(jìn)程和線程的狀態(tài)從而達(dá)到目的。進(jìn)
2、程與線程管理功能完成基于優(yōu)先級的搶占式線程調(diào)度功能,完成進(jìn)程虛擬存管理功能。進(jìn)程與線程管理功能基本要求:完成基于優(yōu)先級的搶占式線程調(diào)度功能, 完成進(jìn)程虛擬存管理功能。提高要求:(增加 1 項(xiàng)就予以加分)(1) 實(shí)現(xiàn)多種線程調(diào)度算法;(2) 通過“公共信箱”進(jìn)行通信的機(jī)制,規(guī)定每一封信的大小為 128 字節(jié),實(shí)現(xiàn)兩個用戶進(jìn)程之間通過這個“公共信箱” 進(jìn)行通信。(3) 實(shí)現(xiàn)多用戶進(jìn)程并發(fā)的虛擬存管理功能。(4)實(shí)現(xiàn)用戶進(jìn)程間通信功能,并用生產(chǎn)者/ 消費(fèi)者問題測試進(jìn)程間通信功能的正確性。(5) 實(shí)現(xiàn)改進(jìn)型 Clock 頁面置換算法。(6) 實(shí)現(xiàn) Cache 功能,采用 FIFO 替換算法。.專業(yè) .
3、整理 .下載可編輯2.擴(kuò)展容實(shí)現(xiàn)多種線程調(diào)度算法: 時(shí)間片輪轉(zhuǎn)調(diào)度算法四、人員分工優(yōu)先級調(diào)度算法:鐘德新,莫友芝時(shí)間片輪轉(zhuǎn)調(diào)度算法:德華,袁馬龍?jiān)O(shè)計(jì)報(bào)告由小組隊(duì)員共同完成。小組成員設(shè)計(jì)的代碼分工如下:鐘德新編寫的代碼 : void Prinft()PCB *p;system(cls);/清屏p=run;/ 運(yùn)行隊(duì)列if(p!=NULL)p-next=NULL;cout 當(dāng)前正在運(yùn)行的進(jìn)程: endl;cout 進(jìn)程名稱 t優(yōu)先數(shù) t還需要時(shí)間 t已運(yùn)行時(shí)間 t狀態(tài):endl;while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatene
4、xt;coutendlendl;cout 當(dāng)前的就緒隊(duì)列:endl; cout進(jìn)程名稱 t優(yōu)先數(shù) t還需要時(shí)間 t已運(yùn)行時(shí)間t狀態(tài) :endl;p=ready;/ 就緒隊(duì)列while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;coutendlendl;cout 當(dāng)前已經(jīng)完成的進(jìn)程:endl;/ 終止隊(duì)列cout 進(jìn)程名稱 t優(yōu)先數(shù) t還需要時(shí)間 t已運(yùn)行時(shí)間 t狀態(tài):endl;p=finish;while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;這個
5、函數(shù)是優(yōu)先級調(diào)度算法程序的界面函數(shù),主要為程序運(yùn)行時(shí)能夠直觀的顯示結(jié)果void insert(PCB *p)PCB *S1,*S2;if(ready=NULL)/ 判斷隊(duì)列是否為空p-next = NULL;ready = p;/ 插入就緒隊(duì)列elseS1 = ready;S2 = S1;while(S1!=NULL)if(S1-pri = p-pri)/ 判斷優(yōu)先級大小S2 = S1;/ 置換位置S1 = S1-next;elsebreak;/ 跳出循環(huán)if(S2-pri = p-pri)S2-next = p;p-next = S1;elsep-next = ready;ready = p
6、;這是程序優(yōu)先級排序的函數(shù), 也是優(yōu)先級調(diào)度算法的核心思想函數(shù), 對程序的優(yōu)先級通過指針進(jìn)行排序, 再將隊(duì)首的程序調(diào)入運(yùn)行隊(duì)列, 通過置換的方法, 將運(yùn)行隊(duì)列隊(duì)首即占用 CPU的程序調(diào)入就緒隊(duì)列,如此循環(huán)直至所有程序終止為止。莫友芝編寫的代碼: void priority()run = ready;ready = ready-next;.專業(yè) .整理 .下載可編輯run-state = 運(yùn)行 ;while(run!=NULL) /*當(dāng)運(yùn)行隊(duì)列不空時(shí),有進(jìn)程正在運(yùn)行*/Dtime(3);/調(diào)用延時(shí)函數(shù),延時(shí)3 秒run-runtime=run-runtime+1;/ 運(yùn)行時(shí)間 +1run-nee
7、dOftime=run-needOftime-1;/ 完成需要時(shí)間 -1run-pri=run-pri-1; /*/ 優(yōu)先級 -1 每運(yùn)行一次優(yōu)先數(shù)降低1 個單位 */if(run-needOftime=0) /*如所需時(shí)間為0 將其插入完成隊(duì)列*/run-state = 完成 ;run-next = finish;finish = run;run=NULL; /*運(yùn)行隊(duì)列頭指針為空*/if(ready!=NULL) /*如就緒隊(duì)列不空*/run = ready;run-state = 運(yùn)行 ;ready = ready-next;else if(ready!=NULL)&(run-pri p
8、ri)/ 就緒隊(duì)列不為空,就緒隊(duì)列隊(duì)首優(yōu)先級大于運(yùn)行隊(duì)列隊(duì)首run-state=就緒 ;insert(run);/ 運(yùn)行中的進(jìn)程重新比較優(yōu)先級大小run = ready;/ 對隊(duì)列隊(duì)首的進(jìn)程調(diào)入CPUrun-state = 運(yùn)行 ;ready = ready-next;Prinft(); /*輸出進(jìn)程 PCB信息 */這是程序運(yùn)行時(shí)的實(shí)時(shí)程序, 通過循環(huán)的方法在程序等候 3 秒后,調(diào)用德新設(shè)計(jì)的優(yōu)先級排序算法,進(jìn)行排序。void CTProcessOfPri()/創(chuàng)建進(jìn)程PCB * Node;string c5=P1,P2,P3,P4,P5;/ 模擬設(shè)計(jì) 5 條進(jìn)程srand(int)time
9、(0);/ 設(shè)置隨機(jī)種子for(int j = 0;j procname=cj;/ 為進(jìn)程名賦值Node-needOftime=1+(int)(15.0*rand()/(RAND_MAX+1.0);/為進(jìn)程隨機(jī)分配占用CPU時(shí)間 .Node-runtime = 0;/ 為運(yùn)行時(shí)間賦值Node-state =就緒 ;/ 設(shè)置初始狀態(tài)為“就緒”狀態(tài)Node-pri =1+(int)(20.0*rand()/(RAND_MAX+1.0);/ 為進(jìn)程隨機(jī)分配優(yōu)先數(shù).insert(Node);/ 出入就行隊(duì)列隨機(jī)創(chuàng)建 5 個模擬程序,為其賦上初值后,調(diào)用優(yōu)先級排序函數(shù),進(jìn)行第一次排序德華編寫的程序代碼:
10、void insert(PCB *p)/ 時(shí)間片插入函數(shù)if(start-next=NULL)PCB *q=start;if(p-Arrive_timeArrive_time)start=p;p-next=q;q-next=NULL;end=q;elseq-next=p;p-next=NULL;end=p;elsePCB *q=start;PCB *s=start-next;while(s!=NULL)if(q-Arrive_time p-Arrive_time)p-next=q;start=p;return;elseif(s-Arrive_time p-Arrive_time)q-next=
11、p;p-next=s;return;elseq=q-next;s=s-next;.專業(yè) .整理 .下載可編輯s-next=p;end=p;這個是時(shí)間片插入函數(shù),也是輪轉(zhuǎn)調(diào)度模擬程序的核心函數(shù),首先對到達(dá)時(shí)間進(jìn)行排序,將隊(duì)首調(diào)入CPU后,運(yùn)行時(shí)間片的時(shí)間后,調(diào)入就緒隊(duì)列隊(duì)尾,等候下一次的資源.void firstin()/ 將就緒隊(duì)列的第一個進(jìn)程放入運(yùn)行隊(duì)列run=start;run-State=W;/ 改變其狀態(tài)start=start-next;模擬占用CPU的函數(shù)void show(PCB *p)/ 輸出函數(shù)cout 進(jìn)程名 t到達(dá)時(shí)間 t剩余時(shí)間 t狀態(tài) n;/if(run!=NULL)/
12、 如果運(yùn)行指針不為空, 就輸出當(dāng)前正在運(yùn)行的進(jìn)程的PCBcoutnametArrive_timettNeed_timettStatenn;這是一個程序初始值的輸出函數(shù),驗(yàn)證輸入的各程序的初始值是否是預(yù)期輸入袁馬龍編寫的代碼: void create()/ 時(shí)間片算法創(chuàng)建進(jìn)程函數(shù)coutN;PCB *p;int Time_piece;start=NULL;/ 就緒隊(duì)列頭指針finish=NULL;/ 完成隊(duì)列頭指針run=NULL;/ 運(yùn)行隊(duì)列指針coutTime_piece;for(int i=1;i=N;i+)/ 輸入進(jìn)程名字和所需時(shí)間, 創(chuàng)建進(jìn)程的PCBp=(PCB *)malloc(si
13、zeof(PCB);cout 請輸入第 ip-name;coutp-Need_time;.專業(yè) .整理 .下載可編輯coutp-Arrive_time;Cpu_time=0;p-Count=0;/ 計(jì)數(shù)器p-State=W;/ 進(jìn)程的初始狀態(tài)設(shè)為就緒Wp-Time_piece=Time_piece;/ 時(shí)間片的初始值if(start!=NULL)insert(p);/ 若就緒隊(duì)列不為空, 將其插入就緒隊(duì)列else/ 創(chuàng)建就緒隊(duì)列的第一個PCBp-next=start;start=p;/ 頭指針end=p;/ 尾指針coutendlendlt使用時(shí)間片輪轉(zhuǎn)算法輸出結(jié)果:(W 為就緒狀態(tài), F 為
14、終止?fàn)顟B(tài) )n;coutnext;run-State=W;這是一個設(shè)置程序運(yùn)行初始的條件函數(shù), 如需要運(yùn)行的程序數(shù)目, 程序名稱, 運(yùn)行時(shí)間等,在調(diào)用德華設(shè)計(jì)的排序函數(shù)進(jìn)行排序,調(diào)入隊(duì)列中void roundrobin()/ 時(shí)間片算法函數(shù)int m=0;while(run!=NULL)if(run-Arrive_timeCpu_time)Cpu_time=Cpu_time+1;/ 每運(yùn)行一次cputime 加一elseif(m=0)cout進(jìn)程nameNeed_time=run-Need_time-1;/ 每運(yùn)行一次needtime 減一if(run-Need_time!=0)show(ru
15、n);Cpu_time=Cpu_time+1;/ 每運(yùn)行一次cputime 加一run-Count=run-Count+1;/ 每運(yùn)行一次計(jì)數(shù)器count 加一if(run-Need_time=0)/ 若運(yùn)行完后run-next=finish;finish=run;/ 將其插入完成隊(duì)列頭部run-State=F;/ 將其狀態(tài)改為完成態(tài)Fshow(run);cout進(jìn)程name結(jié)束.專業(yè) .整理 .下載可編輯nn;run=NULL;/ 將運(yùn)行隊(duì)列清空if(start!=NULL) firstin();/ 若就緒對列不空,將第一個進(jìn)程投入運(yùn)行cout進(jìn)程nameCount=run-Time_pie
16、ce)/ 如果時(shí)間片到run-Count=0;/ 計(jì)數(shù)器置 0if(start!=NULL)/ 若就緒隊(duì)列不空run-State=W;insert2(run);/ 將進(jìn)程插入到就緒隊(duì)列中等待輪轉(zhuǎn)firstin();/ 將就緒隊(duì)列的第一個進(jìn)程投入運(yùn)行cout進(jìn)程name開始nn;cout*n;這是一個程序運(yùn)行結(jié)果的輸出函數(shù), 輸出程序的結(jié)果容, 在什么時(shí)間段完成, 什么時(shí)間段到達(dá),以及程序的狀態(tài)等信息五、設(shè)計(jì)過程進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單位。另有一種定義方法是“程序在處理器上的執(zhí)行” 。為了模擬的方便,本設(shè)計(jì)采用這種定義。簡單地說,進(jìn)程包括三種狀態(tài):運(yùn)行狀態(tài)、就
17、緒狀態(tài)、完成狀態(tài)優(yōu)先級調(diào)度算法:按照進(jìn)程的優(yōu)先級大小來調(diào)度,是高優(yōu)先級進(jìn)程得到優(yōu)先的處理的調(diào)度策略,可使用非搶占或可搶占兩種策略用 C+模擬設(shè)計(jì)一個進(jìn)程模擬類class PCBpublic:string procname;/進(jìn)程名int pri;/進(jìn)程優(yōu)先數(shù)string state;/進(jìn)程狀態(tài)int runtime;/進(jìn)程已運(yùn)行CPU時(shí)間int needOftime;/還需要時(shí)間PCB *next;/指針;來記錄進(jìn)程的基本信息,如進(jìn)程名稱,優(yōu)先級,進(jìn)程狀態(tài),進(jìn)程運(yùn)行時(shí)間,進(jìn)程所需時(shí)間再設(shè)計(jì)模擬進(jìn)程所需要的各種算法,運(yùn)行調(diào)試結(jié)果.專業(yè) .整理 .下載可編輯時(shí)間片輪轉(zhuǎn)調(diào)度算法: 是一種最古老,最簡
18、單,最公平且使用最廣的算法。每個進(jìn)程被分配一時(shí)間段,稱作它的時(shí)間片,即該進(jìn)程允許運(yùn)行的時(shí)間. 如果在時(shí)間片結(jié)束時(shí)進(jìn)程還在運(yùn)行,則CPU將被剝奪并分配給另一個進(jìn)程。如果進(jìn)程在時(shí)間片結(jié)束前阻塞或結(jié)束,則CPU當(dāng)即進(jìn)行切換。調(diào)度程序所要做的就是維護(hù)一就緒進(jìn)程列表,當(dāng)進(jìn)程用完它的時(shí)間片后,它被移到隊(duì)列的末尾.用 C 語言模擬設(shè)計(jì)一個類typedef struct node char name10; /進(jìn)程名int Time_piece;/時(shí)間片int Need_time; /還需要的時(shí)間int Count;/ 計(jì)數(shù)器char State;/ 進(jìn)程的狀態(tài)struct node *next;/鏈指針int
19、 Arrive_time;/到達(dá)時(shí)間PCB;用這個類根據(jù)算法的基本思想來設(shè)計(jì)程序,模擬算法的運(yùn)行情況優(yōu)先級搶占式調(diào)度算法: (過程圖).專業(yè) .整理 .下載可編輯時(shí)間片輪轉(zhuǎn)調(diào)度算法 : (過程圖).專業(yè) .整理 .下載可編輯六、運(yùn)行結(jié)果.專業(yè) .整理 .下載可編輯優(yōu)先級搶占式:.專業(yè) .整理 .下載可編輯時(shí)間片輪轉(zhuǎn)調(diào)度算法 :.專業(yè) .整理 .下載可編輯七、結(jié)果分析程序的結(jié)果很好體現(xiàn)的進(jìn)程運(yùn)行的優(yōu)先級處理,對于優(yōu)先級高的程序,采用搶占式, 分配程序 CPU使用,優(yōu)先級較低的進(jìn)入就緒隊(duì)列等待 CPU資源.專業(yè) .整理 .下載可編輯而時(shí)間片輪轉(zhuǎn)調(diào)度算法也很好的實(shí)行預(yù)期情況,程序進(jìn)入CPU運(yùn)行時(shí)間片
20、長度的時(shí)間后,調(diào)入就緒隊(duì)列隊(duì)尾,完成則進(jìn)入完成隊(duì)列。隊(duì)首調(diào)入 CPU,占用資源,循環(huán)直到所有程序都進(jìn)入就緒隊(duì)列.八、設(shè)計(jì)總結(jié)1. 設(shè)計(jì)基本實(shí)現(xiàn)了我們小組想要的功能和預(yù)測情況,雖然中間關(guān)于指針的使用我們做了許多的調(diào)試,但是我們還是做出來了。2. 然后就是進(jìn)程算法的調(diào)用過程和知識,發(fā)現(xiàn)自己對知識的遺忘程度有點(diǎn)大,邊做邊補(bǔ), 實(shí)驗(yàn)結(jié)束的會后發(fā)現(xiàn)自己的知識鞏固了不少。對操作系統(tǒng)的了解也更加深入了。3. 和隊(duì)友合作然后團(tuán)隊(duì)意識有一定的提高附錄:優(yōu)先級搶占式調(diào)度算法:/優(yōu)先級搶占式線程調(diào)度算法/#include stdlib.h#include #include #include using namesp
21、ace std;int n;class PCBpublic:string procname;/進(jìn)程名int pri;/進(jìn)程優(yōu)先數(shù)string state;/進(jìn)程狀態(tài)int runtime;/進(jìn)程已運(yùn)行CPU時(shí)間int needOftime;/還需要時(shí)間PCB *next;/指針;PCB *run = NULL; /運(yùn)行隊(duì)列頭指針PCB *ready = NULL;/就緒隊(duì)列頭指針PCB *finish = NULL;/完成隊(duì)列頭指針.專業(yè) .整理 .下載可編輯/延時(shí)函數(shù),模擬CPU占用時(shí)間 /void Dtime(int t)/ 此代碼塊參考網(wǎng)上資料time_t current_time;ti
22、me_t start_time;time(&start_time);dotime(& current_time);while(current_time-start_time)next=NULL;cout 當(dāng)前正在運(yùn)行的進(jìn)程:endl;cout 進(jìn)程名稱t優(yōu)先數(shù) t還需要時(shí)間t已運(yùn)行時(shí)間t狀態(tài):endl;while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;coutendlendl;cout 當(dāng)前的就緒隊(duì)列:endl; cout進(jìn)程名稱t優(yōu)先數(shù) t還需要時(shí)間t已運(yùn)行時(shí)間 t狀態(tài) :endl;p=ready;/ 就緒隊(duì)列whi
23、le(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;coutendlendl;cout 當(dāng)前已經(jīng)完成的進(jìn)程:endl;/ 終止隊(duì)列cout 進(jìn)程名稱t優(yōu)先數(shù) t還需要時(shí)間t已運(yùn)行時(shí)間t狀態(tài):endl; p=finish;while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;/按優(yōu)先級大小插入就緒隊(duì)列void insert(PCB *p)PCB *S1,*S2;if(ready=NULL)/ 判斷隊(duì)列是否為空p-next = NULL;ready = p;/
24、 插入就緒隊(duì)列elseS1 = ready;S2 = S1;while(S1!=NULL)if(S1-pri = p-pri)/ 判斷優(yōu)先級大小S2 = S1;/ 置換位置S1 = S1-next;elsebreak;/ 跳出循環(huán)if(S2-pri = p-pri).專業(yè) .整理 .下載可編輯S2-next = p;p-next = S1;elsep-next = ready;ready = p;/實(shí)時(shí)運(yùn)行函數(shù) /void priority()run = ready;ready = ready-next;run-state = 運(yùn)行 ;while(run!=NULL) /*當(dāng)運(yùn)行隊(duì)列不空時(shí),有
25、進(jìn)程正在運(yùn)行*/Dtime(3);/調(diào)用延時(shí)函數(shù),延時(shí)3 秒run-runtime=run-runtime+1;/ 運(yùn)行時(shí)間 +1run-needOftime=run-needOftime-1;/ 完成需要時(shí)間-1run-pri=run-pri-1; /*/ 優(yōu)先級 -1每運(yùn)行一次優(yōu)先數(shù)降低1 個單位*/if(run-needOftime=0) /*如所需時(shí)間為0 將其插入完成隊(duì)列*/run-state = 完成 ;run-next = finish;finish = run;run=NULL; /*運(yùn)行隊(duì)列頭指針為空.專業(yè) .整理 .下載可編輯*/if(ready!=NULL) /*如就緒隊(duì)
26、列不空*/run = ready;run-state = 運(yùn)行 ;ready = ready-next;else if(ready!=NULL)&(run-pri pri)/ 就緒隊(duì)列不為空,就緒隊(duì)列隊(duì)首優(yōu)先級大于運(yùn)行隊(duì)列隊(duì)首run-state=就緒 ;insert(run);/ 運(yùn)行中的進(jìn)程重新比較優(yōu)先級大小run = ready;/ 對隊(duì)列隊(duì)首的進(jìn)程調(diào)入 CPUrun-state = 運(yùn)行 ;ready = ready-next;Prinft(); /*輸出進(jìn)程 PCB信息*/void CTProcessOfPri()/創(chuàng)建進(jìn)程PCB * Node;string c5=P1,P2,P3,P
27、4,P5;/ 模擬設(shè)計(jì)5條進(jìn)程srand(int)time(0);/ 設(shè)置隨機(jī)種子for(int j = 0;j procname=cj;/ 為進(jìn)程名賦值Node-needOftime=1+(int)(15.0*rand()/(RAND_MAX+1.0);/ 為進(jìn)程隨機(jī)分配占用 CPU時(shí)間 .Node-runtime = 0;/ 為運(yùn)行時(shí)間賦值Node-state =就緒 ;/ 設(shè)置初始狀態(tài)為“就緒”狀態(tài)Node-pri =1+(int)(20.0*rand()/(RAND_MAX+1.0);/ 為進(jìn)程隨機(jī)分配優(yōu)先數(shù) .insert(Node);/ 出入就行隊(duì)列void main()cout*
28、endl;cout*優(yōu)先數(shù)調(diào)度算法*endl;cout*endl;cout 按任意鍵開始創(chuàng)建進(jìn)程?endl;getchar();CTProcessOfPri();/ 新建進(jìn)程Prinft();/ 調(diào)用界面輸出函數(shù)coutendl;cout 按任意鍵開始運(yùn)行進(jìn)程模擬調(diào)度程序?next=NULL)PCB *q=start;if(p-Arrive_timeArrive_time)start=p;p-next=q;q-next=NULL;end=q;elseq-next=p;p-next=NULL;end=p;elsePCB *q=start;PCB *s=start-next;while(s!=NU
29、LL)if(q-Arrive_time p-Arrive_time)p-next=q;start=p;return;elseif(s-Arrive_time p-Arrive_time).專業(yè) .整理 .下載可編輯q-next=p;p-next=s;return;elseq=q-next;s=s-next;s-next=p;end=p;void insert2(PCB *p)end-next=p;/ 將新 的 PCB插入在當(dāng)前就緒隊(duì)列的尾end=p;p-next=NULL;void show(PCB *p)/ 輸出函數(shù)cout 進(jìn)程名 t到達(dá)時(shí)間 t剩余時(shí)間 t狀態(tài) n;/if(run!=NU
30、LL)/ 如果運(yùn)行指針不為空 , 就輸出當(dāng)前正在運(yùn)行的進(jìn)程的PCBcoutnametArrive_timettNeed_timettStatenn;void create()/ 時(shí)間片算法創(chuàng)建進(jìn)程函數(shù)coutN;PCB *p;int Time_piece;start=NULL;/ 就緒隊(duì)列頭指針finish=NULL;/ 完成隊(duì)列頭指針.專業(yè) .整理 .下載可編輯run=NULL;/ 運(yùn)行隊(duì)列指針coutTime_piece;for(int i=1;i=N;i+)/ 輸入進(jìn)程名字和所需時(shí)間 , 創(chuàng)建進(jìn)程的PCBp=(PCB *)malloc(sizeof(PCB);cout 請輸入第 ip-name;coutp-Need_time;coutp-Arrive_time;Cpu_time=0;p-Count=0;/ 計(jì)數(shù)器p-State=W;/ 進(jìn)程的初始狀態(tài)設(shè)為就緒 Wp-Time_piece
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職場溝通中的情緒管理技巧
- 食品企業(yè)安全生產(chǎn)事故綜合應(yīng)急預(yù)案
- 工業(yè)環(huán)境下的安全教育及應(yīng)急措施
- 兩人合作研發(fā)合同范本
- 事業(yè)單位臨時(shí)工勞動合同相關(guān)規(guī)定
- 二手車交易合同官方范本
- 個人業(yè)務(wù)合作合同版
- 二手房買賣合同模板全新版
- 專業(yè)育兒嫂勞動合同協(xié)議書范例
- 個人車輛抵押借款合同標(biāo)準(zhǔn)版
- 社會政策概論課件
- 玻璃反應(yīng)釜安全操作及保養(yǎng)規(guī)程
- 高中英語新課標(biāo)詞匯表(附詞組)
- 2023年心理咨詢師之心理咨詢師基礎(chǔ)知識考試題庫附完整答案【有一套】
- 證券公司信用風(fēng)險(xiǎn)和操作風(fēng)險(xiǎn)管理理論和實(shí)踐中金公司
- 一級建造師繼續(xù)教育最全題庫及答案(新)
- 2022年高考湖南卷生物試題(含答案解析)
- GB/T 20909-2007鋼門窗
- GB/T 17854-1999埋弧焊用不銹鋼焊絲和焊劑
- GB/T 15593-2020輸血(液)器具用聚氯乙烯塑料
- 直線加速器專項(xiàng)施工方案
評論
0/150
提交評論