實驗
一、作業排程實驗
專業:商軟二班
姓名:顏文生
學號:201406114256
一、實驗目的
(1)加深對作業排程演算法的理解;
(2)進行程式設計的訓練。
二、實驗內容和要求
用高階語言編寫乙個或多個作業排程的模擬程式。
單道批處理系統的作業排程程式。作業一投入執行,它就占有計算機的一切資源直到作業完成為止,因此排程作業時不必考慮它所需要的資源是否得到滿足,它所執行的時間等因素。
三、實驗方法、步驟及結果測試
先到先服務fcfs方法:
按照作業進入系統後背作業佇列的先後次序來挑選作業,先進入系統的作業將優先被挑選進入記憶體,建立使用者程序,分配所需資源,然後移入就緒佇列。
根據到達時間排序**如下:
void paixu_fcfs(int n)}}實驗結果截圖:}
刪除作業事例結果如下:
最短作業優先sjf方法:演算法以進入系統作業所要求的cpu執行時間的長短為標準,總是選取預計計算時間最短的作業投入執行
根據短作業優先排序**如下:
此處需要注意第乙個到達的作業不需要參與排序,因此需要找出第乙個到達的作業。
void paixu_spf(int實驗結果截圖:n) }
job[j]=job[0
]; job[
0]=min;
for(i=1;i)}}
}
完成以上各自作業排程演算法顯示開始時間,結束時間,周轉時間等資訊實現**如下:
void showprocess(int四、實驗總結1、什麼是作業n)
else
job[i].finitime = job[i].startime +job[i].reqtime;
job[i].turnaroundtime = job[i].finitime -job[i].arrtime;
printf(
"%s\t\t%d\t\t%d\t\t%d\t\t%d\t%d\n
",job[i].name,job[i].arrtime,job[i].reqtime,job[i].startime,job[i].finitime,job[i].turnaroundtime);
sum_turnaroundtime +=job[i].turnaroundtime;
sum_wturnaroundtime += (double)job[i].turnaroundtime/job[i].reqtime;
}printf(
"平均周轉時間為:%.2lf\n
",(double)sum_turnaroundtime/n);
printf(
"平均帶權周轉時間為:%.2lf\n
",(double)sum_wturnaroundtime/n);
}
作業是使用者提交給作業系統計算的乙個獨立任務。每個作業必須經過若干相對獨立且相互關聯的順序加工步驟才能得到結果,其中每個加工步驟稱為乙個作業步。
2、為了方便模擬排程過程,作業使用什麼方式的資料結構存放和表示?
使用檔案的形式存放作業名,執行時間,提交時刻等資訊,在程式中通過讀取檔案獲得資訊
**如下:
//3、作業系統中,常用的作業排程演算法有哪些?讀取檔案
intreadfile()
//printf("\n id 作業到達時間 作業執行所需要時間\n");
while(!feof(fp))
;if(fclose(fp)) //
關閉檔案
//m=i-1;
return
i;}
(1)先來先服務排程演算法(fcfs)
(2)短作業優先排程演算法(spf)
(3)最高響應比優先演算法(hrn)
(4)基於優先數排程演算法(hpf)
(5)多級佇列排程演算法
4、只完成了fcfs和spf兩個作業排程演算法,理解了這兩種演算法的排程機制。
作業系統 作業排程(高階排程)
乙個典型的作業可分成三個作業步 1.編譯 作業步 2.鏈結裝配 作業步 3.執行 作業步。在多道批處理系統中通常有上百個作業,為了管理和排程作業,系統為每個作業設定了乙個作業控制塊 jcb 它記錄該作業的有關資訊。不同系統的 jcb的組成內容有所區別。jcb 是作業在系統中存在的唯一標誌。作業進入系...
作業系統的作業排程
作業 job 是作業系統中乙個常見的概念,所謂作業是指使用者在一次計算過程或者事務處理過程中,要求計算機系統所作工作的集合。所謂作業排程是指按照某種原則,從後備作業佇列中選取作業進入記憶體,並為作業做好執行前的準備工作以及作業完成後的善後處理工作。設計作業排程演算法時應達到如下目標 1 某段時間內盡...
作業系統,作業排程演算法參考
作業系統,作業排程演算法參考 include include include include include include include using namespace std const int n 1000 struct task task n tp task n int num 程序數目 ...