Linux中什麼情況下會發生程式排程?
程式排程是指作業系統按某種策略或規則選擇程式佔用CPU進行執行的過程。那麼Linux中什麼情況下會發生程式排程?以下是詳細的內容介紹。
Linux的排程程式是一個叫Schedule()的函式,由它來決定是否要進行程式的切換。而所謂的排程時機則是在什麼情況下執行排程程式。
Linux程式排程採用的是搶佔式多工處理,所以程式之間的掛起和繼續執行無需彼此之間的協作。
主要分為以下幾種情況:
1、程式狀態轉換的時刻:程式終止、程式睡眠
程式要呼叫sleep()或exit()等函式進行狀態轉換,這些函式會主動呼叫排程程式進行程式排程。
2、當前程式的時間片用完時(current->counter=0)
由於程式的時間片是由時鐘中斷來更新的,因此,這種情況和時機4是一樣的。
3、裝置驅動程式
當裝置驅動程式執行長而重複的任務時,直接呼叫排程程式。在每次反覆迴圈中,驅動程式都檢查need_resched的值,如果必要,則呼叫排程程式schedule()主動放棄CPU。
4、程式從中斷、異常及系統呼叫返回到使用者態時
不管是從中斷、異常還是系統呼叫返回,最終都呼叫ret_from_sys_call(),由這個函式進行排程標誌的檢測,如果必要,則呼叫排程程式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2918329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java面試一日一題:講下在什麼情況下會發生類載入Java面試
- js中什麼情況下返回值是undefinedJSUndefined
- Snowflake(雪花演算法),什麼情況下會衝突?演算法
- MySQL什麼情況下刪除資料會釋放空間MySql
- 在Linux上啟動程式時會發生什麼?Linux
- Oracle什麼情況下需要rebuild indexOracleRebuildIndex
- 為什麼使用API?什麼情況下避免使用API?API
- 在什麼情況下用index unique scansIndex
- Transactional replication 的Snapshot 檔案在什麼情況下會被清除
- Linux CFS中的程式排程Linux
- Java類什麼情況下被初始化?Java
- 在什麼情況下Java比C++快?JavaC++
- Linux核心排程分析(程式排程)Linux
- 伺服器過載會出現什麼情況伺服器
- 容器化,微服務,DevOps,什麼情況下會三位一體?微服務dev
- 【Java】JDK1.8之前HashMap併發情況為什麼會發生死迴圈JavaJDKHashMap
- 什麼情況讓程式設計師處於水深火熱中程式設計師
- linux程式排程Linux
- 什麼情況下需要搭建大資料平臺大資料
- 在什麼情況下,Java比C++慢很多?JavaC++
- 儲存過程裡呼叫編譯自己是什麼情況?儲存過程編譯
- 當你在 Linux 上啟動一個程式時會發生什麼?Linux
- SQL SERVER中什麼情況會導致索引查詢變成索引掃描SQLServer索引
- Linux 檢視程式情況Linux
- argv[0]在什麼情況下不等於程式名
- 為什麼分散式限流會出現不均衡的情況?分散式
- 爬蟲代理為什麼會出現超時的情況?爬蟲
- 香港伺服器什麼情況下需要更新升級?伺服器
- Linux程式排程策略Linux
- 什麼情況!華為開源JDK!JDK
- 下一個成為IE會不會是Chrome,看看是什麼情況。Chrome
- 程式排程演算法Linux程式排程演算法演算法Linux
- 應用架構設計中,什麼情況下開始考慮快取?應用架構快取
- LINUX(十三)Linux程式排程Linux
- 什麼情況下不應該使用 Windows Linux 子系統WindowsLinux
- 爬蟲在什麼情況下才需要使用代理IP爬蟲
- vue什麼情況下需要用到this.$nextTickVue
- 企業在什麼情況下引入分散式資料庫?分散式資料庫