作業系統演算法模擬例項之單處理機系統程序排程

2021-09-24 11:54:49 字數 1818 閱讀 4513

1.實驗目的

在多道程式或多工系統中,系統回時處於就緒態的程序有若干個,為使系統中

的各程序能有條不素地執行,必須選擇某種排程策略,以選擇一程序占用處理機。

要求學生設計乙個模擬單處理機排程演算法,以鞏固和加探對進念和程序排程演算法的理解。

2.實驗內容

編寫程式完成單處理機系統中的程序排程,要求採用最高優先順序優先排程演算法。具體內容包括

3.實驗指導

程序排程演算法:

採用最高優先順序優先排程演算法(即把處理機分配給優先順序最高的程序)和先來先服務排程演算法,每個程序用乙個程序控制塊(pcb)表示,程序控制塊可以包含以下資訊:程序名、優先數、到達時間、需要執行時間、已用cpu時間,程序狀態等。程序的優先數(表示優先級別)及需要的執行時間可以事先人為描定(也可以隨機數產生),程序的到達時間為程序輸入的時間。程序的執行時間以時間片為單位。

每個程序的狀態可以是就緒w(wait),執行r(run)或完成f( finish)三種狀態之就緒程序獲得cpu後都只能執行乙個時間片,用已占用cpu時間加1來表示,如果執行乙個時間片後,程序的已占用cpu時間已達到所需要的執行時間,則激銷該程序,如果執行乙個時間片後程序的已占用cpu時間還未達到所需要的執行時間,也就是程序還需要繼續執行,此時應將程序的優先數減1(即降低一級),然後把它插入就緒佇列等待cpu。

每進行一次,排程程式都列印一次執行程序,就緒佇列以及各個程序的pcb,以假進

行檢查。重複以上過程,直到所有程序都完成為止。

4.程式例項

#include

"stdio.h"

#include

#include

#define getpch(type)(type *)malloc(sizeof(type))

struct pcb //定義程序控制塊

*ready=

null

,*p;

typedef

struct pcb pcb;

intsort()

//建立對程序進行優先順序排列的函式

else

//程序比較優先順序,插入適當的位置中

else

//插入程序優先級數最低,則插入到隊尾}if

(insert==

0) first->link=p;}}

/* 說明:上述程式首先定義程序控制塊結構,然後對每個程序的優先順序賦初值,完成

優先順序的排序過程,把優先順序大的程序插入就緒隊首,等待cup排程,該實驗完成了

優先順序大者優先排程的原則,從而對程序排程過程加深理解和掌握

*/int

input()

//建立程序控制塊函式

}int

space()

return

(l);

}int

disp

(pcb *pr)

intcheck()

//程序檢視函式

}int

destroy()

//建立程序撤銷函式(程序執行結束,撤銷程序)

已完成.\n"

,p->name )

;free

(p);

}int

running()

//建立程序就緒函式(程序執行時間到,置就緒狀態)

}int

main()

printf

("\n\n程序已經完成.\n");

ch=getchar()

;}

作業系統單處理機排程演算法

在沒有進行程序排程之前,乙個程序始終允許以最大化cpu利用率執行。這種想法比較簡單。也存在時間浪費的問題。比如乙個程序如果要等待i o請求,那麼此時的cpu資源處於空閒狀態,如果沒有搶占或者排程,其他程式就算是計算密集型也要一直等待這個程序請求i o完成並執行結束才可以占用cpu資源。因此,程序排程...

作業系統 處理機管理

計算機的核心是cpu,首先作業系統講的就是對處理器的管理。在處理器管理當中都講了些什麼呢?當然是需要操作需要管理的東西。處理器是用來處理程序的,程序通俗的講就是要幹的活兒。並且處理器屬於獨佔型資源,同一時刻只能處理一件事情。為了能夠讓處理器的利用率發揮到最高,就出現了處理器管理,貌似有點像個人管理,...

作業系統 處理機排程概念

乙個作業被提交後,必須經過處理機排程,才能獲得處理機執行,通常經過三個排程 高階排程 高階排程,長程排程 中級排程 中程排程 低階排程 短程排程 根據某種演算法,把外村上處於後備佇列中的那些作業調入記憶體,排程物件是作業 就是一些程式,資料,還有一些作業說明書。作業需要執行哪些步驟執行完。每乙個步驟...