我有一個關於Linux深入工作的問題。Linux系統調用流程序列號
比方說一個多線程處理在CPU中被執行。在這種情況下,我們將有一個在CPU上執行的線程。在更寬的畫面中,我們將把屬於該進程的相應頁面加載到RAM中執行。
可以說線程進行系統調用。在此之後,我對這些工作有點不清楚。中斷將產生一個呼叫。我的一個問題是誰會回答這個問題?
比方說,該系統具有M:N用戶級線程內核級線程映射,我假設相應的內核級線程會回答這個電話。
所以內核會查找中斷向量表,並得到其需要執行的程序。我的下一個問題是哪個堆棧將用於執行中斷?它會成爲內核線程堆棧還是用戶級線程堆棧? (我假設它將是內核線程堆棧。)
回到程序流程可以說操作正在使用fopen
打開文件。接下來的問題是,如何從ISR跳轉到系統調用?或者我們的ISR映射到系統調用?
同樣在當正在執行的內核線程我假設在RAM上「OS區」將用於安置被執行系統調用的頁面更退一步海闊天空。最後,我假設相應的內核線程正在由CPU調度程序處理,其中上下文切換將發生在從用戶級線程到對應的內核級別線程在系統調用被應答時。
我已經做了很多假設,這將是絕對精彩,如果任何人都可以清除疑慮或至少可以指導我在正確的方向。
您是否介意重新設置文本牆的格式,以便讀起來更容易一些?謝謝。 – NPE 2013-04-10 05:23:19
另外,閱讀Linux編程的幾本書。您首先需要了解應用程序方面,例如http://advancedlinuxprogramming.com/然後你需要了解內核的觀點,並且還有很多書籍...... – 2013-04-10 05:25:46
嗨巴西爾,我已經閱讀了Linux上的多本書,他們幾乎給了我相同的信息。然而,我無法將所有東西縫合在一起。實時操作整個過程的方式。 – 2013-04-10 05:53:28