作業系統實驗報告

2022-03-10 13:52:12 字數 2081 閱讀 8559

實驗報告

一、實驗名稱

程序排程的設計與實現

二、實驗目的

1、 綜合應用下列知識點設計並實現作業系統的程序排程:鄰接表,布林數

組,非阻塞輸入,圖形使用者介面 gui,程序控制塊,程序狀態轉換,多

級反饋佇列程序排程演算法。

2、 加深理解作業系統程序排程的過程。

3、 加深理解多級反饋佇列程序排程演算法。

三、實驗內容與主要設計思想

採用一種熟悉的語言,如 c、pascal 或 c++等,編制程式,最好關鍵**採用 c/c++,介面設計可採用其它自己喜歡的語言。 每個程序對應乙個 pcb。在 pcb 中包括程序識別符號 pid、程序的狀態標識 status、程序優先順序 priority、程序的佇列指標 next 和表示程序生命週期的資料項 life(在實際系統中不包括該項)。

建立程序時即建立乙個 pcb,各個程序的 pid 都是唯一的,pid 是在1到 100 範圍內的乙個整數。可以建立乙個下標為 1 到 100 的布林陣列,"真"表示下標對應的程序標識號是空閒的,"假"表示下標對應的程序標識號已分配給某個程序。 程序狀態 status 的取值為"就緒 ready"或"執行 run",剛建立時,狀態為"ready"。

被程序排程程式選中後變為"run"。 程序優先順序 priority 是 0 到 49 範圍內的乙個隨機整數。 程序生命週期 life 是 1 到 5 範圍內的乙個隨機整數。

初始化時,建立乙個鄰接表,包含 50 個就緒佇列,各就緒佇列的程序,優先順序 priority 分別是 0 到 49。在程序排程迴圈中,每次選擇優先順序最大的就緒程序來執行。將其狀態從就緒變為執行,通過延時一段時間來模擬該程序執行乙個時間片

的過程,然後優先順序減半,生命週期減一。設計圖形使用者介面 gui,在視窗中顯示該程序和其他所有程序的 pcb 內容。如果將該執行程序的生命週期不為 0,則重新把它變為就緒狀態,插入就緒佇列中;否則該程序執行完成,撤消其 pcb。

以上為一次程序排程迴圈。

四、程式的主要流程圖

五、實驗心得

通過本實驗,我們形象地明白了系統中的程序是如何執行的。同時,在進行本實驗的過程中加強了我們對軟體編寫的能力。在編寫該實驗設計的時候遇到的問題還是比較多的。

如,我們用什麼去表示程序;在這,我想到了兩個解決方法,我們可以用結構體陣列或2維陣列作為程序的載體,因為每個程序都有三個比較重要的變數。如,如何更新螢幕中的資料;在這,我利用重繪所有的資訊來進行相關的資料更新,雖然這樣做比較綴餘,但是還是基本上能滿足我們的需求。當然,做本實驗最大的收穫是讓我們明白了系統中的程序是如何進行的。

程序的執行過程都是先執行高階別的程序,對高階別的程序執行一次,其級別作除以2處理,生命週期作減一處理,每個程序在它的生命週期減0時,表示該程序已經完成。系統會一直執行,直到所有的程序都執行完畢。

六、程式截圖

七、主要源程式清單

bool si[101]=;

struct jincheng

; jincheng jin[100];

int n;

int i,j,a,b=-1;

int k,l;

int x=10,y=20;

__fastcall tform1::tform1(tcomponent* owner)

tform(owner)

void __fastcall tform1::button1click(tobject *sender)

else

goto l1;

jin[i].pri=random(49);

jin[i].life=random(4)+1;

} for(i=49;i>=0;i--)

}}}void __fastcall tform1::button2click(tobject *sender)

}y=10;

for(i=49;i>=0;i--)

}} sleep(2000);

while(a==0)

}y=10;

for(i=49;i>=0;i--)

}} sleep(2000);}break;}

}showmessage("程式執行完畢。。");

}200806014120

08軟體吳斌

作業系統實驗報告

電腦科學與應用系 課程設計報告 作業系統原理 目錄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.理解源程式中產生和防止的演算法,及相關視窗...