Re: [問題] VM 的問題
※ 引述《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)就相關
部份審視通告後再配合地執行.
: 可能我經驗不足..可以解釋一下什麼是執行層次的不同
: 跟次序的同步性的意思嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.1.146
推
05/31 15:32, , 1F
05/31 15:32, 1F
推
05/31 19:15, , 2F
05/31 19:15, 2F
※ PsMonkey:轉錄至看板 java 06/01 01:02
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章