类Unix环境在Windows上的演进史
创始人
2024-10-22 02:36:15
0

自从以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对开放源代码和跨平台开发趋势的响应,以及对满足现代开发者需求的承诺。

相关内容

热门资讯

推荐一下!青橙竞技卡五星辅助,... 推荐一下!青橙竞技卡五星辅助,新518互游脚本下载,好像是真的有挂(哔哩哔哩)青橙竞技卡五星辅助透视...
总结一下!老友广东麻将辅助,杭... 总结一下!老友广东麻将辅助,杭州都莱辅助,切实真的是有挂(哔哩哔哩)1、在老友广东麻将辅助插件功能辅...
解迷一下!创思维激k怎么开挂,... 解迷一下!创思维激k怎么开挂,创思维辅助软件,切实真的有挂(哔哩哔哩)1、创思维激k怎么开挂辅助器安...
辅助一下!微信微乐游戏辅助脚本... 辅助一下!微信微乐游戏辅助脚本,拱趴大菠萝有辅助吗,总是有挂(哔哩哔哩)辅助一下!微信微乐游戏辅助脚...
辅助一下!时光互娱房卡辅助,新... 辅助一下!时光互娱房卡辅助,新漫游免费辅助器,本来真的有挂(哔哩哔哩)1、让任何用户在无需时光互娱房...
关于一下!多乐跑得快私人房间作... 关于一下!多乐跑得快私人房间作弊视频,来来拼十辅助,都是真的有挂(哔哩哔哩)1、打开软件启动之后找到...
教你一下!卡五星游戏源码,决战... 教你一下!卡五星游戏源码,决战卡五星辅助器,其实是有挂(哔哩哔哩)1)决战卡五星辅助器辅助插件:进一...
普及一下!同乡游有辅助软件码,... 普及一下!同乡游有辅助软件码,老友广东辅助器,总是是有挂(哔哩哔哩)1、上手简单,内置详细流程视频教...
曝光一下!创思维激k有辅助器吗... 曝光一下!创思维激k有辅助器吗,hhpoker辅助是真的吗,好像存在有挂(哔哩哔哩)创思维激k有辅助...
总结一下!边锋干瞪眼小程序辅助... 总结一下!边锋干瞪眼小程序辅助,心悦踢辅助软件,真是存在有挂(哔哩哔哩)1、这是跨平台的边锋干瞪眼小...