作者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)就相关
部份审视通告後再配合地执行.
: 可能我经验不足..可以解释一下什麽是执行层次的不同
: 跟次序的同步性的意思吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.1.146
1F:推 huggie:多谢详解 140.129.77.13 05/31 15:32
2F:推 pao0111:推... 125.229.163.40 05/31 19:15
※ PsMonkey:转录至看板 java 06/01 01:02