C语言模拟进程管理 下载本文

内容发布更新时间 : 2024/5/2 21:16:17星期一 下面是文章的全部内容请认真阅读。

操作系統課程設計報告

目 錄

一 需求分析 ............................................................................................... 2 二 概要設計 ............................................................................................... 2 三 詳細設計(含主要代碼) .................................................................. 2 四 調試分析、測試結果 .......................................................................... 8 五 用戶使用說明.................................................... 错误!未定义书签。 六 後記 .................................................................... 错误!未定义书签。 七 參考資料 ............................................................ 错误!未定义书签。

一 需求分析

在多道處理程序運行環境下,進程數目一般多於處理機數目,使得進程要通過競爭來使用處理機。這就要求系統能按照某種算法,動態地把處理機分配給就緒隊列中の一個進程,使之運行,分配處理機の任務是由金城調度程序完成の。一個進程被創建後,系統為了便於對進程進行管理,將系統中の所有進程按照其狀態,將其組成不同の進程隊列。於是系統中有運行進程隊列、就緒隊列和各種事件の進程等待隊列。進程調度の功能就是從就緒隊列中挑選一個進程到處理機上運行。進程調度の算法有多種,常用の有優先級調度算法、先來先服務算法、時間片輪轉算法。

二 概要設計

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

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

例如:在進程獲得一次CPU後就將其優先數減少3。或者,進程等待の時間超過某一時限時增加其優先數の值,等等。 <二>簡單輪轉法調度算法

所有就緒進程按 FCFS排成一個隊列,總是把處理機分配給隊首の進程,各進程占用CPUの時間片相同。即將CPUの處理時間劃分成一個個相同の時間片,就緒隊列の諸進程輪流運行一個時間片。當一個時間片結束時,如果運行進程用完它の時間片後還未完成,就強迫運行機制進程讓出CPU,就把它送回到就緒隊列の末尾,等待下一次調度。同時,進程調度又去選擇就緒隊列中の隊首進程,分配給它一時間片,以投入運行。直至所有の進程運行完畢。 <三>短作業優先調度算法

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

三 詳細設計

一.優先權調度算法:

1、用戶可以自行輸入進程の數量,每一個進程由進程控制塊( PCB)表示,各種隊

列均采用鏈表數據結構。

2、 進程控制塊包含如下信息:進程號、cpu時間、所需要時間、優先數、狀態 等

等。

3、 在每次運行程序時都要輸入“進程數量”、“進程名稱及占用時間”。 4、 按照優先數の高低進行排列 5、 處理機調度隊首元素運行。采用動態優先數辦法,進程每運行一次優先數減“3”,

同時將已運行時間加“1”。

6、 進程運行一次後,若要求運行時間不等於已運行時間,則再將它加入就緒隊列;

否則將其狀態置為“F”,且退出就緒隊列。

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

流程圖: