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

2022-05-01 11:00:09 字數 2158 閱讀 2187

實驗目的

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

實驗要求

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

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

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

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

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

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

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

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

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

「輪轉法」有簡單輪轉法、多級反饋佇列排程演算法。

(1). 簡單輪轉法的基本思想是:

所有就緒程序按 fcfs排成乙個佇列,總是把處理機分配給隊首的程序,各程序占用cpu的時間片長度相同。如果執行程序用完它的時間片後還未完成,就把它送回到就緒佇列的末尾,把處理機重新分配給隊首的程序。直至所有的程序執行完畢。

(2). 多級反饋佇列排程演算法的基本思想是:

將就緒佇列分為n級(n=3~5),每個就緒佇列優先數不同並且分配給不同的時間片:佇列級別越高,優先數越低,時間片越長;級別越小,優先數越高,時間片越短。

系統從第一級排程,當第一級為空時,系統轉向第二級佇列,.....當處於執行態的程序用完乙個時間片,若未完成則放棄cpu,進入下一級佇列。

當程序第一次就緒時,進入第一級佇列。 

自主選擇實驗環境。可以選用turbo c作為開發環境。也可以選用windows下的視覺化環境,利用各種控制項較為方便。

#include#include

#include

#include

struct

process ;

struct process pcb[24]=;

int intput(process *pcb,int n);/*

初始化*/

void output(process *pcb,int

n);void suanfa(process *pcb,int n,int onetime);//

主演算法int isfinshed(process *pcb,int n);//

判斷是否全部作業都排程完成

int find(process *pcb,int n,int runtime);//

找最高優先順序且沒執行完的程序

intmain()

void suanfa(process *pcb,int n,int onetime)//

主演算法

if(pcb[k].usecputime*onetime>=pcb[k].m_time)

for(i=0;i)

if(i!=k&&pcb[i].r_time<=runtime&&pcb[i].condition[0]!='f'

) }}

output(pcb, n);

runtime++;

}while(isfinshed(pcb, n)!=1

);

}int isfinshed(process *pcb,int n)//

判斷是否全部作業都排程完成

if(count==n)

return0;

}int find(process *pcb,int n,int runtime)//

找最高優先順序且沒執行完的程序

}return

k;

}int intput(process *pcb,int n)/*

初始化*/

returnn;}

void output(process *pcb,int

n)

}

view code

作業系統 實驗三

分析程序爭用臨界資源的現象,學習解決程序互斥的方法。linux 程序控制 lockf 利用系統呼叫lockf fd,mode,size 對指定區域 有size指示 進行加鎖或解鎖,以實現程序的同步或互斥。其中,fd是檔案描述字 mode是鎖定方式,mode 1表示加鎖,mode 0表示解鎖 size...

作業系統實驗三

name procnque.c 程序排程模擬實驗原始碼 儲存結構鍊錶 description 實現乙個有 n級佇列的多級反饋佇列排程演算法。include stdio.h include include define getpch type type malloc sizeof type defin...

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

實驗三 程序排程模擬實驗 物聯網工程 張學玲 201306104140 一 實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。二 實驗內容和要求 實驗內容 完成兩個演算法 簡單時間片輪轉法 多級反饋佇列排程演算法 的設計 編碼和除錯工作,完成實驗報告。1 每個程序有...