系統呼叫,上下文切換及中斷概念的彙總
仔細揣摩了一段時間.
系統呼叫過程,使用者程式進入核心態,程式棧進入核心態棧, cpu進入核心態,cpu使用者態各暫存器的值儲存到核心態棧,執行核心態程式碼. 執行完從核心態返回到使用者態,包括程式棧返回到使用者態棧,cpu返回到使用者態,cpu各暫存器的值用之前儲存在核心態棧的值還原. 核心在執行系統呼叫時處於程式上下文中,current指標指向當前程式,即引發系統呼叫的程式。
1 系統呼叫的過程中 可以發生程式切換(1 來自時鐘中斷,時間片用完,schedule()。2核心態程式碼執行過程中阻塞,主動schedule() )。2 系統呼叫的過程中 可以發生中斷,中斷任意時刻可以發生,中斷不屬於任何一個程式上下文.
a 當前程式是使用者態 cpu進入核心態,使用棧進入到中斷棧,並且在中斷棧儲存使用者態各暫存器的值,執行中斷程式碼,中斷程式碼執行過程中 不能被阻塞, 不能被切換。執行完中斷程式碼後,從中斷棧恢復使用者態暫存器值,cpu進入使用者態。(使用者態進入到核心棧時,該棧時空的,中斷程式碼可以直接使用程式的核心態棧)
b 當前程式是核心態,使用棧進入到中斷棧,並且在中斷棧儲存核心態各暫存器的值,執行中斷程式碼,執行完中斷程式碼後,從中斷棧恢復核心態暫存器值.
c 中斷程式碼執行時,處在中斷上下文.不屬於任何一個程式上下文.
d 每CPU變數中會有兩個棧單獨用於中斷過程 分別用於軟中斷和硬中斷 (2.6.x版本後)
3 從核心態返回到使用者態的過程中,有很多事情都是這個環節裡面做的.
a .檢查 need_resched,當前程式是否需要發起schedule() ,這個過程也會發生程式切換
b 會檢查所有程式是否有訊號到達(深入理解linux核心 第三版 422頁 ), 訊號的處理是在這個過程來觸發的。之前看了很多資料,都沒發現一個可以進入訊號處理的入口. 幾乎所有的文章都是講怎麼發訊號,怎麼處理訊號.就是沒有一個說道有訊號達到的程式是如何感知到,並且被排程.
相關文章
- 程式設計師被打斷:中斷和上下文切換的真正代價程式設計師
- 結合中斷上下文切換和程式上下文切換分析Linux核心的一般執行過程Linux
- 程式切換(上下文切換)
- goroutine 上下文切換Go
- 程序上下文、中斷上下文及原子上下文
- 系統呼叫時為什麼發生任務切換?
- 切換系統中多個python版本Python
- 前端佈局方式彙總及概念淺析前端
- goroutine上下文切換機制Go
- Linux CPU 上下文切換的故障排查Linux
- Linux系統中如何切換使用者?Linux
- 切換Windows的系統語言Windows
- windows怎麼切換回蘋果系統(電腦雙系統切換系統方法)Windows蘋果
- mac電腦如何切換雙系統,雙系統該怎麼切換Mac
- db_ha叢集安裝後的自動切換及切換後的判斷步驟說明文件
- 專案中的公共方法呼叫原則及呼叫的前置條件判斷
- Linux之系統故障彙總Linux
- mysql innodb double write概念彙總MySql
- 【作業系統2】作業系統啟動過程與異常/中斷,系統呼叫作業系統
- linux網路系統層面的配置、管理及操作命令彙總Linux
- Linux 效能優化之 CPU 篇 ----- 上下文切換Linux優化
- 系統呼叫篇——總結與提升
- 【原創】Linux中斷子系統(一)-中斷控制器及驅動分析Linux
- win10雙系統怎麼切換另一個_windows10雙系統快速切換操作方法Win10Windows
- Linux漏洞挖掘:08---系統呼叫劫持之(通過IDT中斷向量表獲取sys_call_table系統呼叫表)Linux
- Mac上一鍵切換系統各項功能的工具Mac
- Only Switch,一鍵切換系統各項功能的神器
- Linux中斷子系統Linux
- 啃碎併發(三):Java執行緒上下文切換Java執行緒
- JavaScript 中精度問題及解決思路彙總JavaScript
- win10系統雙顯示卡怎麼切換?Win10系統雙顯示卡切換AMD和英特爾的方法Win10
- AT&T彙編之32位與64位系統呼叫
- 分散式系統中的CAP、ACID、BASE概念分散式
- 作業系統下載網址彙總作業系統
- 直播系統中網頁類似app頁面切換動畫的實現方式網頁APP動畫
- win10系統切換到快捷更新模式的方法Win10模式
- minos 2.4 中斷虛擬化——中斷子系統
- 從使用傳統Web框架到切換到Spring Boot後的總結Web框架Spring Boot