mac虛擬機好還是雙系統(tǒng) 操作系統(tǒng)為什么不內(nèi)置java虛擬機?
操作系統(tǒng)為什么不內(nèi)置java虛擬機?誠懇邀請其實這個問題就是要了解操作系統(tǒng)是什么。操作系統(tǒng)將硬件與用戶程序分開。操作系統(tǒng)主要用于管理硬件資源和系統(tǒng)調(diào)度。其他功能只是為了提高效率。內(nèi)核需要添加一些接口,
操作系統(tǒng)為什么不內(nèi)置java虛擬機?
誠懇邀請
其實這個問題就是要了解操作系統(tǒng)是什么。操作系統(tǒng)將硬件與用戶程序分開。操作系統(tǒng)主要用于管理硬件資源和系統(tǒng)調(diào)度。其他功能只是為了提高效率。內(nèi)核需要添加一些接口,以減少用戶程序與內(nèi)核之間的通信導(dǎo)致的效率降低。用于執(zhí)行Java程序的Java虛擬機是一種用戶模式的程序,不具備操作系統(tǒng)的能力。它只用于解析Java字節(jié)碼,不能被硬件直接識別。因此,必須有操作系統(tǒng)翻譯。而且,Java虛擬機的目的是使Java程序能夠一次編寫、多個地方執(zhí)行,但操作系統(tǒng)可以脫離Java虛擬機而存在,因此實現(xiàn)Java虛擬機是必要的,Java虛擬機的功能是執(zhí)行Java字節(jié)碼,其編碼實現(xiàn)是一個復(fù)雜的過程死循環(huán)。每個循環(huán)都是獲取字節(jié)碼和執(zhí)行字節(jié)碼的過程,因此Java虛擬機與其他程序沒有本質(zhì)的區(qū)別。主流的JavaVM大多是用C語言實現(xiàn)的,然后用匯編語言輔助實現(xiàn),用Java實現(xiàn)JavaVM的情況有一些,但不多。
下面是使用C語言在智能設(shè)備中實現(xiàn)虛擬機的一個片段。
此代碼是短加法字節(jié)碼的實現(xiàn)。
這段代碼只是獲取字節(jié)碼并執(zhí)行它。你認(rèn)為JavaVM就是這樣嗎。
為了優(yōu)化虛擬機的效率,很多人選擇用匯編的方式重寫執(zhí)行頻率高的代碼。
小結(jié)是C語言實現(xiàn)的許多,將與匯編結(jié)合起來作為輔助工具。有其他語言,但不是主流。