設計一個線程或者進程的運行體R與運行體調度器S的結構體

設計一個線程或者進程的運行體R與運行體調度器S的結構體
1. 運行體R:包含運行狀態{新建,準備,掛起{IO等待讀,IO等待寫,睡眠,延時}, 退出},運行體回調函數,回調參數
2. 調度器S:包含棧指針,棧大小,當前運行體
3. 調度器S:包含執行集合{就緒,延時,睡眠,等待}。
const int running = 1; //運行
const int stop = 2; //停止
const int block = 3 //阻塞

type struct thread_task
{
//線程運行狀態
//標識符
//運行體開始回調函數,參數爲線程ID,透傳參數,
//運行體停止回調函數,參數爲線程ID,透傳參數,
//運行體阻塞回調函數,參數爲線程ID,透傳參數,
//組ID
//優先級
//棧數據結構 用以保存進程切換狀態時保存進程的狀態
//棧的大小
}
//調度器數據結構
type struct thread_schedule
{
//進程隊列
//運行狀態進程的紅黑樹,紅黑樹節點,節點裏面保存一個棧指針
//當前運行進程的指針
}
1 創建新進程時,運行狀態爲開始,生成標識符,調用運行開始回調函數,設置組ID和優先級
2 調度器遍歷進程隊列,根據進程的狀態,如果是運行的狀態,則插入紅黑樹當中,
3 在內存中重新分配一個棧空間,保存現在在CPU當中運行的進程的狀態放入棧當中,並且把進程內的棧指針指向該內存, 從紅黑樹中取得根節點,根據進程的棧信息恢復寄存器和相關的數據,切換CPU運行的進程,把從CPU切換出來的進程插入進程隊列,等待狀態轉變
4 在CPU中執行的進程遇到阻塞或者其他需要讓出CPU的操作時候,從第2步開始執行
5 如果遇到轉變狀態爲運行狀態時,插入紅黑樹當中,並且從調度器的進程隊列刪除
6 進程停止時,刪除進程相關的數據結構,從進程隊列當中刪除

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章