C語言模擬程序第二次試驗

2022-09-14 03:54:06 字數 1942 閱讀 3626

實驗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...