天天看點

線程挂起自己,讓出CPU

1.時間片:時鐘中斷處理例程從PCR中取得目前線程對象指針并更新線程時間,如果超出了時間片,則将目前線程從放入ready清單中,然後從standby清單中取出最高優先級的線程,然後儲存目前線程上下文資料,并轉到新的線程上下文.

2.主動等待:線程調用等待函數,則将目前線程放到wait清單中,然後從standby清單中取一個線程,切換上下文,當主動等待的事件完成時,線程被排程到ready清單中等待再次被排程運作.

3.搶先:時鐘中斷發現standby清單中有比目前線程更高的線程,則挂起目前線程,切換線程上下文,運作最需要運作的線程.

是以,所謂的線程排程器是不存在的,不是線程等某個真實存在的排程器來排程自己,而是"線程挂起自己,讓出CPU"

繼續閱讀