JVM線程模型與操作系統廠商的關係

jvm線程仍然可以自行控制調度算法(hotspot在非solaris放棄了這種騷操作,直接讓一個jvm線程對應一個os線程,成爲1vs1模型)。


也就說,有些jvm廠商自己實現線程調度算法,在os線程的基礎上又做了一層封裝。從而實現多個線程在一個os線程內併發,或者多個線程在n個線程內併發。你可以理解爲jvm廠商真把jvm當成是計算機操作系統來做了。

按照jvm的規範,jvm線程是操作系統級別的,由操作系統調度,而非用戶進程級別。這就意味着jvm根據操作系統提供的內核函數來實現jvm線程接口規範。即有一種叫坐TCB的存在對標PCB.


另一方面,我們可以理解爲現代操作系統對進程進一步抽象,將進程看成內存管理單元,將cpu核的算力的時間片分配單元從進程剝離出來,由原先按照進程分配改爲按照線程來分配,具體指令實現就是寄存器上下文對象由之前內核進程一個,改爲每個線程一個,上下文不再是進程上下文,而是線程上下文。


線程進程模型是操作系統廠商實現的,和cpu廠商無關,cpu廠商只是面向操作系統內核提供服務(可以理解爲有多個內核計算單元),所有內核計算單元維護一個指令調度表(去中心化的感覺),併發同步問題由操作系統實現自己去負責擔保。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章