Debian
Debian(或一般的作業系統)如何處理打開一個程序的多個實例?
如果我要打開 10 個終端視窗,作業系統如何處理它?它使用多執行緒還是多處理?還是有其他一些我還不知道的概念?如果我要在所有 10 個上執行 Python 腳本,它們將如何與 GIL 一起執行?它們會在多處理中執行,直到 CPU 中的所有核心(在我的情況下為 8 個)都執行 Python,然後切換到並發的多執行緒?另外,我在哪裡可以閱讀更多關於此的內容?
這可能取決於終端應用程序。您可以啟動多個
xterm
終端,然後每個終端有 1 個程序。使用支持多個選項卡的終端,可以使用多執行緒或使用select
系統呼叫的單執行緒來實現。這個系統呼叫被賦予了一組文件描述符,並返回可以讀取或寫入的描述符列表。無論終端以何種方式實現,您將擁有與打開的終端一樣多的 shell(或其他程序)程序。如果你啟動 10 個 Python 腳本,你將擁有 10 個獨立的程序。每個都可能有一個全域解釋器鎖,但它們是每個程序的鎖。(在一個程序中獲取鎖不會阻止其他程序獲取其 GIL)。