Operating System Architecture | 操作系统体系结构

Albert Wang / 2024-03-22 / 300 Words/has been Read   Times


这篇博客主要讨论了几种常见操作系统的历史以及它们的体系结构。首先从几个常见操作系统的背景以及它们之间的关系开始。

image-20240309030246676

图1

从图 1 中可以看到,最早的操作系统是 MULTICS(Multiplexed Information and Computing Service),最初由麻省理工学院、美国通用电气公司和贝尔实验室合作开发。其旨在为大型机提供一个分时操作系统,能够支持多个用户同时访问和共享计算资源。MULTICS 是一个里程碑式的项目,对于操作系统和计算机科学的发展产生了深远的影响。

在 MULTICS 项目因各种技术和管理上的挑战而陷入困境后,UNIX 的创始人之一 Ken Thompson 和 Dennis Ritchie 决定启动一个新的项目,旨在设计一个更加简单、灵活和易于实现的操作系统。这个项目后来成为了 UNIX 操作系统的原型。

随后,UNIX 的版本不断迭代,到第6版时,加州大学伯克利分校(University of California, Berkeley)的计算机系统研究小组(Computer Systems Research Group,简称CSRG)在此基础上进行了一系列的改进和扩展,开发了一系列的 BSD 版本。BSD 项目为 UNIX 社区做出了重要贡献,引入了许多与网络相关的功能和协议,对于互联网的发展起到了重要作用。

SunOS 是由 Sun 公司基于 BSD UNIX 开发的一种 UNIX 操作系统,最初是用于其早期的 Sun 工作站和服务器上。SunOS 最初发布于1982年。Solaris 是 Sun 后来发布的 UNIX 操作系统,最早版本是在1992年发布的 Solaris 2.0。它是在 SunOS 4.x 的基础上进行了重大改进和扩展,引入了虚拟内存管理、多线程支持等特性,并被广泛应用于企业级服务器和大型系统中。Sun 公司现在已经被 Oracle 收购,Java 编程语言也是这家公司的产品。

macOS 最初是基于 NeXTSTEP 开发的,随后逐步集成了 FreeBSD 的部分特性和功能。

此外,还有一个与 UNIX 有关的操作系统是 Linux,由 Linus Torvalds 在 1991 年首次发布的一个开源的类 UNIX 操作系统内核。Linux 在设计和实现上深受 UNIX 的影响,继承了 UNIX 的许多设计理念和原则。Linux 与 UNIX 兼容性良好,可以运行许多 UNIX 应用程序和工具。

然后是一条全新的线,就是微软的 DOS 操作系统,同时在 MS-DOS 的基础上逐步发展出了 Windows 操作系统。

接下来,我们将介绍这些常见操作系统的体系结构。

DOS 操作系统架构 #

首先是 DOS 操作系统,这是早期个人计算机上广泛使用的操作系统之一,它的架构相对简单,可以概括为以下几个主要部分:

  1. 引导加载程序(Boot Loader):这部分是直接写在 ROM BIOS 里的程序,位于整个体系结构的最底层。DOS 的运行始于计算机启动时加载到内存中的引导加载程序。在早期的 PC 中,通常使用的是基于硬盘上的引导扇区,这个引导扇区包含了引导加载程序的代码,它负责将 DOS 内核加载到内存中并将控制权转交给它。
  2. DOS 驱动程序(DOS Device Driver):在 BIOS 之上的这一层就是 DOS 驱动程序, DOS 驱动程序是整个操作系统的核心部分,负责管理系统的资源和提供基本的操作功能。DOS 驱动程序相对简单,主要包括一些基本的文件管理、内存管理和设备管理功能,例如,文件的打开、读写、关闭,内存的分配和释放,以及对硬件设备(如磁盘驱动器、显示器、键盘等)的访问。
  3. 常驻系统程序(Resident System Program): 严格来说在 DOS 驱动程序上面的都属于应用程序。但是 DOS 专门分出来了一类程序叫常驻系统程序, 常驻系统程序是一种特殊类型的程序,它们在系统启动时加载到内存中,并且一直驻留在内存中,以便在需要时随时被调用。
  4. 应用程序(Applications):DOS 系统上运行的应用程序范围广泛,包括文本编辑器、批处理脚本、游戏等。这些应用程序通常直接运行在 DOS 的环境中,通过调用 DOS 提供的系统服务来完成各种任务。

img

图2

总的来说,DOS 的架构相对简单,它由引导加载程序、DOS 内核、命令解释器、系统服务和应用程序等几个主要部分组成,提供了基本的文件管理、设备访问和命令行交互功能。

我们通过观察图 2 可以看到有些应用程序是可以直接绕过 DOS 内核直接访问最底层的信息,这种结构带来了很多安全上的问题。但受限于当时硬件条件的限制,很难做到由操作系统完全去管理硬件。

UNIX 操作系统架构 #

图 3 所示是 UNIX 操作系统的体系结构,UNIX 将底层的硬件完全由操作系统管理,弥补了 DOS 绕过内核直接访问最底层的缺陷。同时 UNIX 系统架构也是一个分层的体系结构,由多个不同层次的组件组成,每个组件负责不同的任务和功能。

  1. 硬件层(Hardware Layer):UNIX 系统可以运行在各种不同架构的计算机硬件上,包括个人计算机、服务器、嵌入式系统等。
  2. 内核层(Kernel Layer):UNIX 内核是 UNIX 系统的核心部分,负责管理系统的资源并提供基本的系统服务。
  3. 用户空间层(User Space Layer):用户空间包括用户级别的应用程序、工具和库。用户空间的程序通过系统调用接口与内核进行通信,以访问系统资源和执行系统服务。用户空间的常见组件包括:
  4. 应用层(Application Layer):应用层包括用户运行的各种应用程序,如 Web 浏览器、邮件客户端、办公软件等。

UNIX 系统架构的分层设计使得系统更加模块化和灵活,允许不同的组件在不同层次上进行开发、测试和维护,从而提高了系统的稳定性和可维护性。此外,UNIX 系统的开放性和可定制性也使得用户能够根据自己的需求对系统进行定制和扩展。

image-20240309030246676

图3

Linux 操作系统架构 #

Linux 是一个开源的操作系统内核,它是 UNIX 系统的一个变种。从图 4 中我们仍然可以看到它的层次结构类似于 UNIX。那这种结构是不是就已经是最好的了呢?应该不能说是最理想的解决方案。因为我们可以从图中观察到内核这一层做了很多的事情,包括进程管理、文件系统、网络管理等。它们之间难免会进行相互调用,会产生功能的相互耦合,假如某一个模块发生故障可能会导致整个系统崩溃。比如文件系统故障,理想的情况是我们直接将文件系统隔离出去,不要影响到其他模块的正常工作,等我们修复完再将它加回来,完全做到模块之间的隔离。

image-20240323002312339

图4

Minux 操作系统架构 #

MINIX(Mini UNIX)是一个轻量级的 UNIX 兼容操作系统,最初由安德鲁·坦尼鲍姆(Andrew S. Tanenbaum)开发,他写的操作系统和计算机网络的书非常有名,MINIX 最初就是为了教学使用的。巧合的是坦尼鲍姆就是 Linux 操作系统的作者 Linus Torvalds 的老师,Linus 在编写 Linux 操作系统的时候也参考过 MINUX 的源代码。更为有趣的是他们两个为了操作系统的架构设计展开过一场轰轰烈烈的辩论,神仙打架名场面的细节可以点击这里 了解。

MINIX 是一个微内核操作系统,其内核被设计为尽可能小而简单,只包含最基本的功能,如进程管理、进程间通信(IPC)等。这种架构使得系统更加模块化、可扩展和易于维护。

在 MINIX 的微内核中,大部分操作系统功能被实现为用户空间的服务器进程,通过 IPC 与内核通信。这样的设计使得系统的各个组件能够相对独立地进行开发和维护。

image-20240309030246676

图5

微内核的设计在理论上是要更加完美一点,但是在工程实践中的效果并不是特别理想。因为一个简简单单的输出操作可能就需要进行连续的用户态内核态切换,导致速度很慢,这也导致现在微内核的设备主要还是在嵌入式设备上使用。

Windows 操作系统架构 #

windows 操作系统系统最开始使用的是 nt 内核,如下图所示,这也是一个微内核的结构。但是同样由于效率的关系,后续不断地在内核里面加入了各种功能,导致现在的 wondows 系统架构已经变成了类似于宏内核的结构。

image-20240309030246676

图6

Solaris 操作系统架构 #

Solaris 结合了微内核和宏内核的特点,一方面把一些重要的操作加到了内核里保证效率,另一方面严格进行内核里模块间的功能拆分,保证每个模块都是独立工作,互相不受影响。

image-20240309030246676

图7

mac 操作系统架构 #

mac 操作系统架构,macOS 的内核称为 XNU(X is Not Unix),它是一个混合内核,由微内核 Mach 和 BSD 内核组成。

  • Mach 内核负责处理进程管理、内存管理和线程调度等底层任务,提供了多任务处理、虚拟内存等核心功能。
  • BSD 内核提供了 UNIX 系统的标准功能,包括文件系统、网络协议栈、套接字接口等,它是 macOS 上大部分用户空间功能的基础。

image-20240309030246676

图8

Last modified on 2024-03-22