#include#include#define ready 1
#define block 2
struct pcb
};pcb *ready_queue_head=null;
pcb *block_queue_head=null;
//建立了就緒佇列和阻塞佇列,均包含頭結點,以後的節點插入均採取插入排序
void initqueue()
//用於cpu處理完所有程序後釋放佇列的頭結點,避免記憶體洩露
void freequeue()
//往insert_queue_head佇列插入insert_process,按priority的大小插入
void insetprocess(pcb *insert_process,pcb *insert_queue_head)
//insert_process節點要插在p_before與p之間
insert_process->next=p;
p_before->next=insert_process;
}//獲取queue_head佇列的頭個程序,並把該程序從佇列中刪除
pcb* getfirstprocess(pcb *queue_head)
//判斷queue_head佇列是否為空
bool is_empty_queue(pcb *queue_head)
//把queue_head佇列列印出來,若為空則什麼都沒
void show_queue(pcb *queue_head)
}//把ready_queue_head佇列的優先順序全部加1
void update_ready_queue()
}//把block_queue_head佇列更新:包括優先順序,blocktime
void update_block_queue()
else
}}//需要用到的一些全域性變數
bool is_cpu_busy=false;//記錄cpu忙碌與否
int cur_time=0;//現在的時間片
pcb *running_p=null;//目前running的程序
//以下為排程演算法
void mydispatcher()
else//cpu不空閒 }
}//以下是關於cpu的函式
void cpuwork()
if(running_p->alltime==0)//如果程序順利完結
}int main()
freequeue();
}
優先權排程演算法
include include include include includeusing namespace std define maxn 100 int time 0 定義時間,為全域性變數,第乙個程序到達時為0 typedef structproducer 程序結構體 float rep pr...
程序排程 高優先權優先
include stdio.h include include define getpch type type malloc sizeof type define null 0 struct pcb ready null,p ready p 為全域性變數 typedef struct pcb pcb...
OS 使用動態優先權的程序排程
1實驗目的 通過動態優先權演算法的模擬加深對程序概念和程序排程過程的理解。2實驗內容 1 實現對n個程序採用動態優先權優先演算法的程序排程。2 每個用來標識程序的程序控制塊pcb用結構來描述,包括以下字段 程序標識數 id。程序優先數 priority,並規定優先數越大的程序,其優先權越高。程序已占...