openKylin论坛

 找回密码

wine兼容windows应用原理是什么 [复制链接]

哪位大神大致讲解一下wine是怎么实现兼容windows应用的?谢谢!
楼主
发表于 2014-7-23 15:33:07
回复

使用道具 举报

wine兼容windows应用原理是什么 [复制链接]

原理:

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宽通用公共许可证)
沙发
发表于 2014-8-13 09:59:13
回复

使用道具 举报

openKylin

GMT+8, 2024-4-29 00:20 , Processed in 0.021344 second(s), 17 queries , Gzip On.

Copyright ©2022 openKylin. All Rights Reserved .

ICP No. 15002470-12 Tianjin

快速回复 返回顶部 返回列表