在操作系統中,系統調用和中斷有什麼區別?所有的系統調用都是中斷嗎?是所有的中斷系統調用?在操作系統中,系統調用和中斷有什麼區別?
回答
簡短回答: 他們是不同的東西。
- 系統調用是由OS上運行的軟件調用OS提供的服務 。
- 中斷是通常是外部硬件組件通知CPU /微處理器有關需要在軟件(通常是驅動程序)中處理的事件。
我說通常外,因爲有些中斷可以由軟件(軟中斷)提高
都是系統調用中斷?取決於
是否所有中斷系統調用?否
長答案: 操作系統管理CPU時間和連接到CPU(內存(RAM),硬盤,鍵盤等)的其他硬件。它公開允許用戶程序訪問底層硬件的服務,這些是系統調用。通常這些處理分配內存,讀寫文件,打印文件等。
當操作系統與其他硬件交互時,它通常通過驅動程序層來完成此操作,該驅動程序層設置硬件執行任務並在作業完成後中斷任務,因此打印機可能會在打印文檔或打印文檔時中斷用完頁面。因此,系統調用通常會導致產生中斷。
是所有系統調用中斷 - 取決於它們可能實現爲軟中斷。因此,當用戶程序進行系統調用時,會導致軟中斷,導致操作系統掛起調用進程,並自行處理請求,然後恢復進程。但是,我從維基百科的引用,
「對於許多RISC處理器這個(中斷)是所提供的唯一技術,但 CISC架構,比如x86的支持額外的技術。一個 例子是SYSCALL/SYSRET,SYSENTER/SYSEXIT(這兩個機制分別是由AMD和Intel獨立創建的 ,但實質上 做同樣的事情)。這些是「快速」控制傳輸指令 ,它們被設計爲快速將控制權轉移到系統的操作系統 調用沒有中斷的開銷「
感謝你的快速反應。所以中斷是硬件,但可以由軟件中的系統調用引起?那是對的嗎? –
「,但可以由軟件中的系統調用引起」是的,軟件是中斷的一個來源,但通常所有外設都會產生事件。時鐘滴答是由系統時鐘產生的中斷,不需要任何用戶/軟件干預。 – Ali
只是爲了進一步混淆,在許多操作系統中,進入內核的所有系統調用都被描述爲'中斷',即使該機制沒有涉及模仿'真正'硬件中斷的傳統'軟件中斷'。 '中斷'這個詞在Java等語言中也被進一步重載。很高興這是完全清楚的...... :) –
您的問題的答案取決於底層硬件(有時操作系統實施)。我回到那一點。
中斷處理程序和系統調用(和故障處理程序)的用途大致相同:將處理器切換到內核模式,同時防止無意或惡意訪問內核結構。
中斷是由異步外部事件觸發的。 通過執行代碼來同步觸發系統調用(或故障或陷阱)。
這就是你的第一個問題的答案。
您的部分問題的答案是系統調用不是中斷,因爲它們不是由硬件異步觸發的。進程繼續在系統調用中執行其代碼流,但不在中斷中執行。這就是說,英特爾的文檔經常將中斷,系統調用,陷阱和故障混合爲「中斷」。
一些處理器在很大程度上以相同的方式處理系統調用陷阱,故障和中斷。其他(特別是英特爾)爲實現系統調用提供了不同的方法。
在以相同的方式處理上述所有問題的處理器中,每種類型的中斷,陷阱和故障都有唯一的編號。處理器期望操作系統設置指向處理程序的向量(數組)。此外,還有一個或多個處理程序可用於操作系統來執行系統調用
根據可用處理程序的數量,操作系統可能爲每個系統調用都有單獨的處理程序,或者使用寄存器值來確定哪些特定系統功能執行。
在這樣的系統中,可以以與調用系統調用相同的方式同步執行中斷處理程序。
例如,在VAX的
CHMK#4
指令,調用第四內核模式處理程序。在英特爾的土地他們是
INT
指令,可以做大致相同。
英特爾處理器支持SYSCALL機制,它提供了一種實現系統調用的不同方式。
- 1. 操作系統中頁面和塊之間有什麼區別?
- 2. unix系統編程中send和sendto系統調用有什麼區別?
- 3. 操作系統調用中斷嗎?
- 4. 系統verilog斷言中的 - >和=>有什麼區別?
- 5. c中的open和creat系統調用有什麼區別?
- 6. 操作系統和內核有什麼區別?
- 7. 操作系統和框架有什麼區別?
- 8. chdir(...)和系統(「cd ...」)有什麼區別?
- 9. 操作系統中斷
- 10. 在32位操作系統和64位操作系統之間,類java.net.InetAddress有什麼區別
- 11. 前景背景系統和實時操作系統的區別
- 12. 什麼是操作系統和元操作系統之間的差別
- 13. 通用操作系統和軟實時操作系統之間的區別?
- 14. windows mobile(過去的操作系統)和windows phone 7操作系統的功能有什麼區別?
- 15. 操作系統中的用戶模式和內核模式有什麼區別?
- 16. Linux操作系統和移動操作系統之間的根本區別(android)
- 17. 嵌入式操作系統和桌面操作系統的區別
- 18. 操作系統注入和操作系統命令注入的區別
- 19. 「C系統調用」和「C庫例程」有什麼區別?
- 20. 系統調用和指令集有什麼區別
- 21. 操作系統中的字符集和字體有什麼區別?
- 22. 操作系統API使用中斷嗎?
- 23. 中斷系統調用
- 24. posix_memalign中斷系統調用
- 25. PHP hash_hmac()操作系統區別
- 26. 操作系統中
- 27. 在Prolog中識別操作系統
- 28. SQL Server系統視圖中的type和xtype有什麼區別?
- 29. 在Windows操作系統中的pathos軟件包操作系統
- 30. 識別操作系統
最小的中斷示例以及一些Linux如何將其用於系統調用:http://stackoverflow.com/questions/1817577/what-does-int-0x80-mean-in-assembly-code/31836988#31836988 –