1203 實驗三 程序排程模擬實驗

2022-08-17 03:30:11 字數 2894 閱讀 5179

實驗三 程序排程模擬實驗

物聯網工程   張學玲  201306104140

一、實驗目的

用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。

二、實驗內容和要求

實驗內容

完成兩個演算法(簡單時間片輪轉法、多級反饋佇列排程演算法)的設計、編碼和除錯工作,完成實驗報告。

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

2) 每個程序的狀態可以是就緒 r(ready)、執行r(running)、或完成f(finished)三種狀態之一。

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

4) 如果執行乙個時間片後,程序的已占用 cpu時間已達到所需要的執行時間,則撤消該程序,如果執行乙個時間片後程序的已占用cpu時間還未達所需要的執行時間,也就是程序還需要繼續執行,應把它插入就緒佇列等待下一次排程。

5) 每進行一次排程,程式都列印一次執行程序、就緒佇列中各個程序的 pcb,以便進行檢查。   

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

實驗要求

設計乙個有 n(n不小於5)個程序併發執行的程序排程模擬程式。

程序排程演算法:「時間片輪轉法」排程演算法對n個程序進行排程。

三、實驗方法、步驟及結果測試

1.源程式名:壓縮包檔案(rar或zip)中源程式名:zxl3.c

可執行程式名:zxl3.exe

2.原理分析及流程圖

主要總體設計問題(包括儲存結構,主要演算法,關鍵函式的實現等)

1.設定乙個程序控制塊(pcb)以儲存程序的資訊,包括程序名、優先順序、到達時間、需要執行時間、已用時間以及程序狀態;

2.用於輸入程序的函式input(),當輸入程序不足5個時會要求繼續輸入;

3.用於對輸入完成的程序排序的函式sort(),先按照程序的優先順序進行排序;

4.用於列印程序的函式print(),將已經排序完的程序列印出來;

5.用於處理程序的函式attemper(),將優先順序較高的程序先處理乙個時間片,然後按照順序繼續執行;

6.用於選擇功能的函式select();

7.main()函式。

3.主要程式段及其解釋:

實現主要功能的程式段,重要的是程式的注釋解釋。

#include

#define max 50

typedef struct job

pcb;

int n=0;

pcb pcb[max];

int ptime; //時間片

void input()

while(ch!='y'&&ch!='n'&&ch!='y'&&ch!='n');

}while(ch=='y'||ch=='y');

}while(n<5);

}void sort()}}

if(pcb[0].state!='f')

}void print()

else                       //已完成的程序

print();

}while(pcb[0].state!='f');

}char select()

while(select!='0'&&select!='1'&&select!='2');

return select;

}void main()

if(choose=='1')

if(choose=='2')

choose=select();

}while(1);

}4.執行結果及分析

一般必須配執行結果截圖,結果是否符合預期及其分析。

當程序不足5個時自動繼續要求輸入:

當程序滿5個後,可以退出也可以繼續輸入:

排序:

程序處理:

四、實驗總結

在實驗過程中,我想用乙個確定的值來迴圈輸入程序的有關資料,但是這樣顯示不出程序名和狀態,而且程序的顯示也會出錯,所以用do-while來邊輸入邊確定值。這個程式是借鑑其他的程式來完成的,最重要的是要理解簡單時間片輪轉法、多級反饋佇列排程演算法的思想。

實驗三 程序模擬排程

實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。實驗要求 設計乙個有 n n不小於5 個程序併發執行的程序排程模擬程式。程序排程演算法 時間片輪轉法 排程演算法對n個程序進行排程。完成兩個演算法 簡單時間片輪轉法 多級反饋佇列排程演算法 的設計 編碼和除錯工作,完...

實驗三 程序排程模擬程式實驗

1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序最高的程序 和先來先服務 若優先順序相同 演算法。1...

1203《作業系統教程》實驗三 程序排程模擬程式

實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。實驗要求 設計乙個有 n n不小於5 個程序併發執行的程序排程模擬程式。程序排程演算法 時間片輪轉法 排程演算法對n個程序進行排程。完成兩個演算法 簡單時間片輪轉法 多級反饋佇列排程演算法 的設計 編碼和除錯工作,完...