2016-04-28 29 views
1

在由Maurice撰寫的「Unix操作系統的設計」一書中提到,中斷在運行過程的上下文中被處理,因爲它不會產生新的服務中斷服務程序。爲什麼在linux和unix的情況下中斷服務的方式有什麼設計差異?

所以,在Unix系統中的處理器被做的正是的兩件事情之一: 1.在用戶空間,在一過程執行用戶代碼 2.在內核空間中,在過程情況下,代表的執行具體過程。

但是,在許多操作系統(包括Linux)中,中斷處理程序不會在進程上下文中運行。相反,它們運行在與任何進程無關的特殊中斷上下文中。這種特殊的上下文僅用於讓中斷處理程序快速響應中斷,然後退出。

所以,在Linux中處理器被做的正是的三件事情之一: 1.在用戶空間,在一過程執行用戶代碼 2.在內核空間中,在過程情況下,代表的執行具體過程。 3.在內核空間中,在中斷上下文中,不與進程關聯,處理中斷。

我想了解爲什麼這種設計變化?如果我們在運行過程的上下文中服務中斷會不會更快?

回答

2

這聽起來像你被術語弄糊塗了。我懷疑你稱之爲「特殊的中斷上下文」(當然Linux文檔使用這個術語)實際上只是轉向硬件產生的中斷棧。我懷疑Linux有其「中斷上下文」只是爲了禁止不應該在中斷中完成的特定於進程的活動。

如果任何操作系統在中斷過程中執行了實際的進程上下文切換(因此中斷服務中斷的進程),我會感到震驚。

相關問題