協作式多任務處理

來自維基學院

本研究旨在對協作式多任務處理中的一些問題進行探討。

一般信息[編輯 | 編輯原始碼]

CPU調度決定可能發生在以下四種情況下:

1. 當某個進程從執行狀態切換到等待狀態 (例如,由於I/O請求);

2. 當某個進程從執行狀態切換到就緒狀態 (例如,發生中斷);

3. 當某個進程從等待狀態切換到就緒狀態 (例如,I/O完成);

4. 當某個進程終止。

第1和4情況下沒有可調度的機會。如果某個新的進程必須被選中去執行(即這個進程在就緒狀態中),那麼就存在調度,即第2和第3中情況下有機會調度。

如果該調度發生在第1和第4中情況下,我們就稱該種調度方案為非搶佔式調度,或稱為協作式調度。第2和第3中情況下,我們稱該種調度方案為搶佔式調度。而協作式多任務處理就是利用協作式調度來處理多任務的方案。

在非搶佔式調度狀態下,一旦CPU被分配給某個進程,那麼這個進程將一直佔用CPU,直到該進程進入終止狀態或切換到等待狀態時才釋放CPU。

非搶佔式調度用於Microsoft Windows 3.x. Windows 95以及之後的所有版本的Windows系統都使用搶佔式調度。Mac OS X作業系統也使用搶佔式調度,但Macintosh之前的版本的作業系統使用的是非搶佔式調度。

非搶佔式調度只用於特定的硬件平台,因為它不同於搶佔式調度需要特殊的硬件配套,例如計時器。