作業系統課程設計報告

2021-03-14 14:46:50 字數 2616 閱讀 3990

一、 課程設計目的

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 日 課程設計任務書 電腦科學與技術專業年級班 一 設計題目 檔案訪問介面設計 二 主要內容 利...