大家来讨论一下虚拟机的原理吧 ( 积分: 200 )

  • 主题发起人 主题发起人 古奕
  • 开始时间 开始时间

古奕

Unregistered / Unconfirmed
GUEST, unregistred user!
虚拟机的原理到底是什么的?它是怎么虚拟出一台机器的?真的能虚拟出CPU,主板,硬盘,显卡,等各种硬件吗?它说到底只是一个windows应用程序,编这个程序的时候也是调用各种windows API。我最想知道的是,在虚拟机里的程序它的运行机制是什么样的?在学校里上系统结构课的时候,在软件的可移植性问题上提到过“虚拟”和“仿真”,所谓“虚拟”大概是用一台机器的一系列指令去解释另一台机器的一条指令;所谓“仿真”,大概指用一台机器的微指令去直接解释另一台机器的一条指令,比“虚拟”进了一步。不知道虚拟机的“虚拟”跟这个有没有关系?
 
记得我曾经写过一篇关于虚拟机的短文发表在 01cn 上。这里仅做简要回答如下:

1。虚拟机由三个基本部分组成。他们是 (I/O - 内存)布局、寄存器定义、指令仿真。
2。他基本不用 Windows API (主要是没必要用)。
3。虚拟机最关键的是上面列出的基本部分的第一部分,仿真一个真实的系统,关键于此。
4。寄存器定义类似上一条,同时包括定义中断。
5。指令仿真实际上做二件事:运算和置数。
6。其他,就是一些开工需要的工作。

说到底,他是一个应用程序,最大的特点是他只操作内存。
 
关注中,有更好的看法请继续
 
有两种, 一种是完全虚拟, 以解释的方式运行机器指令, 这种速度奇慢, 但可以用32位CPU模拟出64位的CPU. 另一种就是目前VMWare等使用的, 它们仍用CPU来执行大部分机器指令.
 
小雨哥分析的透彻。
 
谢谢小雨哥的解答,另外如果要用delphi编写一个虚拟机,需要了解哪方面的知识?我查了一下这方面的资料很少啊!
 
不是有个开源的虚拟机项目嘛,干嘛不去看看
 
好的,谢谢大家了,特别感谢小雨哥!!
 
后退
顶部