首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >葡萄酒怎么不是仿真器?

葡萄酒怎么不是仿真器?
EN

Unix & Linux用户
提问于 2013-11-11 10:54:45
回答 6查看 12.1K关注 0票数 29

正如我所理解的,仿真器(以一种简单的方式)确实将使用system函数的程序的函数调用转换或替换为运行程序的系统Y所使用的函数。葡萄酒项目声称葡萄酒不是仿真器,因为:

与其像虚拟机或仿真器一样模拟内部Windows逻辑,葡萄酒还可以动态地将Windows调用转换为POSIX调用,从而消除了其他方法的性能和内存损失,并允许您将Windows应用程序干净地集成到桌面中。

那么,模拟器和虚拟机是如何在主机非Windows系统上模拟内部Windows逻辑的呢?难道不是通过将Windows系统调用转换为主机自己的调用吗?仿真器和非仿真器(如葡萄酒)的区别是模拟器模拟整个操作系统,然后应用程序在不知道它正在与模拟器对话的情况下使用系统API,而非仿真器直接将应用程序的调用转换为主机的调用(应用程序也可能不知道)?额外的间接水平是仿真器和葡萄酒之间唯一的区别吗?

EN

回答 6

Unix & Linux用户

回答已采纳

发布于 2013-11-11 11:06:12

那么,模拟器和虚拟机是如何在主机非Windows系统上模拟内部Windows逻辑的呢?难道不是通过将Windows系统调用转换为主机自己的调用吗?

不,或者至少在葡萄酒的意义上没有--通过字面翻译系统在用户空间中一对一地调用。仿真器通过更迂回的路由抽象地完成此操作;它不直接转换系统调用。

一个真正的仿真器创建一个虚拟机(例如x86-64),而不是一个虚拟操作系统。理论上,您可以针对这种类型的机器运行任何操作系统。通常,“模拟器”包括操作系统,但这并不是它真正要仿真的;它包含的操作系统与在真正的机器上运行的操作系统是相同的。

模拟器有时用于模拟与主机不同的硬件,但也用于在另一台操作系统中运行完全相同的硬件。

葡萄酒与此不同,因为它实际上不是窗户。您可以运行一个x86-64仿真器,里面有一个真正的窗口副本,但这不是葡萄酒。他们声称它实际上比仿真器更高效,这是有意义的--仅仅转换系统调用的开销可能比运行VM的开销要低。缺点是,葡萄酒只能是窗口;您不能像正常VM那样将它与其他操作系统一起使用。

票数 32
EN

Unix & Linux用户

发布于 2013-11-11 16:44:31

考虑一下Java虚拟机。没有JVM模仿任何其他的,它们都是规范的实现。Wine不是模仿win32 api,而是它的一个实现。规范和现实不一定是匹配的,微软的实现和葡萄酒的实现都有使buggy代码工作的解决办法,而且对于任何给定的项目来说,哪种实现是更好的目标并不一定是显而易见的。

票数 16
EN

Unix & Linux用户

发布于 2013-11-11 16:12:44

Linux是一个shim,它拦截windows调用并在动态中将它们转换为相应的Linux调用(S)。而仿真器或虚拟机则模拟物理机器。显然,shim更有效率,但可能无法完全模仿所需的功能。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/100739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档