Windows Subsystem for Linux

Cygwin和MinGW的区别与联系

  • 从目标上说:MinGW让Windows用户可以用上GNU工具,比如GCC。Cygwin提供完整的类Unix环境,Windows用户不仅可以使用GNU工具,理论上Linux上的程序只要用Cygwin重新编译,就可以在Windows上运行。
  • 从能力上说:如果程序只用到C/C++标准库,可以用MinGW或Cygwin编译。如果程序还用到了POSIX API,则只能用Cygwin编译。
  • 从依赖上说:程序经MinGW编译后可以直接在Windows上面运行。程序经Cygwin编译后运行,需要依赖安装时附带的cygwin1.dll。

Vmware是使用多年的虚拟机软件,拥有强大的功能。Hyper—V是微软自带的虚拟机软件。

  • 软件运行方面
    • Vmware软件开启时比Hyper-V慢一些, 可能是VMware软件较大的缘故。Hyper-V虚拟机开启也较快一些,在虚拟机配置上都是差不多的步骤。Hyper-V是微软自带的虚拟机软件,在配置软件时要先在BIOS里开启虚拟化,然后再开启Hyper-V功能。两个软件冲突,不能同时使用两个软件,只能关掉Hyper-V之后重启系统VMware才可用。
    • Vmware挂起虚拟机较慢,需要等到虚拟内存释放掉才能关机。而Hyper-V挂起虚拟机比较快,且可在不考虑虚拟系统运行的情况下直接关机。
  • 在显示方面:
    • 在虚拟系统显示上VMware略胜一筹,在开启vm-tools之后能够自动配置虚拟系统界面显示大小,Hyper-V只能显示固定大小。
  • 网络配置方面
    • VMware可随时桥接主机网络适配器,Hyper-V需要配置虚拟路由器。
  • USB支持
    • Hyper-V不能直接使用USB外设,这直接导致我弃用Hyper-V,Hyper-V设计的一大败笔。

Windows Subsystem for Linux(简称WSL),WSL是Windows10的Linux子系统,WSL2是基于Hyper-V的,WSL2就运行(依赖)于hyperv了。WSL1的底层调用是调用的Win32的库,类似cygwin(cygwin就是用win32的库实现了Linux的各种api),HyperV是一个真正的虚拟机,有完整的硬件模拟,能把整个完整的Linux塞进去。

对于WSL1来说,主要的缺点有:

  • 文件I/O慢,尤其是在大量I/O操作时,例如使用git克隆仓库;
  • 不支持内核程序;

WSL2针对以上两个缺点进行了修正:

  • 相比较于WSL1使用翻译层将Linux系统调用转化成windows系统调用,WSL2使用了一个轻量级的、无需维护的虚拟机,并在这个虚拟机中运行了一个完整的Linux内核。
  • WSL2使用一个VHD虚拟磁盘文件作为Linux发行版的根目录,其中使用ext4文件系统格式,极大提升了I/O性能。

WSL1与WSL2特性比较说明如下:

  • WSL1和WSL2都可以实现在windows中带来Linux操作体验;
  • 启动速度都不慢;
  • 内存消耗都比较小;
  • WSL1没有使用的VM,WSL2使用了一个自动维护的VM;
  • WSL1不支持,WSL2支持可以运行例如Docker等程序;
  • WSL2支持完整的linux内核调用,而WSL1不行;
  • 由于WSL2使用了Hyper-V,由于兼容性原不用同时运行WSL2与VMWare或VirtualBox,WSL1不存在此问题;
  • WSL2不能与windows跨操作系统文件操作(Windows访问WSL2的方法为进行WSL2环境键入 “cd ~” 进入主目录后,再键入"explorer.exe ."可在windows文件管理器中访问WSL2文件,此外还可以通过虚拟机的方法互通文件,如网络,文件共享等),而 WSL 则与windows在同一文件系统中。

WSL2带来最大的改变就是提升文件I/O性能,但这个提升仅限于WSL2根文件系统中(VHD中),并且微软文档指出,跨操作系统文件操作时WSL1要快于WSL2。因此,在以下情况是仍然建议使用WSL1:

  • 你的文件必须存储在windows文件系统中,从WSL中访问windows中的文件时,仍然是WSL1快
  • 当你的项目文件同时需要被WSL和Windows访问时(如交叉编译同一份源码),从Windows访问WSL中的文件时,仍然是WSL1快

由于WSL1与WSL2的实现方式不同,在其他方面WSL2也有与WSL1不同的表现。

  • WSL2中任务管理器中不再现在WSL中的进程;
  • WSL2网络访问方面,微软会做一定优化,但本质上还是虚拟机的方法;

总结:如何选择WSL1还是WSL2:

  • 如果你看中WSL与windows文件互通和互操作性,还是WSL1更适合;
  • 如果你常在VM里开发,工作环境基本都在Linux中,那么WSL2会带来更加完美的体验;
  • 如果你需要内核功能,那只能是WSL2了;
  • 从网络,与其他软件兼容性等方面考虑;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值