2014-08-31 63 views
1

我想知道解釋的語言是如何管理系統資源的。口譯員:他們如何管理系統資源?與虛擬機的差異

他們是否有解釋,它要求對資源的操作系統,並決定如何將這些資源分配給執行中的腳本一個單一的過程?或者他們是否創建了一個使系統調用直接進入操作系統的其他進程?

我想到的是,只有一個專門爲我的程序進程;另一方面,解釋器的進程必須存在,並且在我的程序執行開始時,我不知道我的進程應該有多大(我還沒有將所有代碼翻譯成操作碼)。因此它看起來像如果我的程序正在使用由操作系統提供給翻譯過程中的資源運行,但在這種情況下,解釋將採取行動,就像一個虛擬機...

所以,我在哪裏錯了?

回答

1

爲了做到比計算其他任何東西,像讀或寫文件,與用戶進行交互,分配內存等,進程必須發出請求操作系統。

解釋器必須請求到操作系統時,它需要使用更多的存儲器,執行輸入/輸出,等等。

在這個過程中,解釋數字出解釋的程序想做什麼,然後將請求發送到操作系統的要求做操作系統爲其解釋程序要求的東西。

+0

那麼,解釋器和虛擬機(如JVM)有什麼區別? – fortea 2015-07-22 11:33:09

+0

正式定義與實際使用單詞的方式:現在,即使在內部進行一些翻譯/編譯,我們也傾向於將「解釋器」用於同時讀取和執行源代碼的任何系統。 Python被編譯爲字節碼,然後由虛擬機執行,但我們通常將其稱爲「解釋器」,因爲這些步驟是組合的。使用Java,它們是兩個獨立的進程。 「javac」將Java編譯成JVM字節碼,「java」解釋這些字節碼。 「java」使用系統調用與外部世界進行交互(用戶界面,文件,網絡等)。 – Glomek 2015-08-18 18:13:10

相關問題