当前位置: 首页 > news >正文

Wine 与 Linux 内核的交互

Wine 不进内核,也不加载内核模块。Windows 程序以普通 Linux 用户态进程运行;Wine 在用户态把 Windows API / NT syscall 翻译成 Linux 系统调用,或交给 wineserver 做“假内核”对象管理。

总体路径

1. 直接系统调用(最常见)

ntdll的 Unix 层把大量Nt*映射到 Linux syscall / libc:

Windows 语义Linux 侧

虚拟内存NtAllocateVirtualMemory

mmap/mprotect/munmap/madvise(见dlls/ntdll/unix/virtual.c

文件 I/O

open/read/write/ioctl/fcntl

线程 / 进程

clone/pthread/fork+exec

异常 / 调试相关

sigactionSIGSEGV/SIGILL/… → SEH)

同步(部分)

futex、pipe、eventfd 等

信息查询

/procsysctl

特点:同一进程内、能一对一映射的语义,尽量直达内核,延迟低。


2. wineserver:用户态“Windows 内核”

Windows 内核对象(句柄表、Event/Mutex、命名管道、注册表、窗口消息协调、跨进程同步等)在 Linux 上没有对应物,由独立进程 wineserver 实现。

每个 Wine 线程在 TEB 私有数据里挂着与 server 通信的 fd:

wine_server_call()走 Unix socket:发请求、等回复;传 fd 用sendmsg/recvmsg(SCM_RIGHTS)。

wineserver 自己也会调内核,例如:

  • 用 ptrace 读写别的 Wine 进程内存(server/ptrace.c
  • 用 epoll/poll、文件、socket、信号管理全局状态
  • /procserver/procfs.c

可把它理解成:Windows 内核对象管理器在用户态的实现。

3. “Windows syscall” 在 Wine 里是假的

真实 Windows:syscall→ ring0。
Wine:syscall指令被劫持到__wine_syscall_dispatcher,再进ntdll.so的 Unix 实现。

对应用来说像进了内核;对 Linux 来说仍是用户态库调用,必要时再syscall进 Linux。


4. 信号:把内核事件变成 Windows 异常

例如缺页、非法指令:

  • 内核发SIGSEGV/SIGILL/ …
  • Wine 的sigaction处理函数转成 NT 异常 / SEH
  • 再走 Windows 异常分发逻辑

这是 Wine 和内核之间很关键的一条“异步”通道。


5. 其它常见内核接口

  • 图形:经 X11/Wayland(用户态协议)或 DRM//dev/dri到 GPU 驱动
  • 音频:ALSA/Pulse/PipeWire
  • 输入:evdev、Wayland 等
  • 网络:普通 BSD socket → 内核网络栈
  • 设备文件:/dev/*上的open/ioctl

一张简图

一句话:Wine 与 Linux 内核的交互 = 用户态翻译层(ntdllUnix)直接做系统调用,加上 wineserver 用 IPC + 系统调用模拟 Windows 内核对象。

http://www.jsqmd.com/news/1243574/

相关文章:

  • 晚期风格即兴
  • 深入理解wysiwyg.css实现原理:从Sass源码到压缩CSS的完整流程
  • 浪琴石家庄唯一官方售后网点地址及客户服务热线电话2026年7月最新权威声明 - 浪琴服务中心
  • Fody与MSBuild集成指南:让IL编织无缝融入你的开发流程
  • 危重瓣膜病就医抉择:为什么ViV瓣中瓣手术必须选对医院?——基于合肥高心高危病例的技术与护理体系拆解
  • Jellium Desktop视频色彩空间设置:选择适合你的显示设备
  • 2026年7月苏州办公家具厂家推荐:板式/实木/钢制办公桌椅、会议桌服务商选择指南 - 海棠依旧大
  • Vanguard 发布 AI Agent 自主套利基础设施,以多智能体协同推动预测市场进入自动化执行时代 - 资讯报道
  • Hue全局配置文件hue.ini详解与最佳实践
  • 椰林海鲜码头企业愿景是什么?建立严苛品控体系,守住真实经营的 - MXyuyu
  • 如何快速入门Neural Amp Modeler?从gh_mirrors/na/NAM_models开始的完整指南
  • 2026 年更新:汉沽靠谱的装配式箱房订做厂家有哪些,别再租房了!这种模块化结构如何颠覆你的居住体验?-旭华建筑工程 - 企业推荐官【认证官方】
  • 【Python毕业设计】基于 Python 的科研论文文献整理与智能检索系统 数字化学术文献资源聚合管理平台(源码+文档+远程调试,全bao定制等)
  • wechatpay-apache-httpclient常见问题排查:从私钥加载到证书更新全攻略
  • 罗湖区靠谱搬家公司盘点|家庭/企业搬迁均可 推荐:深圳顺风搬迁 - 深圳顺风搬迁
  • 全城关注!欧米茄福州官方客户服务热线及售后网点地址2026年7月最新通告 - 欧米茄官方服务中心
  • 亲身探访深圳萧邦官方售后服务中心|官方热线和维修地址(2026年7月最新) - 萧邦中国官方服务中心
  • 100K带宽回传高清视频:AI通信技术如何做到?
  • 豹图CAD(CAD快速看图软件)
  • Alfred效率神器:从基础到高阶的macOS自动化指南
  • 亲身到店探访广州宝玑官方售后服务中心|最新电话及维修地址(2026年7月最新) - 亨得利官方服务中心
  • 本地教培行业SEO优化公司靠谱推荐,连锁机构/单店门店专属同城获客服务商甄选 - 资讯速览
  • 从0到1:AWS CodeCommit创建与管理代码仓库完全教程
  • 柔性制氢 + 氢冶金:打造稳定的深度脱碳管道 - 蓝色星球
  • AIOps为什么需要从“处理告警“转向“理解业务服务关系“?
  • 2026武汉机械企业GEO营销服务商综合盘点:本地实力推荐7家及选型避坑指南 - 产业观察报
  • 椰林海鲜码头企业愿景是什么?坚持正本清源经营,营造健康餐饮环 - MXyuyu
  • 如何使用Awesome MakerDAO:新手入门的5个关键步骤与实用技巧
  • 10个ExifToolGui高级技巧:提升照片元数据管理效率
  • 2026年上海英国签证办理机构全指南:最新政策、行业乱象与靠谱选择 - 互联网科技品牌测评