Unverified Commit 3f1ae7a3 authored by zcmimi's avatar zcmimi Committed by GitHub
Browse files

Update wsl.md

parent e5e3839e
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -44,16 +44,18 @@ Windows 10 在一周年更新时推出了 Linux 子系统(WSL),在 2020

WSL 的机制,总体上是在运行时将 Linux 系统调用翻译为 NT API 调用,从而在 NT 内核基础之上模拟实现 Linux 内核。

无论是在 ABI 还是 API 层模拟,Linux/UNIX 与 Windows NT 毕竟是两类内核,设计理念、设计标准等多方面差异甚大,无法实现完全对等模仿,WSL 无法兼容所有 Linux System Call,这就造成有的程序无法在 WSL 中运行。
无论是在 ABI 还是 API 层模拟,Linux/UNIX 与 Windows NT 毕竟是两类内核,设计理念、设计标准等多方面差异甚大,无法实现完全对等模仿,WSL 无法兼容所有 Linux 系统调用,这就造成有的程序无法在 WSL 中运行。

也许是因为 WSL1 靠翻译 System Call 来模拟 Linux 内核存在诸多问题,这种黑科技思路此次被微软完全抛弃。WSL 2 采用了虚拟机的技术,仅仅是名字上延续了 WSL,再也不是当初那个 WSL 了。WSL2 引入了修改版的 Linux 内核,基于 Linux 4.19,这也是 Linux 内核的长期支持版,新的内核经过了微软悉心改造,以便与 Windows 相配合,获得更好的用户体验。WSL2 将 Linux 内核塞到一个轻量级的虚拟机(Virtual Machine,VM)中运行,使用体验基本与 WSL1 保持一致。
也许是因为 WSL1 靠翻译 系统调用 来模拟 Linux 内核存在诸多问题,这种黑科技思路此次被微软完全抛弃。WSL 2采用了虚拟机的技术,仅仅是名字上延续了 WSL,再也不是当初那个 WSL 了。WSL2 引入了修改版的 Linux 内核,基于 Linux 4.19,这也是 Linux 内核的长期支持版,新的内核经过了微软悉心改造,以便与 Windows 相配合,获得更好的用户体验。WSL2 将 Linux 内核塞到一个轻量级的虚拟机(Virtual Machine,VM)中运行,使用体验基本与 WSL1 保持一致。

使用虚拟机的方式带来了运行效率和兼容性两方面的提升。根据微软自己的测试,与 WSL1 相较,在 WSL2 中解压 zip 文档速度提升了 20 倍,使用 git clone、npm install、cmake 提升大约 2~5 倍。由于使用了真正的 Linux 内核,意味着 WSL2 全面兼容 Linux System Call,理论上能在 GNU/Linux 上运行的程序也都能在 WSL2 中不经修改直接运行。
使用虚拟机的方式带来了运行效率和兼容性两方面的提升。根据微软自己的测试,与 WSL1 相较,在 WSL2 中解压 zip 文档速度提升了 20 倍,使用 git clone、npm install、cmake 提升大约 2~5 倍。由于使用了真正的 Linux 内核,意味着 WSL2 全面兼容 Linux 系统调用,理论上能在 GNU/Linux 上运行的程序也都能在 WSL2 中不经修改直接运行。

性能方面,WSL 和 WSL2 各有优势。 **如果不和本机系统交互,WSL2 的性能非常不错,但如果访问 Windows 文件系统下的文件,IO 性能会下降很多。** 

如果你经常使用 WSL 来访问 Windows 文件系统上的项目文件,那么建议你使用 WSL 1,因为跨 OS 文件系统具有更高的性能。



## 启用 WSL

???+ warning