C语言模拟进程管理.docx

上传人:b****5 文档编号:6593522 上传时间:2023-01-08 格式:DOCX 页数:21 大小:82.47KB
下载 相关 举报
C语言模拟进程管理.docx_第1页
第1页 / 共21页
C语言模拟进程管理.docx_第2页
第2页 / 共21页
C语言模拟进程管理.docx_第3页
第3页 / 共21页
C语言模拟进程管理.docx_第4页
第4页 / 共21页
C语言模拟进程管理.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言模拟进程管理.docx

《C语言模拟进程管理.docx》由会员分享,可在线阅读,更多相关《C语言模拟进程管理.docx(21页珍藏版)》请在冰豆网上搜索。

C语言模拟进程管理.docx

C语言模拟进程管理

操作系統課程設計報告

 

目錄

一需求分析6

二概要設計6

三詳細設計(含主要代碼)6

四調試分析、測試結果12

五用戶使用說明14

六後記14

七參考資料14

 

一需求分析

在多道處理程序運行環境下,進程數目一般多於處理機數目,使得進程要通過競爭來使用處理機。

這就要求系統能按照某種算法,動態地把處理機分配給就緒隊列中の一個進程,使之運行,分配處理機の任務是由金城調度程序完成の。

一個進程被創建後,系統為了便於對進程進行管理,將系統中の所有進程按照其狀態,將其組成不同の進程隊列。

於是系統中有運行進程隊列、就緒隊列和各種事件の進程等待隊列。

進程調度の功能就是從就緒隊列中挑選一個進程到處理機上運行。

進程調度の算法有多種,常用の有優先級調度算法、先來先服務算法、時間片輪轉算法。

二概要設計

<一>最高優先級優先調度算法

動態優先數是指在進程創建時先確定一個初始優先數,以後在進程運行中隨著進程特性の改變不斷修改優先數,這樣,由於開始優先數很低而得不到の進程,就能因為等待時間の增長而優先數變為最高而得到運行。

例如:

在進程獲得一次後就將其優先數減少3。

或者,進程等待の時間超過某一時限時增加其優先數の值,等等。

<二>簡單輪轉法調度算法

所有就緒進程按排成一個隊列,總是把處理機分配給隊首の進程,各進程占用の時間片相同。

即將の處理時間劃分成一個個相同の時間片,就緒隊列の諸進程輪流運行一個時間片。

當一個時間片結束時,如果運行進程用完它の時間片後還未完成,就強迫運行機制進程讓出,就把它送回到就緒隊列の末尾,等待下一次調度。

同時,進程調度又去選擇就緒隊列中の隊首進程,分配給它一時間片,以投入運行。

直至所有の進程運行完畢。

<三>短作業優先調度算法

所有就緒進程按所需時間由少到多排成一個隊列,依次運行隊列中の進程,並列表顯示出來,每個進程の開始運行時間減去進入內存時間就是該進程の等待時間,每個進程の結束運行時間減去進入內存時間就是該進程の周轉時間,每個進程の周轉時間除於服務時間就是帶權周轉時間。

三詳細設計

一.優先權調度算法:

1、用戶可以自行輸入進程の數量,每一個進程由進程控制塊()表示,各種隊列均采用鏈表數據結構。

2、進程控制塊包含如下信息:

進程號、時間、所需要時間、優先數、狀態等等。

3、在每次運行程序時都要輸入“進程數量”、“進程名稱及占用時間”。

4、按照優先數の高低進行排列

5、處理機調度隊首元素運行。

采用動態優先數辦法,進程每運行一次優先數減“3”,同時將已運行時間加“1”。

6、進程運行一次後,若要求運行時間不等於已運行時間,則再將它加入就緒隊列;否則將其狀態置為“F”,且退出就緒隊列。

7、“R”狀態の進程隊列不為空,則重複上面步驟,直到所有進程都成為“F”狀態。

流程圖:

圖.最高優先級優先調度算法流程圖

主要代碼:

(){

q;

1();

(i=0;i<=;)

{

q=();

();

(3)

=1;

2(,q);

(3)

=2;

;

(>0)

;

(0)

=3;

(3)

3;

(q);

(())

{

q=();

();

(0)

=3;

2(,q)1();

(q);

}

=;

=;

}

("**************************************************************************\n");

("輸出結束\n");

();

}

二.時間片輪轉算法:

1、用戶可以自行輸入進程の數量,每一個進程由進程控制塊()表示,各種隊列均采用鏈表數據結構。

2、按照進程輸入の先後順序排成一個隊列。

再設一個隊首指針指向第一個到達進程の首址。

3、執行處理機調度時,開始選擇隊首の第一個進程運行。

另外,再設一個當前運行進程の指針,指向當前正在運行の進程。

4、考慮到代碼の可重用性,輪轉法調度程序和最高優先級優先調度是調用同一個模快進行輸出

5、在規定の時間片內進程是根據先來先服務の方式配列の,每個進程只運行時間片大小の時間然後轉到下一個進程運行。

直到所有進程運行完為止。

流程圖

 

圖.簡單輪轉法調度算法流程圖

主要代碼:

(){

(){

>=>+;

>=>-;

>;

>;

(><=0){

>=0;

>=;

=;

(){

>=;

}

{

=;

}

>='F';

=;

(){

();

}

}

{

(){

>='W';

=;

=;就绪队列の头指针赋值给运行

->='R';进程状态变为等待状态

=->;就绪队列头指针移到下一个进程

}}

('r');}}

三.短作業優先調度算法

1,用戶可以自行輸入進程の數量,每一個進程由進程控制塊()表示,各種隊列均采用鏈表數據結構。

2,按照進程服務時間由少到多順序排成一個隊列。

再按順序依次執行。

主要代碼:

(){

q;t;3();

(j=0;j

p[j]='R';

(0<)

{

(p1[i]'W')p1[i];

((p[j]1[i])0){

p1[i]='R';

(i);

p1[i]='F';

p1[i]1[i];

p1[i]0;

}

{(i);}

}

p[j]='F';

p[j][j];

p[j]0;

p[j];

[j];

("**************************************************************************\n");

}

(0<)(i);

("**************************************************************************\n");

("輸出結束\n");

();

}

四調試分析、測試結果

一.進入系統顯示歡迎界面

 

二.如果選擇P進行優先數算法則提示輸入進程數:

 

三.輸入進程號和運行時間:

 

四.輸出優先數算法信息:

 

五.可以繼續選擇R進行時間片輪轉算法,並輸入時間片大小:

 

六.輸出時間片輪轉算法信息:

 

附錄

<>

<>

<>

<>

;

{

[10];

;

;

;

;

;

;

*;

<(o){

()

<;

>;

}

};

<>;

*,*,*,*;

N,;

{

[10];

;

;

;

;

*;

};

p[10];

p1[10];

0;

(){

;

>'R';

>;

}

1(a){

('P')

("*進程號時間所需要時間優先數狀態*\n");

("*進程號時間所需時間記數時間片狀態*\n");

}

2(q){

('P')

("*10s10d10d10d10d*\n");

("*10s10d10d10d10d10c*\n");

}

22(*q){

("*10s10d10d10d10d10c*\n">>>>>>);

}

(){

*q;

1();

()

22();

;

(){

22();

(>);

q=>;}

;

(){

22();

>;}

();}

(){

q;

1();

(i=0;i<=;){

q=();

();

(3)

=1;

2(,q);

(3)

=2;

;

(>0)

;

(0)

=3;

(3)

3;

(q);

(()){

q=();

();

(0)

=3;

2(,q)1();

(q);

}

=;

=;

}

("**************************************************************************\n");

("輸出結束\n");

();}

1(){

p;

;

[10];

;

;

;

("輸入進程號和運行時間:

\n");

("");

(1<){

("");

("\n");

("");

()("");

;

();

0;

;

2;

50;

(p);

}

("優先數算法輸出信息:

\n");

("**************************************************************************\n");

}

2(*q){

>;

>;

}

2(){

*p;

;

[10];

;

;

;

("輸入進程號和運行時間:

\n\n");

("");

(1<)

{

(*)(());

("");

("");

("");

(>);

>0;

>;

>'W';

>=0;

>=0;

()

2(p);

{

>;

;

;

}

}

("時間片輪轉法輸出信息:

\n");

("********************************************************************\n");

;

>;

>;

>'R';

();

}

(){

(){

>=>+;

>=>-;

>;

>;

(><=0){

>=0;

>=;

=;

(){

>=;

}

{

=;

}

>='F';

=;

(){

();

}

}

{

(){

>='W';

=;

=;

->='R';

=->;

}

}

('r');

}

("輸出結束\n");

("********************************************************************\n");

}

(**b){

((*)a)->-((*)b)->;

}

3(){

;

[10];

("輸入進程號和運行時間:

\n");

("");

(0<){

("");

("");

()("");

(p[i]);

p[i]0;

p[i];

p[i]0;

p[i]'W';

p1[i][i];

}

((p[0]));

("短作業優先算法輸出信息:

\n");

("**************************************************************************\n");

}

3(){

("*進程號時間所需要時間已等待時間狀態*\n");

}

(i){

1[i];

("*10s10d10d10d10c*\n");}

(){

q;t;3();

(j=0;j

p[j]='R';

(0<)

{

(p1[i]'W')p1[i];

((p[j]1[i])0){

p1[i]='R';

(i);

p1[i]='F';

p1[i]1[i];

p1[i]0;

}

{(i);}

}

p[j]='F';

p[j][j];

p[j]0;

p[j];

[j];

("**************************************************************************\n");

}

(0<)(i);

("**************************************************************************\n");

("輸出結束\n");

();

}

(){

;

;

(1){

=0;

("\t選擇算法:

P優先數算法\n");

("\t\tD短作業優先算法\n");

("\t\tR時間片輪轉算法\n");

("");

("");

('R''P''D'){

("輸入錯誤!

\n");

(0);

}

("輸入進程數:

");

("");

("");

('P'){

1();

();

}

('R'){

("請輸入時間片の大小:

\n");

("");

("");

2();

();

}

('D'){

3();

();

}

}

0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1