openKylin论坛

标题: wine兼容windows应用原理是什么 [打印本页]

作者: xlord119    时间: 2014-7-23 15:33
标题: wine兼容windows应用原理是什么
哪位大神大致讲解一下wine是怎么实现兼容windows应用的?谢谢!

作者: LHS    时间: 2014-8-13 09:59
原理:

windows程序由wine-preloader加载(加载所需的dll和共享库,完成代码的重定位)以后,首先检查wineserver是否运行, 没有运行就启动它。利用socket建立连接。最新版的代码在wine/dlls/ntdll/server.c里面。wineserver运行以后,首 先建立一个socket套接字,等待客户端连接,从客户端连接开始,调用create_process建立一个虚拟的windows进程,作为整个 wine的主进程,(相当于linux的init进程)。然后它创建一个pipe(管道),作为客户端和wineserver通信的工具。然后 wineserver进入main_loop()函数,main_loop主要轮训各个poll队列,读取客户端的请求,并执行相应的服务。 wineserver还具有"进程调度”的功能。


概述:

Wine (Wine Is Not an Emulator)[即Wine不是一个模拟器]是一个在Linux和UNIX之上的,Windows 3.x和 Windows APIs的实现。注意,Wine不是Windows模拟器,而是运用API转换技术实做出Linux对应到Windows相对应的函数来调用DLL以运行Windows程序。Wine可以工作在绝大多数的UNIX版本下,包括Linux, FreeBSD, 和 Solaris。另外,也有适用于Mac OS X的Wine程序。Wine不需要Microsoft Windows, 因为这是一个完全由百分之百的免费代码组成的。如果有可利用的副本的话,它也可以随意地使用本地系统的DLLs。Wine的发布是完全公开源代码的,并且是免费发行的。(基于LGPL发布:GNU宽通用公共许可证)




欢迎光临 openKylin论坛 (https://forum.openkylin.top/) Powered by Discuz! X3.3