實驗2、第二次實驗
一、實驗目的
用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。
二、實驗內容和要求
設計乙個有 n個程序併發執行的程序排程模擬程式。
程序排程演算法:採用最高優先順序優先的排程演算法(即把處理機分配給優先順序最高的程序)和先來先服務(若優先順序相同)演算法。
(1). 每個程序有乙個程序控制塊(pcb)表示。程序控制塊包含如下資訊:程序名、優先順序、到達時間、需要執行時間、已用cpu時間、程序狀態等等。
(2). 程序的優先順序及需要的執行時間可以事先人為地指定,程序的執行時間以時間片為單位進行計算。
(3). 每個程序的狀態可以是就緒 r(ready)、執行r(running)、或完成f(finished)三種狀態之一。
(4). 就緒程序獲得 cpu後都只能執行乙個時間片。用已占用cpu時間加1來表示。
(5). 如果執行乙個時間片後,程序的已占用 cpu時間已達到所需要的執行時間,則撤消該程序,如果執行乙個時間片後程序的已占用cpu時間還未達所需要的執行時間,也就是程序還需要繼續執行,此時應將程序的優先數減1(即降低一級),然後把它插入就緒佇列等待排程。
(6). 每進行一次排程程式都列印一次執行程序、就緒佇列中各個程序的 pcb,以便進行檢查。
(7). 重複以上過程,直到所要程序都完成為止。
實驗方法、步驟及結果測試
**:
#include
#define n 100
typedef struct process
p;p a[n],b;
int wordtime=0;
void rank(int n)//程序呼叫演算法
else
}else
break;
}for(i=0;ia[i].arrivetime&&wordtime>a[j].arrivetime)
}if(t==1)
return 1;
}else
return 0;
}void main()
//輸入資料
for(i=0;ia[i].level)}}
}//排序
for(i=0;ifor(i=0;iwordtime-1)
else
rank(n);//調整程序優先順序
for(i=0;i
具體過程:
三、實驗總結
難在演算法過程,有多種不同情況需要出現,寫演算法時會麻煩,要多注意各種情況的產生並完善演算法,其他就沒有什麼難度了
C 第二次試驗 ATM模擬
一 問題及 檔名稱 atm模擬 作 者 袁依夢 完成日期 2016 年 3 月 24 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 輸入密碼 輸入需求服務 問題描述 程式輸出 銀行服務 問題分析 演算法設計 includevoid main int password,a couti...
c 第二次試驗
一 問題及 二 執行結果 三 心得體會 四 知識點總結 檔名稱 abc 作 者 張蘭添 完成日期 2016年3月24日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 輸入乙個數 問題描述 分段函式求值 程式輸出 分段函式在不同情況下的函式值 問題分析 演算法設計 三 心得體會 能慢慢地...
第二次試驗
一.問題及 檔名稱 第二次作業 作 者 周亮 完成日期 2016 年 3 月 24 日 版 本 號 v1.0 對任務及求解方法的描述部分 求標準體重 輸入描述 體重,標準體重,n 體重 標準體重 問題描述 問題分析 演算法設計 include using namespace std void mai...