作者ggg12345 (ggg)
看板Programming
标题Re: [请益] Cambridge VM/XEN 是 Killer AP 吗 ?
时间Sat May 26 01:49:13 2007
※ 引述《queen8 (一日步兵、终身步兵)》之铭言:
谢谢指教.
XEN 是英国 Cambridge UNIV 发展的, 但 Hardware Full Virtualization 的
IBM 360 CP/67 是位於美国麻州的 Cambridge Reasearch Center 最早研发的.
: 不过, 必须提醒 IA-32 原设计就不把virtualization放在心里,请参考
: http://www.usenix.org/events/sec2000/full_papers/robin/robin_html/index.html
386 的 Virtualization 不足已是实况. 但从 286 过来时, 记得是诉求着要发展
完整的 Virtual Machine(这需要 Virtual Memory) , 所以设计改 286 segment
加入 page 的 MMU 後拖延一阵, 後来就配合 MicroSoft 改向 VM86 的提供. 因
为 8086 native mode 不会用到 MMU , 这个 VM86 mode 就比较好做. 没做完全
也算是不把 Full Virtualization 放在心里吧.
提供的文章并未说明 Intel 当时是怎麽回事, 只是检视了所有指令, 把该拦下的
却未拦下的讨论与数了出来.
对於非VM机器, priviledge instruction 在 user mode 通常是以 NOP
处理就可以了, 只有在 priviledge mode 才会生效执行. 但 VM 的 sensitive
instruction 则不仅是有 priviledge 特性, 对 user mode 的 sensitive
instruction 执行, 也都是要视为 illegal 要能 trap 拦下来才行. 这一点
X86 是做了. 但有些指令是 kernel 在用但 user 通常不用的, 就容易被忽略,
若不被设定为 priviledge instruction 反正也是在 Kernel 被执行. 但如果
要使用 VMware 这样的用法的话, guest OS 的 kernel 就是在 user mode 被
执行, 此时被忽略的 sensitive instruction 才会被发现不是 priviledge
instruction, 不会被 trap.
个人的看法是 Intel 是有配合 VM 做了 user mode priviledge
instruction 的拦截, 据此, 不能说完全无心去做. 但某些 sensitive
instruction 因为并未企图完成 VM OS , 就没有这些检验的经验, 所以
就被忽略了. 这个忽略是没有变成 priviledge instruction . 这些大部
份出现在 ring 0 使用, VMware 把这些找了出来也找到不算慢的软体处
理方法. 其他的 ring level 因为 Multi-Process OS 保护隔离要用到,
失误会比较少. 所以说 ring 0 的 sensitive instruction 不好找 !
不过, 有 VM 理论在, 好不好找似乎不是理由. 但究竟怎麽回事, 就
难说了, 反正现在是补上了. 但如果又不跑 VM , 去拦这些指令, 还真是
多此一举的变慢, 所以不用 VM, 要 disable trap 会比较好.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.5.5