2013-08-21 93 views
3

系統調用是使用軟件中斷(中斷向量128)實現的。在羅伯茨愛書「Linux Kernel Development」中寫到,中斷句柄發生在中斷上下文中。它還寫了系統調用在進程上下文中運行,但系統調用句柄實際上是一個「中斷句柄」,爲什麼它在不同的上下文中?系統調用與中斷上下文

回答

1

您將得到與Linux內核設計混淆的平臺實現。

當你在談論Linux內核時,中斷上下文是代碼自己運行的地方,沒有任何進程連接 - 通常用於處理來自設備的中斷。進程上下文是來自用戶態進程的系統調用的結果,其中運行的代碼被「附加」到進程。

當你在談論平臺實現時,中斷上下文可能僅僅意味着處理器處於某種中斷處理程序模式。我不太瞭解您的平臺提供任何具體的東西。

+0

可以說例如x86。中斷處理程序和系統調用都以相同的方式實現。 CPU開始執行在IDT中與中斷向量相關的段中找到的代碼。系統調用處理程序在邏輯上綁定到用戶登陸進程(我通過使用CURRENT宏假設)。對於硬件中斷,它類似於另一箇中斷向量編號,CURRENT宏仍然指向被中斷的進程。內核如何區分這兩個實體,因爲它們顯然不一樣。 – arkadish

+0

我不清楚確切的實現,但我想象內核將處理中斷,找出是什麼引起它並調用正確的處理程序。對於系統調用,它可能會重新啓用搶佔並跳轉到系統調用處理程序,而對於設備中斷,它可能會跳轉到中斷處理程序(使用CURRENT宏在這裏毫無意義)。 – tangrs