回答
什麼系統進程負責執行系統調用?
系統調用包裝(調用執行系統調用的功能,是它只是一個包裝,而不是實際系統調用)將採取的參數,將它們傳遞給approperiate寄存器(或堆棧,取決於實現),接下來它會把你請求的系統調用號碼放在eax
(假設爲x86),最後會調用INT 0x80
彙編指令,它基本上告訴操作系統它收到了一箇中斷,這個中斷是一個系統調用,需要被服務,哪個系統調用服務在eax
中可用,並且參數在寄存器中。
(現代實現使用INT
因爲它在性能價格昂貴,現在使用SYSENTER
和SYSEXIT
停止,上面仍然幾乎是相同的,雖然)
從調度的角度來看,這都沒有區別,如果你執行系統調用與否;問題是,一旦你問OS的服務(通過x86指令INT
或SYSENTER
和SYSEXIT
)的CPU模式標誌將變爲特權集,那麼內核將執行你問代表您處理的任務,一旦完成,它將標誌置位並將執行返回到下一條指令。
因此,從調度點時,操作系統會看到沒有區別,當你執行一個系統調用或其他任何東西。
一些注意事項:
- 我上面提到的是一般性描述,我不確定Windows是否應用了這個功能,但如果沒有,應該採取類似的方式。許多系統調用執行阻塞任務(如I/O處理);爲了提高CPU的利用率,如果你的進程要求阻塞系統調用,調度器將讓你的進程在等待隊列中等待,直到它所請求的已準備好,同時其他進程在CPU上運行,但不要將它與任何東西混淆, OS沒有「安排系統調用」。
調度的任務是組織任務,並從它的角度來看,系統調用只是例行的進程正在執行。
最後一點,一些系統調用是原子,這意味着他們應該沒有任何中斷自己的執行來進行,這些系統調用如果打斷,將被要求一旦中斷的原因是在重新啓動執行;這還遠沒有調度概念。
第一個問題:這要看。有些系統調用將已經運行的服務(如網絡調用)視爲一個過程。某些系統調用會導致創建新進程,然後計劃執行。
最後一個問題:yes windows是一個多處理系統。進程調度程序處理線程何時運行,多長時間以及硬件中斷最終會導致正在運行的進程釋放CPU或硬件現在已準備好進入CPU的空閒進程。
在窗口(至少> Win 7的,但我認爲,在過去這是真的太)有很多的所謂的Svchost進程中運行的系統服務。查看正在運行的是一個很好的應用程序,它是sys內部的Process Explorer。它就像類固醇的任務經理一樣,會向您展示給定流程擁有的所有線程。對於更細粒度的「我稱這個dos命令發生了什麼」的細節,你可能希望使用一個調試工具,在這裏你可以通過你的調用。一般來說,雖然你不必用這些東西來關心自己,你做一個系統調用系統知道你是不是準備好繼續處理,直至處理該請求返回的任何過程。您的要求可能會得到之後您的釋放過程,將CPU,它可能會處理器CPU2天,但現在只要操作系統而言(或者你的程序應該關注)不要緊,停止執行,並等待除非你正在運行多線程,然後它變得非常複雜。
- 1. 呼叫管理系統
- 2. 騾呼叫外部系統
- 3. 呼叫android系統forwading編程
- 4. curl_multi_exec()是否阻塞呼叫?
- 5. 是狀態機中的阻塞系統調用呼叫事件
- 6. Twilio短信和呼叫系統和跟蹤短信和使用codeigniter呼叫
- 7. jQuery AJAX呼叫 - 是否可以取消不需要的呼叫?
- 8. 安排一個JavaScript的未來呼叫,並取消任何未決呼叫
- 9. OnCollisionEnter不統一呼叫
- 10. 是否可以區分是陸地呼叫還是移動線路呼叫?
- 11. iOS:排隊HTTP呼叫
- 12. JQuery延遲排隊呼叫
- 13. 是否安全地中斷似乎掛斷的dcommit呼叫?
- 14. 呼叫聯繫人號碼
- 15. 檢查呼叫是否爲國際
- 16. 確定呼叫是否來自視圖
- 17. IX呼叫上是否有Pandas Cache值?
- 18. io.h中的_write是否阻塞呼叫?
- 19. SOAP是否支持取消呼叫?
- 20. 是否有可能停止REST呼叫?
- 21. 這是否被視爲尾部呼叫?
- 22. ajax呼叫轉移安全
- 23. 安全的http呼叫android
- 24. 呼叫來電呼叫
- 25. 呼叫android系統中使用與IT Telephoney阻斷
- 26. Fortran:在呼叫系統命令中使用變量
- 27. 呼叫系統將文件粘貼在一起
- 28. 如何使用Asterisk自動呼叫系統
- 29. 如何瑪吉第三個呼叫在android系統
- 30. 去哪個呼叫系統的信號發送去哪裏?
「有些系統調用去哪個已經運行......服務」 但是,這是由IPC完成其在啓動系統調用同一進程中運行的系統調用的程序內,但在內核模式下,是嗎? – userx01233433