常见问题
我常常会听到类似的问题: Unix, Linux和MacOS之间有什么联系? 又有什么区别?
先说结论:
- Linux是类Unix的操作系统, 其内核上的大部分软件是按照POSIX协议运行,所以跟Unix系统上运行效果类似.
- MacOS的内核是在Unix的家族分支上的,其内核是基于NeXTSTEP和FreeBSD混合开发组成,所以有部分功能运行的跟Unix系统一样,有部分又不同(定制开发)
如下图:
下面开始详细描述.
Unix
Unix是一个由多用户、多进程的计算机操作系统的统称,源自于从20世纪70年代开始在美国AT&T公司的Bell Labs开发的 AT&T Unix, 包括很多个相似但不同的变种操作系统. Unix是一个商业上的专利产品, 需要购买或授权才能使用.
POSIX
随着Unix变种操作系统的增加,就需要有标准来规范各个变种操作系统,以保证系统之间的兼容性,这样就有了POSIX.
POSIX: Portable Operating System Interface,中文为可移植操作系统接口,为一系列标准的集合,是由IEEE Computer Society定义的以为保证各UNIX操作系统之间的兼容性.
POSIX中定义的标准有:
- Core Services: 核心服务,包括Process, Signals, Pipes, C Library等.
- Real-time extensions: 包含Priority Scheduling, Real-Time Signals, Shared Memory, Asynchronous and Synchronous I/O等.
- Threads extensions: 包括Thread Creation, Control, and Cleanup, Thread Scheduling, Thread Synchronization, Signal Handling等.
- Shell and Utilities: 包括Command Interpreter和Utility Programs, utility program如:
cd
,cp
,ls
等.
SUS
SUS: Single UNIX Specification, 创建的目的与POSIX类似,都是为了保证Unix系统之间的兼容性. 现在由IEEE和The Open Group共同组成的Austin Group来开发和维护.
Austin Group从POSIX和SUS中定义了一套通用的标准,称为Open Group Base Specification.
POSIX和SUS是有交集的
Linux
Linux是一个基于Linux kernel的类Unix操作系统的统称.
Linux kernel是一个operating system kernel,由Linus Torvalds发布.
GNU Project
GNU Project是一个关于free-software
, mass-collaboration
的项目,理念是: 用户可以*的使用,分享,学习和修改软件.
由GNU项目和Linux kernel就可以组成一个类Unix的操作系统:
- GNU packages: 包含了许多操作系统的工具和应用软件,如
shell
,coreutils
,compilers
,libraries
以及按照POSIX标准实现的类库等. - Linux kernel: 提供了进程调度,多重任务处理,驱动管理,内存管理等功能.
- non-GNU programs: 非GNU应用程序.
Linux kernel不属于GNU project, 但基于GNU General Public License.
Linux distribution
Linux发行版, 是由Linux kernel加上一些软件组成,不同的组合就构成了不同的发行版. 通常发行版会包括:
- Linux kernel.
- GNU packages.
- 窗口管理软件: 如GNOME.
- 文档.
比较受欢迎的发行版有: Debian, Fedora, Ubuntu等.
MacOS
MacOS新的名称为Darwin, 这是Apple发布的类Unix的操作系统, 内核由XNU构成, 而XNU是基于NeXTSTEP和FreeBSD混合开发组成. 架构图如下:
Unix和类Unix系统的演进
参考
作者:keith
链接:https://juejin.cn/post/6844903841901576199