久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告

時(shí)間:2019-05-12 14:16:41下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告》。

第一篇:進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告

天津大學(xué)仁愛學(xué)院

實(shí)驗(yàn)類型:實(shí)驗(yàn)名稱:實(shí)驗(yàn)地點(diǎn):

學(xué)生姓名:班 級(jí):

操作系統(tǒng) 實(shí)驗(yàn)報(bào)告

必 修 實(shí)驗(yàn)日期:2014年4月18日進(jìn)程調(diào)度 二實(shí)驗(yàn)樓504 李帥帥 指導(dǎo)教師:張 磊 計(jì)科一班 計(jì)算機(jī)科學(xué)與技術(shù)系

天津大學(xué)仁愛學(xué)院——計(jì)算機(jī)科學(xué)與技術(shù)系——李帥帥

實(shí)驗(yàn)報(bào)告內(nèi)容:

1)實(shí)驗(yàn)?zāi)康?/p>

用c語(yǔ)言編寫和調(diào)試一個(gè)進(jìn)程調(diào)度程序,以加深對(duì)進(jìn)程的概念及進(jìn)程調(diào)度算法的理解。

2)實(shí)驗(yàn)器材和設(shè)備

硬 件: 二實(shí)驗(yàn)樓504計(jì)算機(jī)

開發(fā)工具: Microsoft Visual C++ 6.0

3)實(shí)驗(yàn)任務(wù)

本實(shí)驗(yàn)?zāi)M單處理器系統(tǒng)的進(jìn)程調(diào)度,加深對(duì)進(jìn)程的概念及進(jìn)程調(diào)度算法的理解。用c語(yǔ)言編寫和調(diào)試一個(gè)進(jìn)程調(diào)度的算法程序,有一些簡(jiǎn)單的界面,能夠運(yùn)行,仿真操作系統(tǒng)中進(jìn)程調(diào)度的原理和過程。通過對(duì)調(diào)度算法的模擬,進(jìn)一步理解進(jìn)程的基本概念,加深對(duì)進(jìn)程運(yùn)行狀態(tài)和進(jìn)程調(diào)度

4)實(shí)驗(yàn)原理

無論是在批處理系統(tǒng)還是分時(shí)系統(tǒng)中,用戶進(jìn)程數(shù)一般都多于處理機(jī)數(shù)、這將導(dǎo)致它們互相爭(zhēng)奪處理機(jī)。另外,系統(tǒng)進(jìn)程也同樣需要使用處理機(jī)。這就要求進(jìn)程調(diào)度程序按一定的策略,動(dòng)態(tài)地把處理機(jī)分配給處于就緒隊(duì)列中的某一個(gè)進(jìn)程,以使之執(zhí)行。

基本狀態(tài):1.等待態(tài):等待某個(gè)事件的完成;

2.就緒態(tài):等待系統(tǒng)分配處理器以便運(yùn)行; 3.運(yùn)行態(tài):占有處理器正在運(yùn)行。

運(yùn)行態(tài)→等待態(tài) 往往是由于等待外設(shè),等待主存等資源分配或等待人工干預(yù)而引起的。

等待態(tài)→就緒態(tài) 則是等待的條件已滿足,只需分配到處理器后就能運(yùn)行。運(yùn)行態(tài)→就緒態(tài) 不是由于自身原因,而是由外界原因使運(yùn)行狀態(tài)的進(jìn)程讓出處理器,這時(shí)候就變成就緒態(tài)。例如時(shí)間片用完,或有更高優(yōu)先級(jí)的進(jìn)程來?yè)屨继幚砥鞯取?/p>

就緒態(tài)→運(yùn)行態(tài) 系統(tǒng)按某種策略選中就緒隊(duì)列中的一個(gè)進(jìn)程占用處理器,此時(shí)就變成了運(yùn)行態(tài)

5)實(shí)驗(yàn)過程描述

a)打開Microsoft Visual C++ 6.0,創(chuàng)建工程。

b)根據(jù)要求用 c語(yǔ)言代碼實(shí)現(xiàn)應(yīng)用程序,并調(diào)試完成。c)運(yùn)行程序,根據(jù)提示輸入相應(yīng)的字符。

d)輸入實(shí)驗(yàn)測(cè)試內(nèi)容,并觀察執(zhí)行窗口顯示的過程。

天津大學(xué)仁愛學(xué)院——計(jì)算機(jī)科學(xué)與技術(shù)系——李帥帥

q=(struct pcb *)malloc(sizeof(pcb));

cin>>q->name;

cin>>q->needtime;

q->cputime=0;

q->priority=P_TIME-q->needtime;

q->process=ready;

q->next=NULL;

if(i==0)

{

p=q;

t->next=q;

}

else

{

q->next=t->next;

t=q;

q=p;

}

i++;} return p;}

void display(pcb * p){ cout<<“name”<<“ ”<<“cputime”<<“needtime”<<“ ”<<“priority”<<“ ”

<<“state”<

cout<

name;

cout<<“ ”;

cout<

cputime;

cout<<“ ”;

cout<

needtime;

cout<<“ ”;

cout<

priority;

cout<<“ ”;

switch(p->process)

{

case ready:cout<<“ready”<

case execute:cout<<“execute”<

case block:cout<<“block”<

case finish:cout<<“finish”<

}

天津大學(xué)仁愛學(xué)院——計(jì)算機(jī)科學(xué)與技術(shù)系——李帥帥

void priority_cal(){ pcb * p;system(“cls”);p=get_process();int cpu=0;system(“cls”);while(!process_finish(p)){

cpu++;

cout<<“cuptime:”<

cpuexe(p);

display(p);

Sleep(1000);} printf(“All processes have finished,press any key to exit”);getch();}

void display_menu(){ cout<<“nCHOOSE THE ALGORITHM:”<

pcb *get_process_round(){ pcb *q;pcb *t;pcb *p;int i=0;t=(struct pcb *)malloc(sizeof(pcb));p=(struct pcb *)malloc(sizeof(pcb));cout<<“input name and time”<q=(struct pcb *)malloc(sizeof(pcb));

cin>>q->name;

cin>>q->needtime;

q->cputime=0;

天津大學(xué)仁愛學(xué)院——計(jì)算機(jī)科學(xué)與技術(shù)系——李帥帥

{

} } return t;}

void set_state(pcb *p){ while(p){

if(p->needtime==0)

{

p->process=finish;//如果所需執(zhí)行時(shí)間為0,則設(shè)置運(yùn)行狀態(tài)為結(jié)束

}

if(p->process==execute)

{

p->process=ready;//如果未執(zhí)行狀態(tài)則設(shè)置為就緒

}

p->next;} }//設(shè)置隊(duì)列中進(jìn)程執(zhí)行狀態(tài) void display_round(pcb *p){ cout<<“NAME”<<“ ”<<“CPUTIME”<<“ ”<<“NEEDTIME”<<“ ”<<“COUNT”<<“ ”<<“ROUND”

<<“ ”<<“STATE”<

cout<

name;

cout<<“ ”;

cout<

cputime;

cout<<“ ”;

cout<

needtime;

cout<<“ ”;

cout<

count;

cout<<“ ”;

cout<

round;

cout<<“ ”;

switch(p->process)

{

case ready:cout<<“ready”<

case execute:cout<<“execute”<

case finish:cout<<“finish”<

天津大學(xué)仁愛學(xué)院——計(jì)算機(jī)科學(xué)與技術(shù)系——李帥帥

7)實(shí)驗(yàn)結(jié)果截圖

第二篇:操作系統(tǒng)進(jìn)程調(diào)度算法模擬實(shí)驗(yàn)報(bào)告

進(jìn)程調(diào)度算法模擬

專業(yè):XXXXX 學(xué)號(hào):XXXXX 姓名:XXX 實(shí)驗(yàn)日期:20XX年XX月XX日

一、實(shí)驗(yàn)?zāi)康?/p>

通過對(duì)進(jìn)程調(diào)度算法的模擬加深對(duì)進(jìn)程概念和進(jìn)程調(diào)度算法的理解。

二、實(shí)驗(yàn)要求

編寫程序?qū)崿F(xiàn)對(duì)5個(gè)進(jìn)程的調(diào)度模擬,要求至少采用兩種不同的調(diào)度算法分別進(jìn)行模擬調(diào)度。

三、實(shí)驗(yàn)方法內(nèi)容

1.算法設(shè)計(jì)思路

將每個(gè)進(jìn)程抽象成一個(gè)控制塊PCB,PCB用一個(gè)結(jié)構(gòu)體描述。

構(gòu)建一個(gè)進(jìn)程調(diào)度類。將進(jìn)程調(diào)度的各種算法分裝在一個(gè)類中。類中存在三個(gè)容器,一個(gè)保存正在或未進(jìn)入就緒隊(duì)列的進(jìn)程,一個(gè)保存就緒的進(jìn)程,另一個(gè)保存已完成的進(jìn)程。還有一個(gè)PCB實(shí)例。主要保存正在運(yùn)行的進(jìn)程。類中其他方法都是圍繞這三個(gè)容器可以這個(gè)運(yùn)行中的PCB展開。

主要用到的技術(shù)是STL中的vector以維護(hù)和保存進(jìn)程容器、就緒容器、完成容器。

當(dāng)程序啟動(dòng)時(shí),用戶可以選擇不同的調(diào)度算法。然后用戶從控制臺(tái)輸入各個(gè)進(jìn)程的信息,這些信息保存到進(jìn)程容器中。進(jìn)程信息輸入完畢后,就開始了進(jìn)程調(diào)度,每調(diào)度一次判斷就緒隊(duì)列是否為空,若為空則系統(tǒng)時(shí)間加一個(gè)時(shí)間片。判斷進(jìn)程容器中是否有新的進(jìn)程可以加入就緒隊(duì)列。2.算法流程圖 主程序的框架:

開始void FCFS();//先來先服務(wù)void SJF();//最短進(jìn)程優(yōu)先調(diào)度void RR();//簡(jiǎn)單時(shí)間片輪轉(zhuǎn)void PD();//最高優(yōu)先數(shù)優(yōu)先void PCBInput();//輸入進(jìn)程信息選擇調(diào)度算法輸入進(jìn)程信息將輸入容器中以滿足進(jìn)入條件的進(jìn)程調(diào)入就緒隊(duì)列void ProcessQueueProcess();//查看當(dāng)前時(shí)間下,有無進(jìn)程加入。若有則把該進(jìn)程調(diào)入就緒隊(duì)列按照選擇的算法開始選擇就緒隊(duì)列的進(jìn)程開始執(zhí)行void ProcessSelect();//若當(dāng)前就緒隊(duì)列不為空則根據(jù)選擇的調(diào)度算法開始調(diào)度,否則,系統(tǒng)時(shí)間加一個(gè)時(shí)間片.以等待新的進(jìn)程到判斷就緒容器和輸入容器是否為空!processScheduler.m_WaitQueue.empty()||!processScheduler.m_ProcessQueue.empt()Y打印各進(jìn)程信息進(jìn)行統(tǒng)計(jì)計(jì)算周轉(zhuǎn)時(shí)間等結(jié)束void PCBDisplay();//打印當(dāng)前狀況下。就緒隊(duì)列、完成隊(duì)列、運(yùn)行中的進(jìn)程信息void SchedulerStatistics();//調(diào)度統(tǒng)計(jì),計(jì)算周轉(zhuǎn)時(shí)間等進(jìn)程調(diào)度過程:

開始為空判斷就緒隊(duì)列是否為空if(m_WaitQueue.empty())非空讓系統(tǒng)等待一個(gè)時(shí)間片TimePast()根據(jù)設(shè)定的調(diào)度算法從就緒隊(duì)列中調(diào)入一個(gè)進(jìn)程并執(zhí)行(此時(shí)進(jìn)程從就緒隊(duì)列中刪除,賦值到表示運(yùn)行中的成員變量中)void FCFS();//先來先服務(wù)void SJF();//最短進(jìn)程優(yōu)先調(diào)度void RR();//簡(jiǎn)單時(shí)間片輪轉(zhuǎn)void PD();//最高優(yōu)先數(shù)優(yōu)先進(jìn)程運(yùn)行一個(gè)時(shí)間片N是否達(dá)到該進(jìn)程停止運(yùn)行的條件Y選入的進(jìn)程狀態(tài)是否為“完成”如進(jìn)程已完成,或者分得的時(shí)間片個(gè)數(shù)已到ProcessRun()Yvector

m_WaitQueue;//進(jìn)程就緒隊(duì)列進(jìn)程未完成,將進(jìn)程優(yōu)先數(shù)減一,并放回到就緒隊(duì)列中設(shè)置進(jìn)程完成時(shí)間,將該進(jìn)程放入完成隊(duì)列vector

m_FinishQueue;//完成隊(duì)列結(jié)束

3.算法中用到的數(shù)據(jù)結(jié)構(gòu)

struct fcfs{

//先來先服務(wù)算法從這里開始

char name[10];

float arrivetime;

float servicetime;

float starttime;

float finishtime;

float zztime;

float dqzztime;

};

//定義一個(gè)結(jié)構(gòu)體,里面包含的有一個(gè)進(jìn)程相關(guān)的信息

4.主要的常量變量

vector

m_ProcessQueue;//進(jìn)程輸入隊(duì)列

vector

m_WaitQueue;//進(jìn)程就緒隊(duì)列 vector

m_FinishQueue;//完成隊(duì)列 vector

::iterator m_iter;//迭代器 PCB m_runProcess;//運(yùn)行中的進(jìn)程

int m_ProcessCount;//進(jìn)程數(shù) float m_RunTime;//運(yùn)行時(shí)間

int m_tagIsRun;//是否在運(yùn)行標(biāo)志。表示正在運(yùn)行,表示沒有 float m_TimeSlice;//時(shí)間片大小

int m_TimeSliceCount;//指時(shí)間片輪轉(zhuǎn)中一次分到的時(shí)間片個(gè)數(shù) char m_SchedulerAlgorithm;//調(diào)度算法

5.主要模塊

void PCBInput();//輸入進(jìn)程信息

void PCBSort();//對(duì)進(jìn)程控制塊按照優(yōu)先級(jí)排序(采用冒泡排序)void ProcessSelect();//若當(dāng)前就緒隊(duì)列不為空則根據(jù)選擇的調(diào)度算法開始調(diào)度。否則,系統(tǒng)時(shí)間void PCBDisplay();//打印當(dāng)前狀況下。就緒隊(duì)列、完成隊(duì)列、運(yùn)行中的進(jìn)程信息

void ProcessRun();//進(jìn)程運(yùn)行一次。運(yùn)行時(shí)間加個(gè)時(shí)間片。并判斷進(jìn)程是否達(dá)到完成條件。若是則void ProcessQueueProcess();//查看當(dāng)前時(shí)間下,有無進(jìn)程加入。若有則把該進(jìn)程調(diào)入就緒隊(duì)列 void ProcessDispatch();//進(jìn)程分派,進(jìn)程執(zhí)行完成后決定進(jìn)程該進(jìn)入哪個(gè)隊(duì)列(就緒、完成)void TimePast(){ m_RunTime +=m_TimeSlice;ProcessQueueProcess();}//當(dāng)前系統(tǒng)時(shí)間加個(gè)時(shí)間void SchedulerStatistics();//調(diào)度統(tǒng)計(jì),計(jì)算周轉(zhuǎn)時(shí)間等 void FCFS();//先來先服務(wù) void SJF();//最短進(jìn)程優(yōu)先調(diào)度 void RR();//簡(jiǎn)單時(shí)間片輪轉(zhuǎn) void PD();//最高優(yōu)先數(shù)優(yōu)先 加.以等待新的進(jìn)程到來

ProcessStatus='f'.否則為'w';片,并檢查是否有新的進(jìn)程加入

四、實(shí)驗(yàn)代碼

#include #include #include

using namespace std;

struct fcfs{

//先來先服務(wù)算法從這里開始

char name[10];

float arrivetime;

float servicetime;

float starttime;

float finishtime;

float zztime;

float dqzztime;

};

//定義一個(gè)結(jié)構(gòu)體,里面包含的有一個(gè)進(jìn)程相關(guān)的信息

fcfs a[100];

void input(fcfs *p,int N)

{

int i;

cout<

printf(“

請(qǐng)您輸入進(jìn)程的名字

到達(dá)時(shí)間

服務(wù)時(shí)間:(例如: a 0 100)nn”);

for(i=0;i<=N-1;i++)

{

printf(“

請(qǐng)您輸入進(jìn)程%d的信息:t”,i+1);

scanf(“ttt%s%f%f”,&p[i].name,&p[i].arrivetime,&p[i].servicetime);

}

}

void Print(fcfs *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N)

{ int k;

printf(“nn調(diào)用先來先服務(wù)算法以后進(jìn)程運(yùn)行的順序是: ”);

printf(“%s”,p[0].name);

for(k=1;k

{

printf(“-->%s”,p[k].name);

}

cout<

printf(“n

具體進(jìn)程調(diào)度信息:n”);

printf(“t進(jìn)程名

到達(dá)時(shí)間

服務(wù)時(shí)間

開始時(shí)間

結(jié)束時(shí)間

周轉(zhuǎn)時(shí)間

帶權(quán)周轉(zhuǎn)時(shí)間n”);

for(k=0;k<=N-1;k++)

{

printf(“t%st%-.2ft %-.2ft

%-.2ft

%-.2ft %-.2ft %-.2fn”,p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);

}

getchar();

//此處必須要有這個(gè)函數(shù),否則就看不到顯示器上面的輸出,可以看到的結(jié)果只是一閃而過的一個(gè)框剪

}

void sort(fcfs *p,int N)//排序

{

for(int i=0;i<=N-1;i++)

for(int j=0;j<=i;j++)

if(p[i].arrivetime

{

fcfs temp;

temp=p[i];

p[i]=p[j];

p[j]=temp;

}

}

void deal(fcfs *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N)

//運(yùn)行階段

{ int k;

for(k=0;k<=N-1;k++)

{

if(k==0)

{

p[k].starttime=p[k].arrivetime;

p[k].finishtime=p[k].arrivetime+p[k].servicetime;}

else

{

p[k].starttime=p[k-1].finishtime;

p[k].finishtime=p[k-1].finishtime+p[k].servicetime;}

}

for(k=0;k<=N-1;k++)

{

p[k].zztime=p[k].finishtime-p[k].arrivetime;

p[k].dqzztime=p[k].zztime/p[k].servicetime;

}

}

void FCFS(fcfs *p,int N)

{

float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;

sort(p,N);

deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);

Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);

getchar();

} //先來先服務(wù)算法到此結(jié)束 struct sjf{//最短進(jìn)程優(yōu)先調(diào)度算法從這里開始

char name[10];float arrivetime;//到達(dá)時(shí)間

float servicetime;//運(yùn)行時(shí)間

float starttime;

//開始時(shí)間

float finishtime;

//完成時(shí)間

};sjf a1[100];

void input(sjf *p,int N1)//進(jìn)程信息輸入 {

int i;cout<

printf(“

請(qǐng)您輸入進(jìn)程的名字

到達(dá)時(shí)間

服務(wù)時(shí)間:(例如: a 0 100)n”);

for(i=0;i<=N1-1;i++){

printf(“

請(qǐng)您輸入進(jìn)程%d的信息:t”,i+1);

scanf(“ttt%s%f%f”,&p[i].name,&p[i].arrivetime,&p[i].servicetime);} }

void Print(sjf *p,float arrivetime,float servicetime,float starttime,float finishtime,int N1)//最終結(jié)果輸出

{

int k;

printf(“nt調(diào)用最短進(jìn)程優(yōu)先調(diào)度算法以后進(jìn)程的調(diào)度順序?yàn)?”);

printf(“%s”,p[0].name);

for(k=1;k

{printf(“-->%s”,p[k].name);}

cout<

printf(“n給個(gè)進(jìn)程具體調(diào)度信息如下:n”);

printf(“nt進(jìn)程名t到達(dá)時(shí)間t運(yùn)行時(shí)間t開始時(shí)間t完成時(shí)間n”);

for(k=0;k<=N1-1;k++)

{

printf(“ t%st %-.2ftt %-.2ftt %-.2ftt %-.2ftn”,p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime);

}

getchar();

} void sort(sjf *p,int N1)//排序 {

for(int i=0;i<=N1-1;i++)

for(int j=0;j<=i;j++)

if(p[i].arrivetime

{

sjf temp;

temp=p[i];

p[i]=p[j];

p[j]=temp;

} } void deal(sjf *p, float arrivetime,float servicetime,float starttime,float finishtime,int N1)//運(yùn)行階段

{ int k;

for(k=0;k<=N1-1;k++)

{

if(k==0)

{

p[k].starttime=p[k].arrivetime;

p[k].finishtime=p[k].arrivetime+float(p[k].servicetime)/60;}

else

{

p[k].starttime=p[k-1].finishtime;

p[k].finishtime=p[k-1].finishtime+float(p[k].servicetime)/60;}

}

}

void sjff(sjf *p,int N1){

float arrivetime=0,servicetime=0,starttime=0,finishtime=0;

sort(p,N1);

for(int m=0;m

{if(m==0)

p[m].finishtime=p[m].arrivetime+float(p[m].servicetime)/60;

else

p[m].finishtime=p[m-1].finishtime+float(p[m].servicetime)/60;

int i=0;

for(int n=m+1;n<=N1-1;n++)

{

if(p[n].arrivetime<=p[m].finishtime)

i++;

}

float min=p[m+1].servicetime;

int next=m+1;

for(int k=m+1;k

{

if(p[k+1].servicetime

{min=p[k+1].servicetime;

next=k+1;}

}

sjf temp;

temp=p[m+1];

p[m+1]=p[next];

p[next]=temp;

}

deal(p,arrivetime,servicetime,starttime,finishtime,N1);

Print(p,arrivetime,servicetime,starttime,finishtime,N1);

getchar();}//最短進(jìn)程優(yōu)先調(diào)度算法到這里結(jié)束

char menu()//用來輸出相關(guān)信息的函數(shù)

{

char cse1;

while(1)

{

system(“cls”);

fflush(stdin);

cout<

cout<

cout<<“t”<<“|| <<<<<<<<<<<<歡<<<<<<<<<<< >>>>>>>>>>>>迎>>>>>>>>>>> ||”<

cout<<“t”<<“||

||”<

cout<<“t”<<“||”<<“t 進(jìn)程調(diào)度算法模擬”<<“tt”<<“||”<

cout<<“t”<<“||

||”<

cout<<“t”<<“||”<<“tt 1.先來先服務(wù)調(diào)度算法 ”<<“tt”<<“||”<

cout<<“t”<<“||

||”<

cout<<“t”<<“||”<<“tt 2.最短進(jìn)程優(yōu)先調(diào)度算法”<<“tt”<<“||”<

cout<<“t”<<“||

||”<

cout<<“t”<<“|| <<<<<<<<<<<<<<<<<<<<<<<<<您>>>>>>>>>>>>>>>>>>>>>>>>> ||”<

cout<

cout<

cout<<“tt

請(qǐng)輸入您的選擇(1/2):”;

cse1=getchar();

if(cse1<'1'||cse1>'2')

cout<<“你的輸入有錯(cuò)!”<

else

break;

}

return cse1;} int main(int argc, char *argv[]){

while(1)

{

switch(menu())

{

case '1':

int N;

cout<

cout<

printf(“tt<<---!!@@@先來先服務(wù)調(diào)度算法@@@!!--->>n”);

cout<

printf(“輸入進(jìn)程數(shù)目:”);

scanf(“%d”,&N);

input(a,N);

FCFS(a,N);

case '2':

int N1;

cout<

cout<

printf(“tt<<---!!@@@最短進(jìn)程優(yōu)先調(diào)度算法@@@!!--->>n”);

cout<

printf(“輸入進(jìn)程數(shù)目: ”);

scanf(“%d”,&N1);

input(a1,N1);

sjf *b=a1;

sjf *c=a1;

sjff(b,N1);

getchar();

}

}

system(“PAUSE”);

return EXIT_SUCCESS;}

五、實(shí)驗(yàn)結(jié)果

1.執(zhí)行結(jié)果

2.結(jié)果分析

先來先服務(wù)調(diào)度算法就是根據(jù)進(jìn)程達(dá)到的時(shí)間為依據(jù),哪一個(gè)進(jìn)程先來那么該進(jìn)程就會(huì)先執(zhí)行;最短進(jìn)程優(yōu)先調(diào)度算法則是以每個(gè)進(jìn)程執(zhí)行所需時(shí)間長(zhǎng)短為依據(jù),某一個(gè)進(jìn)程執(zhí)行所需花的時(shí)間要短些那么該進(jìn)程就先執(zhí)行。以上就是本次進(jìn)程調(diào)度實(shí)驗(yàn)的依據(jù)。

六、實(shí)驗(yàn)總結(jié)

通過本次實(shí)驗(yàn)了解到算法很重要,又更加明白算法本身可以節(jié)約時(shí)間,而且不同的函數(shù)之間在調(diào)用的時(shí)候要注意很多的問題。

第三篇:進(jìn)程調(diào)度

操作系統(tǒng)課程設(shè)計(jì)

進(jìn) 程 調(diào) 度 實(shí) 踐 報(bào) 告

姓名: 董宇超 班級(jí):計(jì)算機(jī)一班 學(xué)號(hào):0906010124

目錄:

? 實(shí)踐內(nèi)容 ? 實(shí)踐目的及意義 ? 功能設(shè)計(jì)及數(shù)據(jù)結(jié)構(gòu) ? 調(diào)試運(yùn)行及測(cè)設(shè)分析 ? 存在的問題及改進(jìn)設(shè)想 ? 實(shí)踐體會(huì) ? 總結(jié) ? 參考文獻(xiàn)

正文:

1.實(shí)踐內(nèi)容:

2.3.在多道程序運(yùn)行環(huán)境下,進(jìn)程數(shù)目一般多于處理機(jī)數(shù)目,使得進(jìn)程要通過競(jìng)爭(zhēng)來使用處理機(jī)。這就要求系統(tǒng)能按某種算法,動(dòng)態(tài)地把處理機(jī)分配給就緒隊(duì)列中的一個(gè)進(jìn)程,使之運(yùn)行,分配處理機(jī)的任務(wù)是由進(jìn)程調(diào)度程序完成的。一個(gè)進(jìn)程被創(chuàng)建后,系統(tǒng)為了便于對(duì)進(jìn)程進(jìn)行管理,將系統(tǒng)中的所有進(jìn)程按其狀態(tài),將其組織成不同的進(jìn)程隊(duì)列。于是系統(tǒng)中有運(yùn)行進(jìn)程隊(duì)列、就緒隊(duì)列和各種事件的進(jìn)程等待隊(duì)列。進(jìn)程調(diào)度的功能就是從就緒隊(duì)列中挑選一個(gè) 進(jìn)程到處理機(jī)上運(yùn)行。進(jìn)程調(diào)度的算法有多種,常用的有先來先服務(wù)算法、時(shí)間片輪轉(zhuǎn)算法。

采用先來先服務(wù)及時(shí)間片輪轉(zhuǎn)算法進(jìn)行進(jìn)程調(diào)度,編程模擬。實(shí)踐目的:

·要求設(shè)計(jì)并實(shí)現(xiàn)模擬進(jìn)程調(diào)度的算法:時(shí)間片輪轉(zhuǎn)及先來先服務(wù)。·理解進(jìn)程控制塊的結(jié)構(gòu)。·理解進(jìn)程運(yùn)行的并發(fā)性。·掌握進(jìn)程調(diào)度算法。功能設(shè)計(jì):

1)數(shù)據(jù)結(jié)構(gòu):

class PCB {

string ProcessName;// 進(jìn)程名字

int Time;// 進(jìn)程需要時(shí)間

int LeftTime;// 進(jìn)程運(yùn)行一段時(shí)間后還需要的時(shí)間

} 2)功能函數(shù):

void Copy(Process proc1, Process proc2);// 把proc2賦值給proc1 void sort(Process pr[], int size);// 此排序后按需要的cpu

時(shí)間從小到大排列

void Fcfs(Process pr[], int num);// 先來先服務(wù)算法

void TimeTurn(Process process[], int num, int Timepice);// 時(shí)

間片輪轉(zhuǎn)算法

源代碼:

#include #include using namespace std;class PCB { public:

};

void Copy(PCB proc1, PCB proc2);// 把proc2賦值給proc1 void sort(PCB pr[], int size);// 此排序后按需要的cpu時(shí)間從小到大排列 void Fcfs(PCB pr[], int num);// 先來先服務(wù)算法

void TimeTurn(PCB process[], int num, int Timepice);// 時(shí)間片輪轉(zhuǎn)算法

void main(){

int a;cout<>a;const int Size =30;PCB

process[Size];int num;int TimePice;

cout<<“輸入進(jìn)程個(gè)數(shù):”<>num;if(a==2){

} for(int i=0;i< num;i++)//輸入進(jìn)程信息 {

} for(int k=0;k

cout<>name;cin>> CpuTime;process[i].ProcessName =name;process[i].Time =CpuTime;cout<>TimePice;string ProcessName;// 進(jìn)程名字 int Time;// 進(jìn)程需要時(shí)間

int LeftTime;// 進(jìn)程運(yùn)行一段時(shí)間后還需要的時(shí)間

} {

} else if(a==2)//時(shí)間片輪轉(zhuǎn)調(diào)度 {

} cout<<“進(jìn)程名”<<“ 剩余時(shí)間”<<“

狀態(tài)”<

CPU時(shí)間 ”<<“

狀態(tài)”<

}

void sort(PCB pr[], int size)// 以進(jìn)程時(shí)間從低到高排序 {// 直接插入排序

} /* 先來先服務(wù)算法的實(shí)現(xiàn)*/ void Fcfs(PCB process[], int num){ // process[] 是輸入的進(jìn)程,num是進(jìn)程的數(shù)目

while(true){

if(num==0){

} if(process[0].LeftTime==0)//由于第一個(gè)進(jìn)程總是在運(yùn)行,所以每次都只判斷process[0].LeftTime { cout<<“ 所有進(jìn)程都已經(jīng)執(zhí)行完畢!”<

} PCB temp;temp = pr[i];int j=i;

while(j>0 && temp.Time < pr[j-1].Time){

} pr[j] = temp;pr[j] = pr[j-1];j--;proc1.ProcessName =proc2.ProcessName;proc1.Time =proc2.Time;

}

} cout<<“ 進(jìn)程”<

} else if(process[0].LeftTime > 0){

cout<“<

運(yùn)行”;cout<

for(int s=1;s

} cout<<“ ”<

“<

等待”<} // while

/* 時(shí)間片輪轉(zhuǎn)調(diào)度算法實(shí)現(xiàn)*/ void TimeTurn(PCB process[], int num, int Timepice){

while(true){

if(num==0){

} if(process[0].LeftTime==0)//由于第一個(gè)進(jìn)程總是在運(yùn)行,所以每次都只判斷process[0].LeftTime {

cout<<“ 進(jìn)程”<

}

} num--;if(process[num-1].LeftTime ==0){

} else if(process[0].LeftTime > 0){

cout<

} PCB temp;//中間變量 temp = process[0];for(int j=0;j

等待”<

就緒”<

process[0].LeftTime=process[0].LeftTime-Timepice;if(process[0].LeftTime<=0)//當(dāng)剩余時(shí)間小于零時(shí),做零處理 process[0].LeftTime=0;cout<<“ ”<

“<

運(yùn)行”<

for(int s=1;s“<

cout<<” 進(jìn)程“ << process[num-1].ProcessName <<” 已經(jīng)執(zhí)行完畢!"<

} // while

4.調(diào)試運(yùn)行:

運(yùn)行開始后出現(xiàn)如下界面:

按提示選擇1/2;

? 先選1,進(jìn)行FCFS調(diào)度:

? 若選2,進(jìn)行時(shí)間片輪轉(zhuǎn)調(diào)度:

5.存在的問題:

由于初次做操作系統(tǒng)模擬實(shí)驗(yàn),所以程序設(shè)計(jì)中存在很多問題,例如定義好PCB后,各種指針的使用,使得程序甚是復(fù)雜,再加上隊(duì)列指針,而且指針錯(cuò)誤在調(diào)試的時(shí)候不提示錯(cuò)誤,只是編好的程序看似沒有錯(cuò)誤,卻在執(zhí)行時(shí)出現(xiàn)異常而中斷,由于使用指針使得程序龐大檢查改正困難,無法發(fā)現(xiàn)隱藏的錯(cuò)誤,只是程序無法進(jìn)行下去。

最終本程序選擇數(shù)組保存PCB信息,存儲(chǔ)和調(diào)用都簡(jiǎn)單化。

改進(jìn)之處:學(xué)習(xí)指針,并且使用三個(gè)隊(duì)列,就緒隊(duì)列,運(yùn)行隊(duì)列,完成隊(duì)列,使得進(jìn)程調(diào)度模擬更加清晰。

還有一些簡(jiǎn)單的以解決的問題,不一一列舉了。

6.實(shí)踐心得體會(huì):

通過這次實(shí)踐學(xué)會(huì)了不少內(nèi)容,更深的理解了進(jìn)程調(diào)度的幾種算法,而且學(xué) 會(huì)了系統(tǒng)的編寫程序,而不是只編寫幾個(gè)功能函數(shù)。在編程過程中,需要 查閱各種資料,并且學(xué)習(xí)前人的編寫方法,找出優(yōu)劣,然后形成自己的思想,最終完成程序的編寫。

通過模擬進(jìn)程調(diào)度的兩種算法,懂得了各種算法在不同情況下的作用。選擇 一個(gè)好的調(diào)度算法可以是計(jì)算機(jī)在執(zhí)行龐大的作業(yè)時(shí)井井有條,并且使用時(shí) 間很短。

在模擬過程中出現(xiàn)過好多問題,有的解決了,有的還未解決,不管如何都是 一種收獲,編寫功能函數(shù)時(shí)總會(huì)出現(xiàn)參數(shù)調(diào)用錯(cuò)誤的情況,通過分析解決了。在指針指向的問題上,覺得很復(fù)雜,最終沒有解決。

7.總結(jié):

為期一周的操作系統(tǒng)實(shí)踐課結(jié)束了,編寫了包含有兩種調(diào)度算法的進(jìn)程 調(diào)度模擬程序,兩種程序各有優(yōu)劣,F(xiàn)CFS調(diào)度算法是按照進(jìn)程進(jìn)入系統(tǒng)的時(shí) 間先后被CPU選擇創(chuàng)建的,這種算法易于實(shí)現(xiàn),但效率不高,只顧及到進(jìn)程 的等候時(shí)間,沒考慮要求服務(wù)的時(shí)間長(zhǎng)短,相比SJF算法不利于較短的作業(yè)。本程序的另一種調(diào)度算法是RR算法,它在調(diào)度是是為每個(gè)進(jìn)程分配時(shí)間片,當(dāng)時(shí)間片用完時(shí),進(jìn)程便排到隊(duì)尾以便下次分配,這種調(diào)度策略可以防止那 些很少使用設(shè)備的進(jìn)程長(zhǎng)時(shí)間占用處理器,導(dǎo)致要使用設(shè)備的那些進(jìn)程沒機(jī) 會(huì)啟動(dòng)設(shè)備。

在編寫程序的同時(shí),還學(xué)習(xí)了進(jìn)程調(diào)度的其他算法,明白了它們各自的優(yōu)劣,懂得了計(jì)算機(jī)在調(diào)度進(jìn)程時(shí)的取舍。

8.參考文獻(xiàn):

1.操作系統(tǒng)教程(第4版)…………孫鐘秀 主編 高等教育出版社;

2.算法與數(shù)據(jù)結(jié)構(gòu)-C語(yǔ)言描述(第2版)……張乃孝 主編 高等教育出版社; 3.網(wǎng)絡(luò)資源;

第四篇:進(jìn)程創(chuàng)建實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)二 進(jìn)程的創(chuàng)建

一、實(shí)驗(yàn)?zāi)康?/p>

熟悉進(jìn)程的創(chuàng)建過程,了解系統(tǒng)調(diào)用函數(shù)fork()和 execl()。

二、實(shí)驗(yàn)內(nèi)容

1、閱讀實(shí)例代碼fork1,并編輯、編譯、運(yùn)行,記錄程序的運(yùn)行結(jié)果,嘗試給出合理的解釋,查閱有關(guān)資料,掌握系統(tǒng)調(diào)用fork()的用法,返回值的意義。

2、閱讀實(shí)例代碼fork2,并編輯、編譯、運(yùn)行,記錄程序的運(yùn)行結(jié)果,嘗試給出合理的解釋,查閱有關(guān)資料,掌握在程序中運(yùn)行一個(gè)操作系統(tǒng)命令和運(yùn)行一個(gè)程序的方法。

3、修改fork2,使之能把運(yùn)行的命令和程序作為參數(shù)傳給fork2。

三、設(shè)計(jì)思想

1、程序框架

pid =-1 pid = 0 pid > 0

2、用到的文件系統(tǒng)調(diào)用函數(shù) fork()和 execl()

四、調(diào)試過程

1、測(cè)試數(shù)據(jù)設(shè)計(jì)(1)fork1 命名程序1:

編寫程序1:

編譯程序1:

運(yùn)行程序1:

(2)fork2 編寫程序2:

運(yùn)行程序2:

(3)修改fork2 編寫修改程序2:

修改后的運(yùn)行結(jié)果:

2、測(cè)試結(jié)果分析

(1)對(duì)于程序1:因?yàn)橄到y(tǒng)調(diào)用fork()函數(shù)是一次調(diào)用兩次返回值,而且先生成子進(jìn)程還是父進(jìn)程是不確定的,所以第一次執(zhí)行生成子進(jìn)程的時(shí)候返回的pid = 0,判斷pid!=-1,所以輸出了I’m the child.I’m the parent.第二次,執(zhí)行父進(jìn)程的時(shí)候,返回的是子進(jìn)程的進(jìn)程號(hào)pid > 0,即pid的值仍然不為-1,所以又輸出了一次I’m the child.I’m the parent。

(2)對(duì)于程序2:第一次調(diào)用fork()函數(shù)時(shí),由于執(zhí)行的是子進(jìn)程還是父進(jìn)程是隨機(jī)的,所以第一次對(duì)父進(jìn)程返回的是子進(jìn)程的進(jìn)程號(hào)(大于0),即pid > 0,所以輸出I’m the parent.Program end.當(dāng)?shù)诙螆?zhí)行子進(jìn)程時(shí)返回值是0,即pid = 0,所以輸出I’m the child.并調(diào)用了execl()函數(shù),查看了指定路徑中的文件。

(3)對(duì)于修改后的程序2:改變了系統(tǒng)調(diào)用execl()中參數(shù)的文件路徑和可執(zhí)行文件名,即可在程序fork2.c中執(zhí)行另一個(gè)程序wyf.c(但要注意可執(zhí)行文件名是123)。

五、總結(jié)

1、調(diào)試過程中遇到的主要問題及解決過程

運(yùn)行程序2的時(shí)候如果不加execl()函數(shù)的頭文件會(huì)提示警告,而且因?yàn)閑xecl()的第三個(gè)參數(shù)是字符型指針數(shù)組,所以要強(qiáng)制轉(zhuǎn)換成指針型,即寫成(char*)0 才行。

2、體會(huì)和收獲

通過這次實(shí)驗(yàn)我進(jìn)一步熟悉了linux系統(tǒng),也學(xué)會(huì)了進(jìn)程的創(chuàng)建過程和返回值的意義。同時(shí)學(xué)會(huì)了一個(gè)新的系統(tǒng)調(diào)用函數(shù)execl()及其頭文件和參數(shù)類型。也學(xué)會(huì)了在編寫完程序之后,不僅可以用 :wq 保存并退出,也可以用快捷鍵 shift + zz。

六、附錄:源程序代碼(另附)

第五篇:操作系統(tǒng)進(jìn)程調(diào)度實(shí)驗(yàn)

一.實(shí)驗(yàn)?zāi)康募皩?shí)驗(yàn)環(huán)境 1.實(shí)驗(yàn)?zāi)康?/p>

通過觀察、分析實(shí)驗(yàn)現(xiàn)象,深入理解進(jìn)程及進(jìn)程在調(diào)度執(zhí)行和內(nèi)存空間等方面的特點(diǎn),掌握在POSIX 規(guī)范中fork和kill系統(tǒng)調(diào)用的功能和使用。2.實(shí)驗(yàn)環(huán)境

(1)硬件

? CPU:I7-4500U ? 內(nèi)存:8G DDR3 1600 ? 顯示器:華碩筆記本顯示器 ? 硬盤空間:80G

(2)軟件

? 虛擬機(jī)名稱及版本:非虛擬機(jī)

? 操作系統(tǒng)名稱及版本:Ubuntu Kylin 16.04 ? 編譯器:gcc 二.實(shí)驗(yàn)內(nèi)容

1、實(shí)驗(yàn)前準(zhǔn)備工作

學(xué)習(xí)man 命令的用法,通過它查看fork 和kill 系統(tǒng)調(diào)用的在線幫助,并閱讀參考資料,學(xué)會(huì)fork 與kill 的用法,復(fù)習(xí)C 語(yǔ)言的相關(guān)內(nèi)容。

2、實(shí)驗(yàn)內(nèi)容

根據(jù)下發(fā)的Linux進(jìn)程管理實(shí)驗(yàn)PPT內(nèi)容,將實(shí)驗(yàn)代碼補(bǔ)充完整。并考慮: 先猜想一下這個(gè)程序的運(yùn)行結(jié)果。假如運(yùn)行“./process 20”,輸出會(huì)是什么樣?然后按照注釋里的要求把代碼補(bǔ)充完整,運(yùn)行程序。可以多運(yùn)行一會(huì)兒,并在此期間啟動(dòng)、關(guān)閉一些其它進(jìn)程,看process 的輸出結(jié)果有什么特點(diǎn),記錄下這個(gè)結(jié)果。開另一個(gè)終端窗口,運(yùn)行“ps aux|grep process”命令,看看process 究竟啟動(dòng)了多少個(gè)進(jìn)程。回到程序執(zhí)行窗口,按“數(shù)字鍵+回車”嘗試殺掉一兩個(gè)進(jìn)程,再到另一個(gè)窗口看進(jìn)程狀況。按q 退出程序再看進(jìn)程情況。

3、回答問題

編寫、編譯、鏈接、執(zhí)行實(shí)驗(yàn)內(nèi)容設(shè)計(jì)中的代碼,并回答如下問題: 1)你最初認(rèn)為運(yùn)行結(jié)果會(huì)怎么樣?

手動(dòng)輸入進(jìn)程數(shù),選擇輸入要?dú)⑺赖倪M(jìn)程編號(hào),按q殺死所有進(jìn)程。需手動(dòng)輸入進(jìn)程數(shù),然后鍵入編號(hào)殺死進(jìn)程,鍵入q殺死父進(jìn)程即殺死2)實(shí)際的結(jié)果什么樣?有什么特點(diǎn)?試對(duì)產(chǎn)生該現(xiàn)象的原因進(jìn)行分析。所有進(jìn)程。

3)proc_number 這個(gè)全局變量在各個(gè)子進(jìn)程里的值相同嗎?為什么? 不相同,proc_number是存儲(chǔ)各個(gè)子進(jìn)程的編號(hào)的,所以在各個(gè)子進(jìn)程中

是不同的。

4)kill 命令在程序中使用了幾次?每次的作用是什么?執(zhí)行后的現(xiàn)象是什么?

使用了2次,第一次是在while循環(huán)中的if語(yǔ)句中使用,用來殺死用戶鍵入的指定進(jìn)程。第二次是殺死父進(jìn)程,回到程序的開始。

5)使用kill 命令可以在進(jìn)程的外部殺死進(jìn)程。進(jìn)程怎樣能主動(dòng)退出?這兩種退出方式哪種更好一些?

調(diào)用return 函數(shù)或exit函數(shù)都可以正常退出,而使用kill函數(shù)是異常退出,使用正常退出的方法比較好。

6)寫出fork()和kill()函數(shù)原型,并解釋函數(shù)的功能和參數(shù)的含義?

原型: #include

功能:

一個(gè)現(xiàn)有進(jìn)程可以調(diào)用fork函數(shù)創(chuàng)建一個(gè)新進(jìn)程。由fork創(chuàng)建的新進(jìn)程被稱為子進(jìn)程。fork函數(shù)被調(diào)用一次但返回兩次。兩次返回的唯一區(qū)別是子進(jìn)程中返回0值而父進(jìn)程中返回子進(jìn)程ID。原型:#include #include

int kill(pid_t pid, int sig);

功能:

向某個(gè)進(jìn)程傳遞一個(gè)信號(hào)

7)ps aux|grep process命令功能是什么?并解釋結(jié)果的含義。

ps命令是最基本進(jìn)程查看命令.使用該命令可以確定有進(jìn)程正在運(yùn)行數(shù)量和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、是否有僵尸進(jìn)程、進(jìn)程占用的資源。grep命令查看某進(jìn)程的狀態(tài)并打印在屏幕上,ps aux是顯示所有進(jìn)程和他們的狀態(tài)。ps aux輸出格式:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

三.方案設(shè)計(jì)

每創(chuàng)建一個(gè)子進(jìn)程時(shí),將其pid存儲(chǔ)在數(shù)組pid[i]中,i存儲(chǔ)在proc_number中,然后調(diào)用死循環(huán)函數(shù)do_something(),輸出該進(jìn)程的proc_number,當(dāng)輸入數(shù)字是主進(jìn)程執(zhí)行kill(pid[pid-48],SIGTERM),殺死ch-48進(jìn)程。當(dāng)輸入q時(shí)循環(huán)退出,kill(0,SIGTERM),殺死本組所有進(jìn)程,程序退出。

#include pid_t fork(void);

四.測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果

注釋:由于我的電腦運(yùn)行這段代碼報(bào)錯(cuò),所以我和我組高宏偉同學(xué)使用的是同一實(shí)驗(yàn)數(shù)據(jù),同一代碼。五.總結(jié)

1. 實(shí)驗(yàn)過程中遇到的問題及解決辦法;

實(shí)驗(yàn)中由于代碼中的大部分已經(jīng)給出,只需填寫重要部分。遇到了不懂fork的返回值,所以if和else語(yǔ)句會(huì)同時(shí)執(zhí)行,知道了fork的原理后,fork會(huì)返回兩個(gè)值一個(gè)到子進(jìn)程,一個(gè)到父進(jìn)程。2. 對(duì)設(shè)計(jì)及調(diào)試過程的心得體會(huì)。

本次實(shí)驗(yàn)學(xué)會(huì)了創(chuàng)建進(jìn)程命令fork和殺死進(jìn)程命令kill。在開始的時(shí)候不理解fork 和kill的原理,有點(diǎn)懵。后來通過看書和上網(wǎng)查詢知道了fork和kill的原理后明白了代碼要填寫的空白。六.附錄:源代碼(電子版)

#include #include #include #include #include #include

#define MAX_CHILD_NUMBER 10 #define SLEEP_INTERVAL 2

int proc_number=0;void do_something();

int main(int argc,char* argv[]){ int child_proc_number=MAX_CHILD_NUMBER;int i,ch;pid_t child_pid;

pid_t pid[10]={0};if(argc>1){

child_proc_number = atoi(argv[1]);

child_proc_number =(child_proc_number>10)?10:child_proc_number;

for(i=0;i

child_pid=fork();

proc_number=i;

if(child_pid==0){do_something();

}else if(child_pid>0){

pid[i]=child_pid;

printf(“A Parent process,the pid is %dn”,getpid());

}

}

printf(“input the number you want to killn”);

while((ch=getchar())!='q')

{

if(isdigit(ch)){

ch=(int)ch-48;

if(kill(pid[ch],SIGKILL)<0){

perror(“kill”);

exit(1);

}else{

printf(“process %d has been killed!nn”,pid[ch]);

}

}else{

printf(“is not digitn”);

}

getchar();

printf(“input the number you want to kill:n”);

}

kill(0,SIGTERM);} return 0;}

void do_something(){ for(;;){

printf(“This is process No.%*dn”,proc_number+3,proc_number);

sleep(SLEEP_INTERVAL);} }

下載進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告word格式文檔
下載進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告.doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    調(diào)度自動(dòng)化實(shí)驗(yàn)報(bào)告5篇

    實(shí)時(shí)監(jiān)控功能分析 一. 實(shí)驗(yàn)名稱 實(shí)時(shí)監(jiān)控功能分析 二.實(shí)驗(yàn)?zāi)康?1. 對(duì)實(shí)時(shí)監(jiān)控功能的基本作用有一個(gè)感性認(rèn)識(shí):電力系統(tǒng)的安全、可靠運(yùn)行是發(fā)電、供電和保障人民生產(chǎn)和生活用電......

    數(shù)據(jù)結(jié)構(gòu) 任務(wù)調(diào)度 實(shí)驗(yàn)報(bào)告

    實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱:表達(dá)式求值 任務(wù)調(diào)度 實(shí)驗(yàn)類型:綜合性實(shí)驗(yàn) 班級(jí):學(xué)號(hào):姓名: 實(shí)驗(yàn)日期:2014.5.28 表達(dá)式求值 1.問題描述 表達(dá)式是數(shù)據(jù)運(yùn)算的基本形式。人們的書寫習(xí)慣是中綴......

    操作系統(tǒng) 實(shí)驗(yàn)一 進(jìn)程調(diào)度(5篇)

    實(shí)驗(yàn)一進(jìn)程控制與處理機(jī)調(diào)度綜合實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?通過模擬進(jìn)程控制方法及單處理機(jī)系統(tǒng)的進(jìn)程調(diào)度,了解進(jìn)程的結(jié)構(gòu),進(jìn)程的創(chuàng)建與撤消,進(jìn)程的組織及進(jìn)程的狀態(tài)及其轉(zhuǎn)換,掌握進(jìn)程......

    實(shí)驗(yàn)報(bào)告六 磁盤調(diào)度算法

    實(shí)驗(yàn)報(bào)告六磁盤調(diào)度算法 班級(jí):軟技2班學(xué)號(hào):201467003084 姓名:劉道林 一.實(shí)驗(yàn)內(nèi)容:熟悉磁盤的結(jié)構(gòu)以及磁盤的驅(qū)動(dòng)調(diào)度算法的模擬,編程實(shí)現(xiàn)簡(jiǎn)單常用的磁盤驅(qū)動(dòng)調(diào)度算法先來先服......

    操作系統(tǒng)進(jìn)程管理系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告

    實(shí)驗(yàn)報(bào)告說明書 設(shè)計(jì)名稱: 操作系統(tǒng)課程設(shè)計(jì) 實(shí) 驗(yàn) : 進(jìn)程調(diào)度設(shè)計(jì) 學(xué)生姓名: 專 業(yè): 網(wǎng)絡(luò)工程 班 級(jí): 08級(jí)一班 學(xué) 號(hào): 指導(dǎo)教師:雷曉平王東 黃營(yíng) 楊躍武 日 期: 2011年 6月 19......

    1.操作系統(tǒng)實(shí)驗(yàn)內(nèi)容(進(jìn)程調(diào)度)5篇

    一.實(shí)驗(yàn)?zāi)康?用高級(jí)語(yǔ)言編寫和調(diào)實(shí)一個(gè)進(jìn)程調(diào)度程序,以加深對(duì)進(jìn)程的概念及進(jìn)程調(diào)度算法的理解. 二.實(shí)驗(yàn)要求:設(shè)計(jì)一個(gè)有 N個(gè)進(jìn)程并發(fā)執(zhí)行的進(jìn)程調(diào)度程序。 三.算法講解 進(jìn)程調(diào)度算......

    操作系統(tǒng) 單處理機(jī)系統(tǒng)的進(jìn)程調(diào)度

    一.實(shí)驗(yàn)內(nèi)容描述 1.目的 (1)了解Windows內(nèi)存管理器 (2)理解Windows的地址過程 2.內(nèi)容 任意給出一個(gè)虛擬地址,通過WinDbg觀察相關(guān)數(shù)據(jù)并找到其物理地址 二.理論分析 Windows采用頁(yè)......

    常用進(jìn)程調(diào)度算法的分析與評(píng)價(jià)

    常用進(jìn)程調(diào)度算法的分析與評(píng)價(jià)(一) 2009-10-31 22:48 進(jìn)程調(diào)度是按照某種調(diào)度算法從就緒狀態(tài)的進(jìn)程中選擇一個(gè)進(jìn)程到處理機(jī)上運(yùn)行。 進(jìn)程調(diào)度的兩種方式 : (1)非搶占調(diào)度方式......

主站蜘蛛池模板: 亚洲乱亚洲乱妇无码| 免费观看性行为视频的网站| 色香欲天天天影视综合网| 女人爽到高潮潮喷18禁网站| 国产精品午睡沙发系列| 亚洲欧美色综合影院| 欧美人与性动交ccoo| 97se亚洲综合自在线| 亚洲午夜av久久久精品影院色戒| 亚洲精品少妇30p| 国产亚洲欧美另类一区二区三区| 日本高清h色视频在线观看| 色综合久久中文字幕无码| 午夜成人亚洲理论片在线观看| 无码熟熟妇丰满人妻啪啪| 精品麻豆一卡2卡三卡4卡乱码| 大屁股国产白浆一二区| 人妻少妇乱子伦精品无码专区电影| 国产成人亚洲综合无码品善网| 精品免费久久久久久久| 大地资源中文第3页| 亚洲欧美日韩在线观看一区二区三区| 免费观看国产小粉嫩喷水精品午.| 精品国产精品久久一区免费式| √天堂中文官网8在线| 国产精品乱码一区二区三区| 七妺福利精品导航大全| 国产精品久久久久久人妻精品动漫| 亚洲精品无码成人av电影网| 亚洲欧洲av综合色无码| 久久精品国产曰本波多野结衣| 大又大粗又爽又黄少妇毛片| 国产精品卡一卡二卡三| 波多野结av衣东京热无码专区| 亚洲国产精品久久久久秋霞小说| 国产麻豆剧传媒精品国产av| 少妇人妻上班偷人精品视频| 人妻人人澡人人添人人爽| 亚洲欧美国产精品久久| 18禁网站禁片免费观看| 久久久久久a亚洲欧洲av|