Nemesis2k
驱动牛犊
驱动牛犊
  • 注册日期2002-03-29
  • 最后登录2004-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2162回复:11

大家讨论讨论VMWare是如何实现的怎么样阿?

楼主#
更多 发布于:2002-05-10 21:22
大家讨论讨论VMWare是如何实现的怎么样阿?

最新喜欢:

flyfoxflyfox
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-13 00:23
这工具确实不错,我在一位朋友那里看见了,不过我还没有使用过。但其中的技术含量是很高的,我觉得应该不压于SoftIce。
我只是初步考虑了一下(我根本还有使用过该软件),需要做操作系统的许多工作,同时要将一个运行环境虚拟出来。
至于更准确、详细的结论只有在我研究它以后才可能知到。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
RuFeng
驱动牛犊
驱动牛犊
  • 注册日期2001-03-28
  • 最后登录2006-06-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-13 09:00
这东西我很喜欢,觉得它做得很好,但有一点美中不足,就是在安装了它的svga驱动后,不能使用softice,这就是最不好的方式,它的基本实现原理,我大概的看法是:对于所以的硬件,使用了hook的方法,把所有的硬件中断都拦下来了,然后先检查当前进程是不是VMWare的一个窗口,如果是,就防真触发它里面的中间,做一个搭桥大法,把所有读端口的数据在硬件读出后交给VMare里面的系统,这已经可以实现对于所有外部硬件使用的仿真任务,当然系统里面就应有一个软件的CPU,这东西主要的工作是解释X86指令,同时它还带了bios程序,而它一早就在内存中申请一块物理内存,然后虚拟X86CPU的物理地址访问基制,这中间应有一个转换表,可以实现物理地址到线地址(真实内存)的转换,这样就可以实现了CPU的内存地址的访问,它最基本是使用VGA防真的,这部分处理基本上在bois和端口,都比较标准,这部分的访真不算太难,最后就是对于磁盘硬盘的访问了,这一部分也是一种地址转换,因为它实现的是一套CPU系统,所以我个人觉得只要CPU,内存,磁盘,VGA这四者做好了后,所有的其它硬盘都是一种跳桥转换,后来它自带了一个SVGA驱动,这部分个人感觉来说,是一个directx的开发,就是得到了线性内存的地址后,把它的vmware的directx地址连起来,就可以实现了。这上面的只是个人对它的见解,可能很多不足的地方,可惜网上找不到这样的linux源程序,要不然如果真的有,同时有数位高手的一起工作,说不定可以做出一套很好的开发操作系统的开发平台,同时由于这里面的所有的一切都有办法控制和仿真,如果可以加上调试开发接口,就可以实现硬件调试器的功能,这样对于研究和开发操作系统都有很好的帮助,连系统的启动和执行过程都可以一步步的调试,可以大大提高中国软件人才在操作系统的了解和水平。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-13 09:34
楼上的兄弟说得可能没错,但我听朋友介绍说,这东东在展示是在一台工作站上运行,同时跑了10几个操作系统,引起业界轰动,所以我个人认为,不仅仅是要完成一个操作系统的工作,更重要的是要要虚拟其它环境。
还有楼上的兄弟说有了它不能运行SoftIce,这有可能,不过你是不是已经通过SiSetup.exe进行设置了,还有,是不是可以在安装了VMWare后在安装SoftIce就可以,当然,显卡应该设置为真实的显卡。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
Nemesis2k
驱动牛犊
驱动牛犊
  • 注册日期2002-03-29
  • 最后登录2004-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-13 12:56
当然系统里面就应有一个软件的CPU,这东西主要的工作是解释X86指令
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
能肯定这一点吗?难道说在VMWare里面运行的OS的每一条指令
都是由VmWare解释执行而不是直接由机器执行的?
如果是这样,那实现的原理到不是很复杂(相对而言)。
我本来是以为VMWare里面运行的OS的每一条指令也都是
由机器直接执行的,当时的困惑就是如果虚拟机里的
OS,比如Windows 2000同样要进入0级,这样VmWare不就
管理不了了吗?后来又想也许VMWare可以截获这些指令
然后欺骗windows 2000他进入了0级。。。。。。
呵呵,x86体系结构不太熟悉。。。
uox
uox
驱动牛犊
驱动牛犊
  • 注册日期2002-05-11
  • 最后登录2005-02-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-13 19:06
当然系统里面就应有一个软件的CPU,这东西主要的工作是解释X86指令

个人认为应该是这样的,就像一些游戏机的模拟器,在电脑中实现完全的硬件系统的仿真,包括显卡等。经实际观察发现,Host机器的开销很大,应该是用软件仿真的
eqinzm
驱动牛犊
驱动牛犊
  • 注册日期2001-10-18
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-05-27 16:57
sourcefore上面有个bochs虚拟机的源码
可以工作在多平台
包括windows
效果跟Vmware差不多
bochs是很复杂
要虚拟cpu,vga,bios,fpu,mem等很多东西
不过国内有些杀毒软件很早就在用这技术了
Hi
Nemesis2k
驱动牛犊
驱动牛犊
  • 注册日期2002-03-29
  • 最后登录2004-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-31 09:19
下面几个贴子是我在VmWare公司的新闻组里看到的,答复的
好象是VmWare公司的技术支持人员。按照他们的说法,VmWare
和Bochs可不一样,后者只是一个机器指令解释器,而VmWare
则是一个机器虚拟器,Guest OS里的机器指令是真正的在
CPU上执行的,而不是由VmWare来解释执行的。。。。。。
> Note that there is a distinction between an Emulator, and what VMware is.  
> VMware is a \"virtualizer\", not an emulator (strictly speaking).  Emulators
> simulate the entire CPU system.  VMware arbitrates access to your physical
> hardware between your real OS, and your virtual OSes.  It\'s not quite the
> same thing (and is one reason why VMware is faster than DOS emulators.  The
> DOS emulator has to bascially interpret the original machine code, where
> VMware can pass most of that work off directly to the CPU).

> > VMware can pass most of that work off directly to the CPU).
> Are your sure? Do you mean that VmWare is NOT just a machine code
> interpreter, but actually something more powerful, something
> can let guest OS\'s machine instructuions run directly in the
> TRUE CPU? So is it like VMM for Windows 9X? If it is, it is
> awesome, and VmWare corp really do an amazing job:)
> But, if Guest OS run LGDT SGDT etc instructions, what will happened?
>

Yep.  VMWare presents your underlying CPU to the Guest operating system, as opposed to attempting to interpret the machine codes.  This is why VMware has better performance than some other emulators, such as Bochs which actually does machine code interpretation.

However, VMware does not run under Win9x.  Only NT/2K (and Linux).

lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-03 18:36
1. 模拟CPU的BOOT. 将BIOS代码映射到FFFFFFF0.和FFFF0.让它自己GO下去.
2. 实现IO那部分的转发, 当IRQ来时, 确保每个VM都有一个机会UPDATE自己的数据.
3. 将每个OS跑的时候调用特权指令引发的FAULT截获, 自己根据需要更新对应OS的CPU/外围设备状态的描述.
4. 实现自己的设备征用算法. 简单点就自己维护一个IO队列. 不要让2个OS同时抢到HDD的写权. 但是估计VMWARE不支持SMP, 所以问题并不是很大.
5. VMWARE并不需要了解实际跑的是什么OS, 只要模拟硬件就可以了.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
chen001
驱动小牛
驱动小牛
  • 注册日期2001-12-24
  • 最后登录2005-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-27 14:43
就是一个虚拟解释器,所有的代码均是解释执行的(当然有部分是直接执行的),所以即使是Win2000要进入0环都没有问题!这就是为什么它要运行在多CPU系统中的原因。

我手上有一个其它的源代码,可以在虚拟环境中运行WinNT4/9x,2000/XP我没有试,其运行平台为Win9X/NT/2000/XP/Linux/Unix/Soliar
???
chen001
驱动小牛
驱动小牛
  • 注册日期2001-12-24
  • 最后登录2005-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-27 14:44
我的那个源代码还支持1~8个CPU的模拟。 :D
???
xiaogame
驱动牛犊
驱动牛犊
  • 注册日期2002-10-01
  • 最后登录2002-10-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-10-01 03:02
据我了解,vmware是工作在x86环境里的,x86有0-5共6层级别。系统工作在ring0,其它软件工作在ring3,正常情况下只使用0,3这两层。我想vmware可能用了其他层,比如:vmware工作在ring0,vmware里系统工作在ring3,软件工作在ring5

chen001:可不可以发那个源代码给我:chenyg_hoo@yahoo.com.cn,谢谢

[编辑 -  10/1/02 by  xiaogame]
游客

返回顶部