linux 切换用户_Linux 用户态切换到内核态的 3 种方式
- 系統調用
這是用戶態進程主動要求切換到內核態的一種方式,用戶態進程通過系統調用申請使用操作系統提供的服務程序完成工作,比如 fork() 實際上就是執行了一個創建新進程的系統調用。而系統調用的機制其核心還是使用了操作系統為用戶特別開放的一個中斷來實現,例如 Linux 的 int 80h 中斷。
- 中斷
當外圍設備完成用戶請求的操作后,會向 CPU 發出相應的中斷信號,這時 CPU 會暫停執行下一條即將要執行的指令轉而去執行與中斷信號對應的處理程序,如果先前執行的指令是用戶態下的程序,那么這個轉換的過程自然也就發生了由用戶態到內核態的切換。比如硬盤讀寫操作完成,系統會切換到硬盤讀寫的中斷處理程序中執行后續操作等。
- 異常
當 CPU 在執行運行在用戶態下的程序時,發生了某些事先不可知的異常,這時會觸發由當前運行進程切換到處理此異常的內核相關程序中,也就轉到了內核態,比如缺頁異常。
當時大神們在寫 Linux 內核的時候,估計還不知道將來虛擬機會大放異彩,大神們想,操作系統一共分兩級特權,一個內核態,一個用戶態,而 CPU 卻有四個等級,好奢侈,好富裕,就敞開了用,內核態運行在第 0 等級,用戶態運行在第 3 等級,占了兩頭,太不會過日子了。
如果用戶態程序做事情,就將扳手掰到第 3 等級,一旦要申請使用更多的資源,就需要申請將扳手掰到第 0 等級,內核才有高權限訪問這些資源,申請完資源,返回到用戶態,扳手再掰回去,這個程序一直非常順利的運行著,直到虛擬機的出現。
總結
以上是生活随笔為你收集整理的linux 切换用户_Linux 用户态切换到内核态的 3 种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rowid会变化么_升级后的饿了么,将成
- 下一篇: 一步步Notepad变Word