研發背景
NTSync驅動誕生的核心原因在於解決用戶空間模擬Windows NT同步原語時存在的性能與語義準確性瓶頸。
在用戶空間模擬NT同步原語(如通過Wine)存在局限性,其實現無法在提供準確語義的同時匹配Windows性能。在用戶空間正確模擬NT同步原語一直很麻煩,而且會產生很大的性能開銷。
NTSync是一個支持驅動,用於用戶空間NT模擬器對NT同步原語的模擬。該核心驅動方案為仿真
Windows NT同步原語提供了核心支持,旨在提供高性能且語義準確的模擬。其目標在於提升Windows應用程式(尤其是遊戲)在
Linux上的兼容性和運行效率。
發展歷程
2024年,
CodeWeavers的Elizabeth Figura領導開發NTSync驅動程式,通過核心支持模擬
Windows NT同步原語,以提高Wine/Proton等兼容層在
Linux上運行Windows應用程式的性能。2024年4月,NTSync補丁被納入char-misc-next分支,計畫提交給5月開放的Linux 6.10核心合併視窗。
2024年5月,NTSync驅動程式隨Linux 6.10的char/misc更新被初步合併至核心主線。但由於大部分功能補丁未合併,該版本中的驅動程式被標記為“已損壞”或實驗性,無法在正常核心構建中使用。
NTSync驅動的剩餘功能補丁有望在Linux 6.11或後續版本中被上游接受。根據規劃,該驅動將在Linux 6.14版本中完成功能完善並默認啟用。在
Linux核心主線開發的同時,下游生態也開始適配,Wine 10.15版本首次集成了對NTSync驅動的支持,deepin 25發行版所搭載的Linux 6.12核心也已集成了該特性。
核心技術
NTSync是一個純軟體實現的Linux核心驅動,不驅動任何硬體設備,用於在用戶空間NT模擬器中模擬Windows NT同步原語。同步對象(信號量、互斥鎖、事件)由
檔案描述符(fd)表示,生命周期與檔案描述符綁定;每個打開的檔案描述代表一個獨立的NT實例(虛擬機),實例間對象隔離;對同一對象的操作具有原子性和全序性。
運營模式
NTSync是Linux核心驅動模組,通過字元設備提供服務,用於模擬Windows NT同步原語以提升Windows套用在Linux上的性能。該驅動主要被Wine、Valve Steam Play(Proton)等Windows套用兼容層調用,並在特定Linux發行版(如deepin 25的6.12核心)和定製Wine版本(如deepin-ge-proton10)中集成並默認啟用。
核心團隊
NTSync驅動項目的開發工作由CodeWeavers公司主導,該公司工程師Elizabeth Figura是該項目的主要領導者和技術貢獻者。
Linux核心維護者Greg Kroah-Hartman負責將該驅動的補丁提交併合併入Linux核心主線(如Linux 6.10)。CodeWeavers公司在此過程中與
Valve(Steam/Proton)等利益相關方進行了合作。
重要事件
2024年4月,NTSYNC驅動程式被宣布將合併到即將發布的Linux 6.10核心中。
2024年5月,NTSYNC驅動程式隨Linux 6.10的char/misc更新正式併入核心樹,但初始版本因功能不完整被標記為“已損壞”。
該事件對於提升Linux上Windows遊戲及應用程式的性能與生態兼容性具有重要意義。