作業系統實驗報告 程序排程 作業排程等

2022-10-21 09:27:10 字數 2847 閱讀 2251

作業系統實驗報告

1、程序排程

2、作業排程

3、主存空間的分配和**

4、檔案系統

學生學院______計算機學院______

專業班級____網路工程(3)班_____

學號______3107007062_____

學生姓名________張菲__ _____

指導教師_______胡欣如 _______

2009 年 12 月 20 日

計算機學院網路工程專業 3 班_____組、學號 3107007062

姓名張菲協作者無教師評定

實驗題目程序排程

一、 實驗目的

用高階語言編寫和除錯乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。

二、實驗內容和要求

編寫並除錯乙個模擬的程序排程程式,採用「簡單時間片輪轉法」排程演算法對五個程序進行排程。

每個程序有乙個程序控制塊( pcb)表示。程序控制塊可以包含如下資訊:程序名、到達時間、需要執行時間、已執行時間、程序狀態等等。

程序的到達時間及需要的執行時間可以事先人為地指定(也可以由隨機數產生)。程序的到達時間為程序輸入的時間。 程序的執行時間以時間片為單位進行計算。

每個程序的狀態可以是就緒 w(wait)、執行r(run)兩種狀態之一。

就緒程序獲得 cpu後都只能執行乙個時間片。用執行時間加1來表示。

如果執行乙個時間片後,程序的已占用 cpu時間已達到所需要的執行時間,則撤消該程序,如果執行乙個時間片後程序的已占用cpu時間還未達所需要的執行時間,也就是程序還需要繼續執行,此時應分配時間片給就緒佇列中排在該程序之後的程序,並將它插入就緒佇列隊尾。 每進行一次排程程式都列印一次執行程序、就緒佇列、以及各個程序的 pcb,以便進行檢查。

重複以上過程,直到所要程序都完成為止。

三、實驗主要儀器裝置和材料

硬體環境:ibm-pc或相容機

軟體環境:c語言程式設計環境

四、實驗原理及設計方案

1、程序排程演算法:採用多級反饋佇列排程演算法。其基本思想是:

當乙個新程序進入內在後,首先將它放入第乙個佇列的末尾,按fcfs原則排隊等待高度。當輪到該程序執行時,如能在該時間片內完成,便可準備撤離系統;如果它在乙個時間片結束時尚為完成,排程程式便將該程序轉入第二佇列的末尾,再同樣地按fcfs原則等待排程執行,以此類推。

2、實驗步驟:

(1)按先來先服務演算法將程序排成就緒佇列。

(2)檢查所有佇列是否為空,若空則退出,否則將隊首程序調入執行。

(3)檢查該執行程序是否執行完畢,若執行完畢,則撤消程序,否則,將該程序插入到下乙個邏輯佇列的隊尾。

(4)是否再插入新的程序,若是則把它放到第一邏輯佇列的列尾。

(5)重複步驟(2)、(3)、(4),直到就緒隊列為空。

五、流程圖

是是六、結果過程及截圖

初始化佇列

輸入所有程序後的程序資訊如下:

按y鍵繼續執行程序:

按y鍵繼續執行程序:

執行若干次後的狀態:

新增新的程序:

七、所遇困難的解決以及心得體會

在這個多級反饋的實驗中,我採取了用一條實際上的鍊錶佇列來模擬多個邏輯上的佇列,通過維護幾個鍊錶的狀態資訊來找到每個程序執行完後應該插入的地方,還有乙個標誌位fend用來表明新插入的佇列的位置。雖然實驗原理很簡單,但是在編寫**的過程中遇到了不少的問題,在兩個小時之內已經完成的大體**的編寫,但是之中存在不少的問題,導致了用了差不多四個小時的時間去除錯才把它弄好,這主要歸咎於在開始設計**的不太合理,在後期使得**結構有些混亂,使得除錯更加的麻煩,以及對程式設計的不熟悉。通過這個實驗不僅使我對程序的排程演算法有了更深的認識,使得理論知識得到的實踐,也使我的程式設計能力得到了進一步提高。

七、思考題

1、 分析不同排程演算法的排程策略,比較不同排程演算法的優缺點,總結它們的適用範圍。

答:動態有限權演算法:動態優先權是指在建立程序時所建立的優先權,會隨程序的推進或者等待時間的增加而改變,以便獲得更好的排程效能。

處理機為每個程序分配一定的時間片,在就緒佇列中,優先權高的程序將優先獲得處理機,程序在進去執行完響應的時間片後,如沒完成,優先權減1,從新回到就緒佇列等待分配處理機。

時間片的輪轉法:系統將所有程序排成乙個佇列,按照先來先服務的原則,對佇列首的程序進行處理,每個程序在用完自己的時間片後,從新回到隊尾進行排隊。每執行一次,程序的需要時間減1,直到就緒隊列為空!

八、源**

#include<>

#include<>

#include<>

#define getpch(type) (type*)malloc(sizeof(type))

#define null 0

#define time 2//時間片長度

typedef struct pcbpcb;

pcb *ready = null, *pinsert = null, *pfend = null,*p =null就緒佇列,程序插入位置的變數

int geti() //使使用者僅能輸入整數

while(ch != '\n')else

}return i;

}void findpos()//更新狀態量

}void insert()//插入程序

else if(ready ->queue == 1)

else

}void input()/*建立程序控制塊函式*/

}void disp(pcb *pr)/*建立程序現實函式,用於顯示當前程序*/

void check()/*建立程序檢視函式*/

}void sort()//調整程序佇列

}void addnew()//新增新的程序

{ if(ready ->queue != 1){

作業系統程序排程實驗報告

實驗一程序排程實驗 專業 xx 學號 xx 姓名 實驗日期 20xx年xx月xx日 一 實驗目的 通過對程序排程演算法的模擬加深對程序概念和程序排程演算法的理解。二 實驗要求 編寫程式實現對5個程序的排程模擬,要求至少採用兩種不同的排程演算法分別進行模擬排程。三 實驗方法內容 1.演算法設計思路 將...

作業系統程序排程實驗報告

哈爾濱工業大學電腦科學與技術學院 實驗報告 課程名稱 作業系統 課程型別 必修 實驗專案名稱 程序排程 實驗題目 先來先服務和優先順序排程的實現 班級 學號 姓名 一 實驗目的 二 實驗要求及實驗環境 由於在多道程式或多個任務系統中,系統同時處於就緒狀態的程序有若干個,即能執行的程序數遠大於處理機個...

作業系統實驗報告 單處理機系統的程序排程

實驗二單處理機系統的程序排程 一 實驗目的 1 加深對程序概念的理解,明確程序與程式的區別。2 深入了解系統如何組織程序 建立程序。3 進一步認識如何實現處理機排程。二 實驗內容 編寫程式完成單處理機系統中的程序排程,要求採用時間片輪轉排程演算法。三 實驗原理 在早期的時間片輪轉法中,系統將所有的就...