[多核心課程紀錄] 多核心軟體開發的關鍵:Thread Object Model

jollen 發表於 November 11, 2011 4:11 PM

關於Java virtual machine的Thread object model,理論上的做法是「一個Thread object連繫(Binding)到一個native thread」。從multi-core的角度來看,這是一個很理想的做法,實務上是否有採用這種Thread object model的Java virtual machine呢?答案是,有的;這取決於virtual machine與作業系統的設計。

JDK6搭配Ubuntu 8.04的環境,以及Android 2.3搭配MagicLego的kernel來看,都是上述的thread model。當然,這裡只是以我自已目前使用中的開發環境當例子,不僅只於這二個環境。

為什麼一個Thread object連繫一個Native thread是比較好的做法,適合應用在multi-core的場合,這涉及到多核心的kernel scheduling技術,在後續的文章裡再做討論。基本上,只要您的系統是屬於上述的Thread object model,未來都能提供一個良好的多核心軟體開發環境。

應用程式到框架,框架透過JNI來到C/C++底層,Thread object與Native thread是一對一關係時,作業系統再將指定的Native thread指派到另外一個處理器,接下來就可以得到這樣的效果:Thread object被指派到另外一個處理器了。這就是為什麼應用程式的設計,以及底層的軟體系統,決定了系統是否能實現「多核心運算」的原因。

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw