类Unix环境在Windows上的演进史

自从以Unix为基础的操作系统被发明以来,尝试在Windows环境中模仿Unix操作的工具就一直存在。这种需求源于许多原因,包括Unix对脚本和命令行工具的强大支持,以及Unix和Linux系统在科学、工程和其他技术领域的广泛使用。下面就让我们一起探讨下在Windows上模仿Unix环境的演进史。

在这里插入图片描述

标题模拟Unix环境

最初,对于在Windows上运行Unix程序的需求,主要通过一些简单的实用程序和工具来满足,比如Cygwin。Cygwin是一款提供了大量GNU和开源工具的软件集合,它可以在Windows上创建一个类Unix环境,让开发者可以在这个环境中使用类似于Linux的命令行接口。在Cygwin中,我们甚至可以使用类似在Linux上的包管理工具apt。Cygwin不但支持许多Linux的命令行工具,如bash、ls、grep等,通过使用Cygwin/X,甚至图形应用也可以移植到Windows环境中。目前Windows上的X Server如Xming等就是基于Cygwin/X开发的。

Cygwin通过在运行时动态转换POSIX系统调用来实现这个目标,它提供了一个Cygwin.dll文件,这个文件对POSIX系统调用进行了实现。基于Cygwin的GNU编译环境提供了对POSIX系统非常好的兼容性。但由于有了这个POSIX系统调用的转换层,编译出来的代码效率上有一定的损失。为了弥补这个问题,开源社区又推出了一个简化版的GNU编译环境MinGW。MinGW,全称为Minimalist GNU for Windows。MinGW的目标不是提供一个完整的类Unix环境,而是直接在Windows环境下使用GCC编译器。因此,MinGW编译出来的结果是原生的Windows应用程序,它们直接使用Win32 API,不需要任何的运行时库。

由于MinGW只是一个GNU编译环境,作为补充在其基础上又开发了一个Unix风格的小型shell环境MSYS(Minimal SYStem)。MSYS的目标是提供一个足够的环境,使得用户可以在Windows平台上运行configure脚本和生成Makefile,从而可以使用GNU工具链进行软件的编译和安装。MSYS并不包含所有的Unix工具和库,它的目标并不是提供一个完整的Unix环境。MinGW和MSYS是在32位处理器下开发的。随着处理器从32位过度到64位,两个新的开源项目Mingw-w64和MSYS2提供了64位的GNU开发环境。

与Cygwin和MinGW发布的同一时期,微软也推出了类似的商业软件包Windows Services for Unix (SFU) 1.0。SFU使用的是与Cygwin类似的商用产品MKS Toolkit。这是微软为Windows NT系列操作系统开发的一个软件包,它提供了一个环境,使得在Windows平台上运行编译为UNIX系统(如Solaris、HP-UX、AIX)的应用程序成为可能。

真正的Unix环境

尽管Cygwin等工具在Windows环境中提供了使用开源工具的可能性,但并不能提供完全的Unix体验。

在1999年,Softway Systems开发了一个叫Interix的Windows子系统。它可以说是一个真正的Unix环境。Interix为POSIX应用程序提供了一个在Windows NT上运行的环境,包括了对原生Unix系统调用的支持。微软在1999年收购了Softway Systems,并将Interix作为Windows Services for UNIX(SFU)3. 0的一部分发布。SFU3.0提供了一套完整的Unix环境,包括KornShell、C Shell、Perl、Vi、EMACS、awk、sed以及各种Unix命令行工具。

在Windows Vista发布时,SFU被重命名为Subsystem for UNIX-based Applications(SUA),并作为Windows的一部分发布。SUA提供了一个更为轻量级的解决方案,它只包括了一个POSIX兼容的环境和C运行时库,而Unix工具和shell则需要另外安装。

然而,尽管SFU3.5和SUA包含了大量的功能并提供了一个真正的Unix环境,但由于其性能和兼容性问题,并未能在用户中取得广泛的成功。

与Linux共存时代的到来

总结了SFU/SUA的开发经验,微软发现应用程序的兼容性是POSIX子系统能否成功的关键因素。

为了解决应用兼容性问题,微软推出了在架构上与SFU/SUA非常类似的Windows Subsystem for Linux(WSL)。

WSL是一种在Windows 10和Windows Server 2019上运行Linux二进制可执行文件(ELF格式)的兼容层。它不需要重启就可以在Windows上运行Linux,并且能够在Windows和Linux之间进行无缝的文件共享。WSL的推出为在Windows上运行Linux应用程序提供了一个更高效和方便的解决方案。

由于WSL1还是对系统调用的转换,所以还是有一些兼容性问题。比如无法在WSL1中使用FUSE等。到了WSL 2,通过使用轻量级的虚拟机技术,微软进一步提高了兼容性和性能,并引入了完整的Linux内核,使得与真实Linux环境的兼容性大大提高。这使得开发者可以在Windows机器上使用完全一样的工作流程和工具来进行Linux开发。

从Windows中类Unix环境的演进过程中,可以看到微软与Linux从对立走向合作的过程。Microsoft逐步将Windows打造成了一个对开发者友好且功能丰富的平台,它不仅支持传统的Windows应用程序,还能够无缝地运行和集成类Unix环境和工具。这种演变反映了Microsoft对开放源代码和跨平台开发趋势的响应,以及对满足现代开发者需求的承诺。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值