Re: [問題] VM 的問題

看板Programming作者 (ggg)時間18年前 (2007/05/31 05:33), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串14/14 (看更多)
※ 引述《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
文章代碼(AID): #16NUsFWT (Programming)
文章代碼(AID): #16NUsFWT (Programming)