模擬程序管理 c 超強

2022-09-15 14:39:02 字數 3336 閱讀 8858

作業系統課程設計任務書

一、設計題目:模擬程序管理

二、設計目的

《作業系統原理》課程設計是軟體工程專業實踐性環節之一,是學習完《作業系統原理》課程後進行的一次較全面的綜合練習。其目的在於加深對作業系統的理論、方法和基礎知識的理解,掌握作業系統結構、實現機理和各種典型演算法,系統地了解作業系統的設計和實現思路,培養學生的系統設計能力,並了解作業系統的發展動向和趨勢。

三、設計要求

(1)選擇課程設計題目中的乙個課題,獨立完成。

(2)良好的溝通和合作能力

(3)充分運用前序課所學的軟體工程、程式設計等相關知識

(4)充分運用除錯和排錯技術

(5)簡單測試驅動模組和樁模組的編寫

(6)查閱相關資料,自學具體課題中涉及到的新知識。

(7)課題完成後必須按要求提交課程設計報告,格式規範,內容詳實。

四、設計內容

1.根據設計題目的要求,充分地分析和理解問題,明確問題要求做什麼。

2.根據實現的功能,劃分出合理的模組,明確模組間的關係。

3.程式設計實現所設計的模組。

4.程式除錯與測試。採用自底向上,分模組進行,即先除錯低層函式。

能夠熟練掌握除錯工具的各種功能,設計測試資料確定疑點,通過修改程式來證實它或繞過它。除錯正確後,認真整理源程式及其注釋,形成格式和風格良好的源程式清單和結果;

5.結果分析。程式執行結果包括正確的輸入及其輸出結果和含有錯誤的輸入及其輸出結果。

6.編寫課程設計報告;

設計報告要求:a4紙,詳細設計部分主要敘述本人的工作內容

設計報告的格式:

(1)封面(題目、指導教師、專業、班級、姓名、學號)

(2)設計任務書

(3)目錄

(4)需求分析

(5)概要設計

(6)詳細設計(含主要**)

(7)除錯分析、測試結果

(8)使用者使用說明

(9)附錄或參考資料

五、課程設計工作量

由於是設計小組團結協作完成設計任務,一般每人的程式量在100行有效程式行左右,不得抄襲。

六、課程設計工作計畫

設計在學期的第15、16周進行,時間安排如下:

指導教師簽章

教研室主任簽章

作業系統課程設計指導教師評語與成績

目錄一需求分析 6

二概要設計 6

三詳細設計(含主要**) 6

四除錯分析、測試結果 12

五使用者使用說明 14

六後記 14

七參考資料 14

在多道處理程式執行環境下,程序數目一般多於處理機數目,使得程序要通過競爭來使用處理機。這就要求系統能按照某種演算法,動態地把處理機分配給就緒佇列中的乙個程序,使之執行,分配處理機的任務是由金城排程程式完成的。乙個程序被建立後,系統為了便於對程序進行管理,將系統中的所有程序按照其狀態,將其組成不同的程序佇列。

於是系統中有執行程序佇列、就緒佇列和各種事件的程序等待佇列。程序排程的功能就是從就緒佇列中挑選乙個程序到處理機上執行。程序排程的演算法有多種,常用的有優先順序排程演算法、先來先服務演算法、時間片輪轉演算法。

《一》最高優先順序優先排程演算法

動態優先數是指在程序建立時先確定乙個初始優先數, 以後在程序執行中隨著程序特性的改變不斷修改優先數,這樣,由於開始優先數很低而得不到cpu的程序,就能因為等待時間的增長而優先數變為最高而得到cpu執行。

例如:在程序獲得一次cpu後就將其優先數減少3。或者,程序等待的時間超過某一時限時增加其優先數的值,等等。

《二》簡單輪轉法排程演算法

所有就緒程序按 fcfs排成乙個佇列,總是把處理機分配給隊首的程序,各程序占用cpu的時間片相同。即將cpu的處理時間劃分成乙個個相同的時間片,就緒佇列的諸程序輪流執行乙個時間片。當乙個時間片結束時,如果執行程序用完它的時間片後還未完成,就強迫執行機制程序讓出cpu,就把它送回到就緒佇列的末尾,等待下一次排程。

同時,程序排程又去選擇就緒佇列中的隊首程序,分配給它一時間片,以投入執行。直至所有的程序執行完畢。

《三》短作業優先排程演算法

所有就緒程序按所需時間由少到多排成乙個佇列,依次執行佇列中的程序,並列表顯示出來,每個程序的開始執行時間減去進入記憶體時間就是該程序的等待時間,每個程序的結束執行時間減去進入記憶體時間就是該程序的周轉時間,每個程序的周轉時間除於服務時間就是帶權周轉時間。

一.優先權排程演算法:

1、使用者可以自行輸入程序的數量,每乙個程序由程序控制塊( pcb)表示,各種佇列均採用鍊錶資料結構。

2、 程序控制塊包含如下資訊:程序號、cpu時間、所需要時間、優先數、狀態等等。

3、 在每次執行程式時都要輸入「程序數量」、「程序名稱及占用時間」。

4、 按照優先數的高低進行排列

5、 處理機排程隊首元素執行。採用動態優先數辦法,程序每執行一次優先數減「3」,同時將已執行時間加「1」。

6、 程序執行一次後,若要求執行時間不等於已執行時間,則再將它加入就緒佇列;否則將其狀態置為「f」,且退出就緒佇列。

7、 「r」狀態的程序佇列不為空,則重複上面步驟,直到所有程序都成為「f」狀態。

流程圖:

圖.最高優先順序優先排程演算法流程圖

主要**:

void priority(char algo)

pq = pp;

pp = pqempty;

}printfn");

printf輸出結束\n");

getchar();

}二.時間片輪轉演算法:

1、 使用者可以自行輸入程序的數量,每乙個程序由程序控制塊( pcb)表示,各種佇列均採用鍊錶資料結構。

2、 按照程序輸入的先後順序排成乙個佇列。再設乙個隊首指標指向第乙個到達程序的首址。

3、 執行處理機排程時,開始選擇隊首的第乙個程序執行。另外,再設乙個當前執行程序的指標,指向當前正在執行的程序。

4、 考慮到**的可重用性, 輪轉法排程程式和最高優先順序優先排程是呼叫同乙個模快進行輸出

5、 在規定的時間片內程序是根據先來先服務的方式配列的,每個程序只執行時間片大小的時間然後轉到下乙個程序執行。直到所有程序執行完為止。

流程圖圖. 簡單輪轉法排程演算法流程圖

主要**:

void roundrun(int timeslice)}

三.短作業優先排程演算法

1,使用者可以自行輸入程序的數量,每乙個程序由程序控制塊( pcb)表示,各種佇列均採用鍊錶資料結構。

2,按照程序服務時間由少到多順序排成乙個佇列。再按順序依次執行。

主要**:

void short_timefirst(char algo){

pc q; int t; prt3();

for(int j = 0; j< n ; j++) {

p[j].state = 'r';

c語言程序設計模擬試題A

專業班級學號姓名 一 單選題 15分 1 若有定義 int a 8,b 5,c 執行語句c a b 0.4 後,c的值為 a 1.4 b 1 c 2.0 d 2 2 以下程式中,while 迴圈的次數是include void main void example a struct結構體型別的關鍵字b...

C語言程序

1 請編寫函式fun,對長度為7個字元的字串,除首 尾字元外,將其餘5個字元按降序排列。例如,原來的字串為ceaedca,排序後輸出為cedceaa。參考 include include include int fun char s,int num main 2 請編一函式void fun int ...

C語言程序設計

1.有以下程式 main 執行後輸出結果是 5,6 解析函式strlen 用於計算字串的長度,所給的字串s中,n 是轉義字元,代表乙個 換行 符,表示乙個反斜槓字元 所以字串s的長度為5 sizeof 函式是用來計算字串所佔記憶體的位元組數,5個字元在記憶體中佔5個位元組,由於c規定,在每乙個字串末...