2015-11-11 175 views
5

在操作系統中,系統調用和中斷有什麼區別?所有的系統調用都是中斷嗎?是所有的中斷系統調用?在操作系統中,系統調用和中斷有什麼區別?

+0

最小的中斷示例以及一些Linux如何將其用於系統調用:http://stackoverflow.com/questions/1817577/what-does-int-0x80-mean-in-assembly-code/31836988#31836988 –

回答

13

簡短回答: 他們是不同的東西。

  • 系統調用是由OS上運行的軟件調用OS提供的服務 。
  • 中斷是通常是外部硬件組件通知CPU /微處理器有關需要在軟件(通常是驅動程序)中處理的事件。

我說通常外,因爲有些中斷可以由軟件(軟中斷)提高

都是系統調用中斷?取決於

是否所有中斷系統調用?否

長答案: 操作系統管理CPU時間和連接到CPU(內存(RAM),硬盤,鍵盤等)的其他硬件。它公開允許用戶程序訪問底層硬件的服務,這些是系統調用。通常這些處理分配內存,讀寫文件,打印文件等。

當操作系統與其他硬件交互時,它通常通過驅動程序層來完成此操作,該驅動程序層設置硬件執行任務並在作業完成後中斷任務,因此打印機可能會在打印文檔或打印文檔時中斷用完頁面。因此,系統調用通常會導致產生中斷。

是所有系統調用中斷 - 取決於它們可能實現爲軟中斷。因此,當用戶程序進行系統調用時,會導致軟中斷,導致操作系統掛起調用進程,並自行處理請求,然後恢復進程。但是,我從維基百科的引用,

「對於許多RISC處理器這個(中斷)是所提供的唯一技術,但 CISC架構,比如x86的支持額外的技術。一個 例子是SYSCALL/SYSRET,SYSENTER/SYSEXIT(這兩個機制分別是由AMD和Intel獨立創建的 ,但實質上 做同樣的事情)。這些是「快速」控制傳輸指令 ,它們被設計爲快速將控制權轉移到系統的操作系統 調用沒有中斷的開銷「

+0

感謝你的快速反應。所以中斷是硬件,但可以由軟件中的系統調用引起?那是對的嗎? –

+0

「,但可以由軟件中的系統調用引起」是的,軟件是中斷的一個來源,但通常所有外設都會產生事件。時鐘滴答是由系統時鐘產生的中斷,不需要任何用戶/軟件干預。 – Ali

+0

只是爲了進一步混淆,在許多操作系統中,進入內核的所有系統調用都被描述爲'中斷',即使該機制沒有涉及模仿'真正'硬件中斷的傳統'軟件中斷'。 '中斷'這個詞在Java等語言中也被進一步重載。很高興這是完全清楚的...... :) –

1

您的問題的答案取決於底層硬件(有時操作系統實施)。我回到那一點。

中斷處理程序和系統調用(和故障處理程序)的用途大致相同:將處理器切換到內核模式,同時防止無意或惡意訪問內核結構。

中斷是由異步外部事件觸發的。 通過執行代碼來同步觸發系統調用(或故障或陷阱)。

這就是你的第一個問題的答案。

您的部分問題的答案是系統調用不是中斷,因爲它們不是由硬件異步觸發的。進程繼續在系統調用中執行其代碼流,但不在中斷中執行。這就是說,英特爾的文檔經常將中斷,系統調用,陷阱和故障混合爲「中斷」。

一些處理器在很大程度上以相同的方式處理系統調用陷阱,故障和中斷。其他(特別是英特爾)爲實現系統調用提供了不同的方法。

在以相同的方式處理上述所有問題的處理器中,每種類型的中斷,陷阱和故障都有唯一的編號。處理器期望操作系統設置指向處理程序的向量(數組)。此外,還有一個或多個處理程序可用於操作系統來執行系統調用

根據可用處理程序的數量,操作系統可能爲每個系統調用都有單獨的處理程序,或者使用寄存器值來確定哪些特定系統功能執行。

在這樣的系統中,可以以與調用系統調用相同的方式同步執行中斷處理程序。

例如,在VAX的

CHMK#4

指令,調用第四內核模式處理程序。在英特爾的土地他們是

INT

指令,可以做大致相同。

英特爾處理器支持SYSCALL機制,它提供了一種實現系統調用的不同方式。

相關問題