深圳大學實驗報告
課程名稱作業系統
實驗專案名稱程序排程
學院軟體學院
專業軟體工程
指導教師梁正平
報告人: 文成學號: 2011150259 班級: 2
實驗時間2013. 04. 27
實驗報告提交時間: 2013. 04. 30
教務處制
一. 實驗目的
模擬在單處理器多程序情況下的處理器排程,幫助學生加深了解處理器排程的工作。該實驗為模擬實驗,不要求建立真正的程序排程。主要目的是編寫程式模擬排程即可。
1、 編寫並除錯乙個模擬的程序排程程式,採用「最高優先數優先」排程演算法對程序進行排程。 「最高優先數優先排程演算法的基本思想是把cpu分配給就緒佇列中優先數最高的程序。嘗試靜態優先數與動態優先數兩種方法:
a) 靜態優先數是指優先數在整個程序執行期間不再改變。優先數可以在資料輸入時指定,也可以根據到達順序、執行時間確定。
b) 動態優先數是指程序的優先數在建立程序時可以給定乙個初始值,並且可以按一定原則修改優先數。例如程序獲得一次cpu後就將其優先數減少1。或者程序等待的時間超過某一時限時增加其優先數的值。
2、 編寫並除錯乙個模擬的程序排程程式,模擬實現多級反饋佇列排程演算法。
3、 編寫並除錯乙個模擬的程序排程程式,模擬實現最低鬆弛度優先演算法。
二. 實驗要求
程式與報告要求:
a) 對上述要求1、2、3,至少要完成一項,鼓勵嘗試多種演算法。
b) 輸出結果要盡量詳細清晰,能夠反映排程後佇列變化,pcb內部變化。
c) 可以選擇在windows或linux環境下編寫、執行程式
d) 鼓勵使用不同的開發工具在不同平台環境上進行開發比較。
在實驗報告中,一方面可以對實驗結果進行分析,一方面可以對各種演算法進行比較,分析它們的優劣,說明各種演算法適用於哪些情況下的排程。
三. 方法、步驟
實驗方法:
統一利用例程中程式的功能和實現過程,進行修改並調式。
實驗步驟:
1. 按照實驗指導的例程,在windows下執行virsual c++6.0。
2. 按照實驗要求編寫程式,內容在下面會有提及。
3. 執行並除錯編寫好的程式,測試其運作過程及結果。
得出實驗結論。
四. 實驗過程及內容
1、 設計乙個有 n個程序共行的程序排程程式。
2、 每個程序有乙個程序控制塊pcb來表示,程序控制塊的格式為:
a) 程序優先數、需要執行時間、到達時間可以事先人為地指定,也可以隨機產生,注意初始化上述數值時要盡量使程序併發執行,而不是按到達時間順序排程。
b) 程序的執行時間以時間片為單位進行計算。
c) 程序狀態分為就緒、執行、完成三種狀態之,分別用w、r、f表示。
3、 程序排程規則如下:
a) 就緒程序獲得 cpu後都只能執行乙個時間片。用已占用cpu時間加1來表示。
b) 如果執行乙個時間片後,程序已占用 cpu時間達到所需要執行時間,則程序完成,撤銷該程序。
c) 如果執行乙個時間片後,程序已占用cpu時間還未達到所需要執行時間,即程序需要繼續執行,將它插入就緒佇列,佇列重新排序,等待cpu。
d) 重複以上過程,直到所要程序都完成為止。
4、演算法流程圖如下:
五. 源程式清單
選擇實現先來先服務和短作業優先演算法
#include<>
#include<>
#define number 5
void main()
cout<<"請依次輸入各個程序的服務時間,並以空格間隔:";
for(i=0;i
cout<<"請輸入n=1選擇fcfs或者n=2選擇sjf或者n=3同時呼叫fcfs和sjf,n=";
cin>>n;
while(n<1||n>3)
struct statedd //宣告結構
;statedd process[number];
int timeflyf=0,timeflys=0;//定義兩個類似於秒錶的變數
int j,k,l,nextprof,nextpros;
// 獲取資料
for(i=0;i
// 獲取最先到達的程序下標first
int first=0;
l=first;
for(i=1;i
process[first].donef=true;
process[first].dones=true;
process[first].wancheng = process[first].fuwu + process[first].daoda;
process[first].wan = process[first].fuwu + process[first].daoda;
timeflyf += process[first].daoda+process[first].fuwu;
timeflys += process[first].daoda+process[first].fuwu;
// 接下去到達的程序
// fcfs
for(j=1;j // circle2
// sjf
for(j=1;j // circle2
float fz=0,fdq=0,sz=0,sdq=0;//
for(i=0;i
作業系統實驗報告
電腦科學與應用系 課程設計報告 作業系統原理 目錄1 題目簡述 2 2 需求分析 2 2.1設計思想 2 2.2要求 2 2.3任務 3 2.4執行環境 3 2.5開發工具 3 3 概要設計與詳細設計 3 3.1系統流程圖 3 3.2演算法流程圖 5 4 編碼與實現 10 4.1資料結構和演算法設計...
作業系統實驗報告
2014 2015 學年第 2 學期 系別計算機學院 專業電腦科學與技術 班級 2014級專公升本 姓名蔡圓圓 學號 1410211014 授課老師趙群禮 實驗一 熟悉linux基本命令及程式設計環境 實驗總結 編寫程式 gedit編輯器 編寫程式 c 存放 gcc linux c程式編譯工具 當前...
作業系統實驗報告
實驗名稱 哲學家就餐問題 班級 通訊1202班 學號 u201213584 姓名 趙越 指導老師 許毅平 一 實驗目的 1.熟練使用vc 6.0編譯環境,除錯並正確執行程式,更加熟練地利用c語言解決問題 2.了解哲學家就餐的基本原理,掌握死鎖的必要條件。3.理解源程式中產生和防止的演算法,及相關視窗...