您好,登錄后才能下訂單哦!
小編給大家分享一下JVM的誕生和操作系統之間的關系是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
大家都知道操作系統(Windows/Linux)是軟件,它用來管理硬件,讓硬件能夠正常、合理的運行,當然各種硬件的驅動實現了操作系統的接口,操作系統調用這些接口就能管理硬件,操作系統還像程序員提供了一層接口,叫做系統呼叫層,程序員可以面向這一層的接口編程,來實現對計算機的控制,而不同的操作系統(或者說不同的CPU架構)所提供的接口都是不一樣的,Windows和Linux提供給的那肯定是完全不一樣的,雖然站在最終的角度來看都能實現某一功能。所以同樣一個程序是不能在不同的系統上運行的,甚至可能在同一個系統的不同版本都不一定能完美運行,比如C/C++程序。
JVM虛擬機相當于在操作系統之上建立的一個虛擬的計算機。其中內存結構可以看出來,jvm中pc寄存器,棧,堆,元空間和常量池對應計算機的處理器和內存。jvm+java解決跨平臺的問題,鑒于不同的操作系統java程序如何做到一次編寫,到處運行,想實現跨平臺,于是JVM就誕生了,JVM向下關聯所有操作系統,他能操作所有操作系統,向上提供統一接口,也就是JavaAPI,開發者只需要面向JVM(JavaAPI)編程,至于JVM是如何各種不同的操作系統打交道開發者完全不用管。上圖很好的解釋了,java虛擬機先將java代碼編譯成jvm自己的字節碼,jvm執行的過程中會將字節碼解釋機器處理的二進制碼,jvm通過調用操作系統的指令集,cup去實現相關的指令操作,完成內存調用。
大家都知道shell,Linux操作系統管理硬件,Linux向上提供統一接口,shell命令就是操作這些指令的,可以看出Linux的shell編程就等于上面的JVM編譯之后的jvm指令。而Shell命令調用中間層,中間呼叫層會將輸入的命令解釋給操作系統接口來管理和調用各種硬件,我們形象的稱之為“殼”,說白了跟設計模式里面的門面模式一個道理,讓用戶能控制的都是安全穩定的,有風險的操作都在門面之后,保證了操作系統的相對安全。
CUP是屬于硬件部分,操作系統是軟件,操作系統發出指令。首先操作系統還是普通的應用程序最終都得轉化到二進制代碼才能夠被cpu所處理。而用高級語言編寫的普通應用程序都必須經過編譯器編譯后成為二進制代碼(指令)才能運行。而不同的cpu所實現的指令集不同,所以不同的指令集對應的編譯器也不盡相同,編譯器不同,相同的高級語言程序經過編譯后所得到的二進制代碼也不同。這就引出了“移植”和“跨平臺”兩個概念,jvm在這方便做的還是比較出色的。
我們對于計算機的操作,事實上都是對內存模型(或者說內存的數據結構)在操作,內存首先是建立操作系統的內存模型,然后其他內存模型都建立在操作系統的內存模型之上或者跟操作系統內存模型有關。比如JVM的內存模型,當我們操作數據的時候,JVM內存模型發生變化,從而控制操作系統,操作系統跟CPU之間完成非常復雜的溝通,然后得出結果,從IO送出信號。而這一切的一切在計算機內部都是所謂的二進制在運行,再向下一點,就是無數個高低電平的變化。而我們的代碼其實就是這些內存模型的另一種表示方法,這種表示方法可以讓人很容易看懂和改變。
以上是“JVM的誕生和操作系統之間的關系是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。