1. 程式人生 > >基於java的程序排程演算法

基於java的程序排程演算法

在作業系統課上的一點小感想,基於java的程序排程演算法,分享出來和大家一起學習。

該工程主要有三個實現類:

  1. Process(程序類),主要用來例項化各個不同的程序
  2. ProcessBlock(程序控制塊類),用來為每個程序分配PCB,該類例項化後為程序類的類成員變數
  3. ProcessControl(程序控制類),為主類,用來排程程序。
  4. 其中,在程序排程中,聲明瞭三個佇列,分別為待插入程序佇列(按到達時間從小到大排序),就緒佇列(按優先順序從大到小排序,按照到達時間先後進行排序),完成佇列。都ArrayList<Process>型別變數。

排程演算法描述:

  1. 程式開始時隨機為初始化5個程序(程式太多不容易觀察執行結果)
  2. 宣告時間變數t,while迴圈下排程程式一直執行,每執行一次,t++
  3. 然後迴圈判斷待插入佇列隊首程序是否到達,若到達,則將該程序插入到就緒佇列中,並從待插入佇列刪除該程序;若沒有到達,則從該迴圈中跳出
  4. 然後從就緒佇列中取出隊首程序並分配時間片。當該程序時間片用完後,判斷該程序是否已經完成,若完成,則將該程序插入到完成佇列;若沒有完成,則將該程序的優先順序減一併重新插入到就緒佇列中
  5. 一直重複該迴圈,一直到待插入佇列和就緒佇列都為空為止

 

詳細程式碼和文件在這裡

https://write-bug.com/article/1363.html