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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼情況下會出現css阻塞?CSS
- 什麼情況下會出現js阻塞?JS
- java面試一日一題:講下在什麼情況下會發生類載入Java面試
- 在Linux上啟動程式時會發生什麼?Linux
- Snowflake(雪花演算法),什麼情況下會衝突?演算法
- linux程式排程Linux
- 什麼情況下你能接受 996996
- 如果列表元素li的兄弟元素為div,會產生什麼情況?
- 當css中background或background-image的值為url()或url(#)時,會發生什麼情況?為什麼?如何解決?CSS
- Linux 檢視程式情況Linux
- 什麼情況下進行效能測試
- GreatSQL 中 Insert 慢是什麼情況?SQL
- 容器化,微服務,DevOps,什麼情況下會三位一體?微服務dev
- 當你在 Linux 上啟動一個程式時會發生什麼?Linux
- Java類什麼情況下被初始化?Java
- 伺服器過載會出現什麼情況伺服器
- Nature回應:為什麼在沒有程式碼的情況下發布AlphaFold3?
- 【Java】JDK1.8之前HashMap併發情況為什麼會發生死迴圈JavaJDKHashMap
- vue什麼情況下需要用到this.$nextTickVue
- 股票抄底絕招 什麼情況下抄底合適
- 什麼情況下需要搭建大資料平臺大資料
- 什麼是java序列化?什麼情況下需要序列化?Java
- 什麼情況下不應該使用 Windows Linux 子系統WindowsLinux
- 香港伺服器什麼情況下需要更新升級?伺服器
- LInux實驗 : 程式排程模擬Linux
- 在Kubernetes中建立Pod時會發生什麼? - daniele
- 為什麼分散式限流會出現不均衡的情況?分散式
- 爬蟲代理為什麼會出現超時的情況?爬蟲
- 應用架構設計中,什麼情況下開始考慮快取?應用架構快取
- linux中設定程式排程的優先順序別Linux
- 拼多多開店需要了解哪些規則?在什麼情況下會被罰款?
- 下一個成為IE會不會是Chrome,看看是什麼情況。Chrome
- 企業在什麼情況下引入分散式資料庫?分散式資料庫
- 爬蟲在什麼情況下才需要使用代理IP爬蟲
- linux 防火牆埠號開發情況Linux防火牆
- Linux TCP RST情況LinuxTCP
- 什麼情況!華為開源JDK!JDK
- 面試官:小夥子,你給我說一下Java中什麼情況會導致記憶體洩漏呢?面試Java記憶體