進程調度程序設計報告_第1頁
進程調度程序設計報告_第2頁
進程調度程序設計報告_第3頁
免費預覽已結束,剩余14頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、成績課程設訃報告13計算機科學與技術(單)(1)題目課程名稱院部名稱專業(yè)班級學生姓名學號課程設汁地點課程設汁學時指導教師金陵科技學院教務處制進程調度程序設汁操作系統(tǒng)課程設計計算機工程學院計算機科學與技術周敏健1305201013A10420學時何健一、課程設計的目的和要求4二、系統(tǒng)需求分析 4三、總體設計5四、詳細設計6五、測試、調試過程 9六、結論與體會 11七、參考文獻12附錄:源程序12課程設計課題進程調度程序設訃在多道系統(tǒng)中,對批處理作業(yè)需要進行作業(yè)調度。作業(yè)調度是在資源滿足的 條件下,將處于就緒狀態(tài)的作業(yè)調入內存,同時生成與作業(yè)相對應的進程,并未這 些進程提供所需要的資源。進程調度需

2、要根據(jù)進程控制塊(PCB)中的信息,檢查 系統(tǒng)是否滿足進程的資源需求。只有在滿足進程的資源需求的情況下,系統(tǒng)才能進 行進程調度。下面是兒種常見的作業(yè)調度算法:先來先服務(FCFS)、優(yōu)先算法、 輪換算法、短作業(yè)優(yōu)先算法以及最高響應比優(yōu)先法等,本文將對詢兩種算法進行詳 細的介紹。關鍵詞:進程調度,優(yōu)先級,F(xiàn)CFS, PCB,作業(yè),資源一、課程設計的目的和要求1、目的進程調度是處理機管理的核心內容。本設計要求用C語言編寫和調試一個簡 單的進程調度程序。通過設計本可以加深理解有關進程控制塊、進程隊列的概念, 并體會和了解最高優(yōu)先數(shù)優(yōu)先的調度算法(即把處理機分配給優(yōu)先數(shù)最高的進程) 和先來先服務算法的

3、具體實施辦法。2、要求1)進程調度算法:釆用最高優(yōu)先數(shù)優(yōu)先的調度算法(即把處理機分配給優(yōu)先 數(shù)最高的進程)和先來先服務算法。2)每個進程有一個進程控制塊(PCB)表示。進程控制塊可以包含如下信 息:進程名、優(yōu)先數(shù)、到達時間、需要運行時間、已用CPU時間、進程狀態(tài)等等。3)進程的優(yōu)先數(shù)及需要的運行時間可以事先人為地指定(也可以山隨機數(shù)產 生)。進程的到達時間為進程輸入的時間。進程的運行時間以時間片為單位進行 計算。4)每個進程的狀態(tài)可以是就緒W (Wait).運行R (Run)、或完成F(Finish)三種狀態(tài)之一。5)就緒進程獲得CPU后都只能運行一個時間片。用已占用CPU時間加1來表 示。如

4、果運行一個時間片后,進程的已占用CPU時間已達到所需要的運行時間, 則撤消該進程,如果運行一個時間片后進程的已占用CPU時間還未達所需要的運行 時間,也就是進程還需要繼續(xù)運行,此時應將進程的優(yōu)先數(shù)減1 (即降低一級), 然后把它插入就緒隊列等待CPUo6)每進行一次調度程序都打印一次運行進程、就緒隊列、以及各個進程的 PCB,以便進行檢查。7)重復以上過程,直到所要進程都完成為止。二、系統(tǒng)需求分析編寫一個模擬進程調度的程療;,將每個進程抽象成一個進程控制塊PCB, PCB 用一個結構體描述。采用兩種不同的調度算法來實現(xiàn)功能,主要有如下兒大功能模塊組成。(1)創(chuàng)建優(yōu)先數(shù)PCB模塊用循環(huán)來實現(xiàn)對每

5、個進程的進程名、進程優(yōu)先數(shù)(隨機分配)以及所需時間 的錄入。將進程隊列存放到就緒隊列等待執(zhí)行。(2)優(yōu)先數(shù)調度算法模塊從優(yōu)先級最高(就緒隊列的第一個進程)的開始執(zhí)行,每執(zhí)行一次優(yōu)先數(shù)減 1,并重新放入就緒隊列進行排療;,對排序完的繼續(xù)運行直到所有進程都結束。(3) FCFS創(chuàng)建PCB模塊對N個進程的信息進行輸入:進程名、到達時間、需要時間等。每輸入一個 進程,按進程的到達時間進行排序,記下前驅和后繼的方法。(4)FCFS調度算法模塊當系統(tǒng)時間與第一個進程到達時間一致時,將進程狀態(tài)置為Run,直到這個 進程執(zhí)行完,再判斷下個進程的到達時間,若系統(tǒng)時間大于下個進程的到達時間, 即上個進程的結束時間

6、就是下個進程的開始時間,反之就等待系統(tǒng)時間。進程結束 后放入完成隊列。(5)主函數(shù)及菜單顯示山主菜單進入顯示界面,進行算法選擇。三、總體設計進程是程序在處理機上的執(zhí)行過程。進程存在的標識是進程控制塊(PCB), 所謂系統(tǒng)創(chuàng)建一個進程,就是山系統(tǒng)為某個程序設置一個PCB,用于對該進程進行 控制和管理。進程任務完成,III系統(tǒng)收回其PCB,該進程便消亡。每個進程可有三 個狀態(tài):運行狀態(tài)、就緒狀態(tài)和完成狀態(tài)。因此設計三個鏈隊列,finish為完成 隊列的頭指針,wait為就緒隊列的頭指針。因為每一時刻,CPU只能運行一個進 程,所以運行隊列只有一個run指針指向當前運行的進程。考慮到處理的方便,將

7、它們設為全局變量。總體結構框架圖:四、詳細設計(1) 優(yōu)先數(shù)調度算法優(yōu)先調度算法要為每一個進程設一個優(yōu)先數(shù),它總是把處理機給就緒隊列中 具有最高優(yōu)先權的進程。常用的算法有靜態(tài)優(yōu)先權法和動態(tài)優(yōu)先權法。本程序采用 了動態(tài)優(yōu)先權法,使進程的優(yōu)先權隨時間而改變。初始的進程優(yōu)先數(shù)取決于進程運 行所需的時間,時間大,則優(yōu)先數(shù)低,所以采取了將進程優(yōu)先數(shù)定位最大的那個進 程,隨著進程的運行優(yōu)先數(shù)進行調整,每次運行時都是從就緒隊列中選取優(yōu)先數(shù)最 大的進程運行,所以將就緒隊列按照優(yōu)先數(shù)的大小從高到低排丿了;,這樣,每次取隊 頭進程即可。進程按優(yōu)先 數(shù)大小排序將進程放入 ready隊列優(yōu)先數(shù)調度舁法執(zhí)行隊列時取re

8、ady隊列 首進程送入(2)先來先服務調度算法先來先服務調度算法是按照進程進入就緒隊列的先后順序調度并分配處理機 執(zhí)行。先來先服務算法是一種不可搶占的算法,先進入就緒隊列的進程,先被處理 機運行,一旦一個進程占有了處理機,它就一直運行下去,直到該進程完成工作或 者因為等待某種事件而不能繼續(xù)運行時才釋放處理機。FCFS調度算法執(zhí)行隊列時五、測試、調試過程I4】優(yōu)先嬸法2】先來先尿務算蛙I追岀系統(tǒng)I界面匱迤運農罡他先數(shù)ii法虜:寶矚跳訥運仙間陸程弓g 樣時創(chuàng)汚考卜人革2個逹謖的名字知運行時101 閥穩(wěn)各:b犢蕃卅妙3礦4舅3個述程的名字劉運行時間 陸桂罕G序需時|fiM優(yōu)先數(shù)算法輸入各字鼾占甲CP

9、U時間鎂尋由時何訐稈占用GPU時間缶裝的時囘迄程占用cru時間需妥的時心送程占用CPU時間霧要的時|可1 Z2 209迸程占用CPU時間糞尊的時間2 1151*優(yōu)先級戟1514優(yōu)酈敢14141113優(yōu) 5t513V坎態(tài)RVV關態(tài)RVV燉RVV狀態(tài)R優(yōu)先數(shù)算法輸出FCFS算法輸入到達時間2jh*Jb2?3 b到達時閭2到達時間45開詢刖0扁澗2000開丸時間2000開埔時間7股務時闔S32服務時間32BU0充成時間0000完成時間?990完戒時間0U 狀態(tài)RUU狀態(tài)HFCFS算法輸岀遇到的問題:在設計程序時,在算法上面出現(xiàn)了一些錯誤,優(yōu)先數(shù)不是曲大到小排序,而 是應該這樣理解,當進程執(zhí)行一個時間

10、片時,優(yōu)先數(shù)減一(使用CPU的時間變少, 反而優(yōu)先級高),因此,優(yōu)先級高的優(yōu)先數(shù)應該是比較小的,而不是優(yōu)先數(shù)大的優(yōu) 先級大。在程序調試時,鏈表發(fā)生了錯誤,該內存不可寫或者就是程序直接結束, 但最終結果不是我想要的,經(jīng)過一番折騰,最后發(fā)現(xiàn),頭指針和頭結點混淆,有些 地方?jīng)]有給指針分配內存,語句的先后順序不正確,以及沒有考慮到鏈表最后沒有 設置結束標志。六、結論與體會做這個程序我斷斷續(xù)續(xù)的算下來應該總共用了 2天,主要是花時間在觀察別 人的算法讀別人的程序,然后才開始寫自己的程序,期間參考了前人的程序并進行 了改善和加工,這讓我對進程調度的理解再次加深了,這是在平常學習的基礎上, 與程序相結合的過

11、程,讓我再次感受到編程給我們帶來的無窮魅力,只要自己有興 趣,其實編程也是一件有趣的事,為了達到一定的要求,我們必須多次嘗試用不同 的方法去實現(xiàn)它,比如,進程調度有先來先服務算法,對于這個算法,可以用數(shù)組 實現(xiàn),也可以用鏈表實現(xiàn),但是到底哪個更好哪個更靈活呢,相信學過C語言的人 都知道肯定是用鏈表實現(xiàn)最好了。這次設計還是有一些不足之處的,比如在算法和 運行效率上還是有些欠缺的,需要進一步去改善程序代碼,提高效率,減少兀余和 錯誤,讓使用者更清晰的觀察和理解進程調度。七、參考文獻1 任愛華、羅曉峰.操作系統(tǒng)實用教程(第三版)M.北京:清華大學出版 社,20092 湛衛(wèi)軍、王浩娟.操作系統(tǒng)M.北京

12、:清華大學出版社,2012. 53 (日)前橋和彌(Maebasi Kazuya).征服C指針M.吳雅明譯.北 京:人民郵電出版社,2013.2附錄:源程序#include#include#include#includeSincludetime. htypedef struct nodechar name 10 ;/進程名int prio;/進程優(yōu)先數(shù)int cputime;/進程占用CPU時間int needtime;/進程到完成還要的時間int drrivetime;/進程到達時間int starttime;/進程開始時間int finishtime;/進程完成時間int servicetime;/進程服務時間char state;/進程的狀態(tài)struct node *next;PCB;PCB finish, *ready,*run;/隊列指針int N; /進程量void firstin()run二ready;/就緒隊列頭指針賦值給運行頭指針

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論