Linux0.12任務調度與進程切換

來源:互聯網
上載者:User

1.schedule():選擇系統中下一個要啟動並執行進程

(1)迴圈檢測就緒隊列中的每個任務

          若任務的逾時定時器逾時 && 狀態為可中斷睡眠,則逾時計時器清0,狀態置為就緒

          若任務的定時器到期,則定時器清0,SIGALARM訊號置位(定時器!=逾時定時器)

          若任務除了阻塞訊號外還有其它訊號 && 狀態為可中斷睡眠,則狀態置為就緒

(2)選擇counter值(剩餘執行時間)最大的任務

          若counter>0,則執行該任務

         若counter=0,則重新計算每個任務的counter值,並重新執行step 2

2.sleep_on():睡眠函數,使當前進行進入睡眠狀態

(1)臨時指標指向等待隊列

(2)等待隊列頭指標指向當前任務

(3)當前任務的狀態置為等待

(4)shedule()

(5)執行到這裡說明當前任務已經被喚醒,但是不一定能繼續執行

(6)判斷等待隊列的頭指標p

         若p指向當前進程,則置當前進程為就緒態

         若p指向的不是當前進程,則置當前進程為不可中斷的等待,p所指向的進程為就緒

3.這裡所構成的等待隊列與資料結構中的鏈表不同,

4.喚醒進程是指進程處於可以被調度的就緒態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.