[轉錄]Re: [問題] VM 的問題
/*
原文轉錄已經經過原作者同意
作者並附帶希望加註:
: 「可以. 不過要提醒, 很多人可能會認為 使用 interpreter 或 just-intime
: compiler 的 Java 不是一種 Concurrent High Level Language, 也不知道
: 怎麼用, 用在何處(除了 OS 的範例習題) ! 」
*/
※ [本文轉錄自 Programming 看板]
作者: ggg12345 (ggg) 看板: Programming
標題: Re: [問題] VM 的問題
時間: Thu May 31 05:33:02 2007
※ 引述《huggie (huggie)》之銘言:
: ※ 引述《ggg12345 (ggg)》之銘言:
: : 這個比喻滿有趣的 !
: : 1. 寫在紙上需得有文字與符號.
: : 2. 人講話的語言可以沒有固定的書寫文字.
: : 通常有文字符號的, 都能大聲被唸出來, 甚至可以有不同的唸法.
: : 那麼, "中間碼" 就相當於書寫的文字與符號囉 ?
: : 可是使用 VM/Interpreter 的想法裡, 似乎還有額外的功能與要
: : 求, 也就是 執行中能做指述的檢視與結果檢察, 程式保護與並行
: : 這兩大項就可以不再透過 OS 來協助, 而是經由 VM 自備提供.
: 恩..可以解釋詳細一點嗎?
: 你的意思是像 reflection 這類的東西嗎?
: 透過 VM 來做有什麼好處呢?
Java 這個程式語言雖然也是 Object Oriented Programming Language
的一種, 可是她有一些額外特性就是具有 Distributed Concurrency.
如同多線程(Multiple Thread)的併行必須考量 Critical Region 的
同步/保護, Java 則提供類似 Monitor 的同步機制.
如果要支援 Concurrent Operation 的交錯執行, 甚至是平行就要能
"隨時按需要" 改變執行片段程式的 "輪流" 次序.
Binary Code Program 的執行(就是 Process) 是由 OS 控制的, 程式
本身只能受其控制, 但如果程式是中間碼形式就得透過 VM/Interpreter
這個解譯程式控制, 中間碼寫成的片段程式(通常就是個 Object) 就能
併行地執行.
把程式搬到某個機器執行, 最怕的就是 "誤動作" , 變的如同 "病毒" .
防範的方法之一, 就如同併行的要求, 就是在要執行前需先檢查後, 才能
放行, 中間碼形式的程式就需要 interpreter 先辨識才會被執行.
: : 交響樂的演奏, 必須得經由樂譜的不同段落的 "同時可視性" 來
: : 同步進行嗎 ? 合唱雖然可以不看樂譜, 但是否也得有同步的拍
: : 子 ? 而且還得聽見對方唱到那裡 ?
: : 執行層次的不同提供了跨平台性, 執行時可再度檢視指述動作的
: : 安全性與次序的同步性, 這是原來使用 VM 的原因吧 !
: 你的意思是這是非 VM 不可才能做到的囉?
併行處理的進行與同步, 資源的隔離與保護, 通常都是由 OS 獨斷性
掌控與支援的, 要 "好像" "隨時都能" "擁有這種能力" 通常得使用
VM.
簡單的說就是:
要執行 "敏感性(sensitive)" 的動作, 需要能被先攔下(trap)就相關
部份審視通告後再配合地執行.
: 可能我經驗不足..可以解釋一下什麼是執行層次的不同
: 跟次序的同步性的意思嗎?
--
侃侃長論鮮窒礙 首頁:http://www.psmonkey.idv.tw
眾目睽睽無心顫 Blog:http://ps-think.blogspot.com
煢居少聊常人事
殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.193.68
※ 編輯: PsMonkey 來自: 61.228.193.68 (06/01 01:07)