一、 課程設計目的
1、 程序排程是處理機管理的核心內容。
2、 本設計要求用c語言編寫和除錯乙個簡單的程序排程程式。
3、 通過設計本可以加深理解有關程序控制塊、程序佇列的概念,並體會和了解最高優先數優先的排程演算法(即把處理機分配給優先數最高的程序)和先來先服務演算法的具體實施辦法。
二、 課程設計主要內容
1、 專案名稱
設計乙個有 n個程序共行的程序排程程式
2、 實驗裝置及環境:
軟體要求:windows nt 系列作業系統,vc、vb、turbo c等多種程式設計開發工具。
硬體要求:p4 2.0以上cpu、256m、40g硬碟。
3、 課程設計型別
綜合設計型
4、 課程設計內容與要求
1)程序排程演算法:採用最高優先數優先的排程演算法(即把處理機分配給優先數最高的程序)和先來先服務演算法。
2)每個程序有乙個程序控制塊( pcb)表示。程序控制塊可以包含如下資訊:程序名、優先數、到達時間、需要執行時間、已用cpu時間、程序狀態等等。
3)程序的優先數及需要的執行時間可以事先人為地指定(也可以由隨機數產生)。程序的到達時間為程序輸入的時間。 程序的執行時間以時間片為單位進行計算。
4)每個程序的狀態可以是就緒 w(wait)、執行r(run)、或完成f(finish)三種狀態之一。
5)就緒程序獲得 cpu後都只能執行乙個時間片。用已占用cpu時間加1來表示。如果執行乙個時間片後,程序的已占用 cpu時間已達到所需要的執行時間,則撤消該程序,如果執行乙個時間片後程序的已占用cpu時間還未達所需要的執行時間,也就是程序還需要繼續執行,此時應將程序的優先數減1(即降低一級),
然後把它插入就緒佇列等待cpu。
6)每進行一次排程程式都列印一次執行程序、就緒佇列、以及各個程序的 pcb,以便進行檢查。
7)重複以上過程,直到所要程序都完成為止。
5、 課程設計方法及步驟
1)充分了解各項設計要求。深入理解有關程序控制塊、程序佇列的概念,並體會和了解最高優先數優先的排程演算法(即把處理機分配給優先數最高的程序)和先來先服務演算法的具體實施辦法。
2)按要求對程序排程程式進行分解,根據功能將其分解成多個子模組。
3)建立主控模組程式流程圖及各功能子模組程式流程圖,要求條理清楚、簡單明瞭、功能完備。
4)根據流程圖編制主程式**及子程式**。要求程式設計結構清晰,簡潔,便於修改和除錯。
5)設計完成後,上機進行執行除錯。
6)程式執行成功後,進行某些功能測試,選擇有實用性、特殊性的資料進行錄入除錯,使設計進一步得到改進並完善。
7)列印出程式執行結果,並對結果進行分析,驗證程式設計的正確性。
8)寫出課程設計報告書。
6、 **及流程圖(要求每個模組有功能說明,關鍵指令後有注釋;主要模組畫出流程圖)
1)程式**如下:
#include
#include
#include
#define getpch(type) (type*)malloc(sizeof(type))
#define null 0
struct pcb *ready=null/*表示當前程序的鍊錶指標*/,*p/*表示插入程序的指標*/;
typedef struct pcb pcb;
paixu() /* 建立最高優先順序排程演算法函式*/
else /* 比較程序優先順序,插入適當的位置中*/
if(insert==0) first->next=p; /* 插入程序優先數最低,則插入到隊尾*/
}}input() /* 建立程序函式*/
}disp(pcb * pr) /*建立程序顯示函式*/
check() /* 建立程序檢查函式 */
}destroy() /*建立程序撤消函式(程序執行結束,撤消程序)*/
running() /* 建立程序執行函式*/
}main() /*主函式*/
printf("\n\n processes are finished!\n");
ch=getchar();
}_2)各模組流程圖如下
主函式main:ny
npaixu函式:
n yyn
7、 程式執行結果及分析
執行結果如下:
若程序數為2,分別是:程序p1,優先數 3,cpu所需時間 4;程序p2 優先數4,cpu所需時間 6
分析:兩個程序p2優先順序最高,先執行,執行狀態為『r』,p1進入就緒狀態『w』
分析:p2執行後優先順序-1,執行時間+1,比較優先順序和所需時間,執行p1
依次類推
分析:執行到needtime=runtime,super= - 1,所有程序結束,執行次數為11。
在除錯程式中判斷優先順序排程演算法的函式最容易出錯,考慮不完善時不知道什麼時候插入隊首、隊中、隊尾,引入變數insert就是解決一問題。
三、 課程設計總結
1、 本次設計採用最高優先數優先排程演算法,它的基本思想是把cpu分配給就緒佇列中優先數最高的程序。靜態優先數是在建立程序時確定的,並在整個程序執行期間不再改變。動態優先數是指程序的優先數在建立程序時可以給定乙個初始值,並且可以按一定原則修改優先數。
例如:在程序獲得一次cpu後就將其優先數減少1。或者,程序等待的時間超過某一時限時增加其優先數的值,等等 。
作業系統課程設計報告
上海電力學院 計算機作業系統原理 課程設計報告 題目名稱 編寫程式模擬虛擬儲存器管理 姓名 杜志豪 學號 20121798 班級 2012053班 同組姓名 孫嘉軼 課程設計時間 2014.6.30 2014.7.4 評語成績 一 設計內容及要求4 1.1 設計題目4 1 2 使用演算法分析4 1 ...
作業系統課程設計報告
作業系統 課程設計報告 姓名吳昊學號 20091811042 系別資訊管理與工程系 專業電腦科學與技術班級 09級 課程設計題目模擬檔案管理系統 指導教師崔新會 小組成員吳昊 丁強強 辛夢娟 王放 周洋 2012 年 6 月 11 日 目錄 內容摘要 2 第一章引言 2 第二章需求分析 4 第三章系...
作業系統課程設計報告
課程設計說明書 設計名稱 作業系統課程設計 題目 檔案訪問介面設計 學生姓名 陳小浪 專業 電腦科學與技術 班級 12級1班 學號 2012314118 指導教師 任朝暉 日期 2014 年 9 月 15 日 課程設計任務書 電腦科學與技術專業年級班 一 設計題目 檔案訪問介面設計 二 主要內容 利...