操作系统结构

2025年5月13日 | 阅读 13 分钟

概述

操作系统是一种设计,它使用户应用程序能够与机器的硬件进行通信。操作系统应该非常谨慎地构建,因为它是一个复杂的结构,并且应该易于使用和修改。部分开发操作系统是实现这一目标的简单方法。这些组件中的每一个都需要有不同的输入、输出和功能。

本文讨论了实现操作系统的多种结构类型,如下所列,以及它们如何以及为何工作。它还定义了操作系统结构。

  • 简单结构
  • 单体结构
  • 分层方法结构
  • 微内核结构
  • 外内核结构
  • 虚拟机

什么是操作系统结构?

操作系统由许多相互作用的部分组成,这些部分之间的结构关系的定义称为操作系统结构。这种结构确保了 OS 的开发、维护和定制相对容易,可以适应特定应用。清晰的结构允许 OS 由可管理的片段构建;每个片段都有助于实现整体系统功能。

OS 结构提供了关于不同组件如何在 OS 的中心部分(内核)内连接和集成的概念。内核执行内存管理、进程调度和硬件交互等敏感任务。接下来将介绍不同的 OS 结构及其相对的优缺点。

1. 简单结构

这是最直接的操作系统结构,但它缺乏定义,仅适用于小型和受限系统。由于此结构中的接口和功能级别已明确定义,程序可以访问 I/O 例程,这可能导致未经授权访问 I/O 过程。

MS-DOS 操作系统使用此组织结构

  • MS-DOS 操作系统由四层组成,每一层都有自己的一组功能。
  • 这些层包括 ROM BIOS 设备驱动程序、MS-DOS 设备驱动程序、应用程序和系统程序。
  • MS-DOS 操作系统受益于分层,因为每个级别都可以独立定义,并在需要时可以相互交互。
  • 如果系统是分层构建的,那么设计、管理和更新将更加容易。因此,简单结构可用于构建不那么复杂的受限系统。
  • 当用户程序失败时,整个操作系统都会崩溃。
  • 由于 MS-DOS 系统具有低抽象级别,用户可以访问程序和 I/O 过程,从而有可能进行未经授权的访问。

下图说明了简单结构中的分层

Operating System Structure

简单结构的优点

  • 易于开发,因为它只有几个接口和层。
  • 由于硬件和应用程序之间的层数较少,因此执行速度更快。
  • 直接访问硬件可实现更快的操作。
  • 由于结构非常简单,系统资源消耗最小。
  • 重量轻,因此适用于小型甚至嵌入式系统。

简单结构的缺点

  • 由于这些组件没有清晰地分离,因此对系统进行任何更改或升级都将变得相当困难。
  • 所有东西都连接在一起,因此,调试非常繁琐;查找错误非常困难。
  • 由于缺乏数据抽象,存在安全漏洞的可能性很大。
  • 它无法很好地扩展到更大、更复杂的系统。在这种架构中添加新功能尤其具有挑战性。
  • 一个部分的故障可能会导致整个系统崩溃。

2. 单体结构

单体操作系统控制操作系统运行的所有方面,包括文件管理、内存管理、设备管理和操作功能。

计算机操作系统的核心称为内核(OS)。内核为所有其他系统组件提供基本服务。

操作系统和硬件使用它作为主要接口。当操作系统构建到单个硬件设备(如键盘或鼠标)中时,内核可以直接访问其所有资源。

单体操作系统通常被称为单体内核。批处理和分时等多种编程技术提高了处理器的可用性。单体内核在操作系统之上运行,并完全控制所有硬件,它充当虚拟计算机的角色。

这是一种旧的操作系统,曾用于银行执行批处理和分时等简单任务,这些任务允许不同终端的多个用户访问操作系统。

下图代表了单体结构

Operating System Structure

单体结构的优点

  • 由于所有组件都打包在一个大内核中,因此不需要多层复杂性。因此,此类系统的设计和实现相对容易。
  • 只要所有组件都在相同的内存空间中运行,就不需要进行进程间通信或在层之间执行上下文切换;因此,执行速度更快。
  • 直接访问硬件和少量额外的抽象开销带来了高性能。
  • 开发可以因此变得更容易,因为开发人员只需处理一个代码库,并且不需要考虑各种层或模块之间的交互。

单体结构的缺点

  • 任何单个组件的故障都有可能导致整个系统崩溃,因为不同部分之间没有隔离。
  • 这可能是一项艰巨且不安全的工作,因为系统一个部分的更改可能会意外地传播到另一个部分。
  • 由于组件的相互依赖性更强,因此调试也更复杂,并且始终需要大量测试和与测试相关的活动。
  • 这是一个问题,即扩展或适应系统中的最新趋势需要对内核进行重大更改。
  • 因此,更新或升级系统将很麻烦,因为它涉及单体形式的大型代码库,其中的更改可能会产生广泛的影响。

3. 分层结构

在此类安排中,操作系统被分成层或级别。第 0 层(最低层)包含硬件,第 1 层(最高层)包含用户界面(N 层)。

  • 在此方面,该模型通过其下方层的函数可用性来工作。例如,内存管理可能需要依赖进程调度,而较高级别的层则在此方面利用它进行用户交互。
  • 这种方法还在层之间引入了抽象,因此系统更容易管理和调试。万一出现任何问题,可以在较低层进行测试和调试,然后再进入较高层。

在此方法中,每个层的函数都是分开的,抽象也是一个选项。由于分层结构是分层的,因此调试更简单,因此在检查上层之前会调试所有较低层。因此,只需检查当前层,因为所有较低层都已检查过。

下图显示了 OS 如何分层组织

Operating System Structure

分层结构的优点

  • 开发、维护和理解要容易得多,因为每个层都被分配了特定的角色。
  • 它可以隔离单个层中的问题,因为测试和调试将不那么费力。
  • 敏感操作可以限制在特定层;因此,由于问题已明确分离,未经授权的访问可以限制在这些层。
  • 修改或更新一个层不会直接影响其他独立层;因此,升级或修复可以更轻松地完成。
  • 有了层,基本操作可以委托给较低层,因此,上层无需担心细节,从而降低了整体管理的复杂性。

分层结构的缺点

  • 分层方法会增加延迟,因为数据和命令必须经过多个层,从而降低了整个系统的速度。
  • 设计一个工作良好的分层结构需要深思熟虑和严格的纪律才能实现不同层之间的正确交互。
  • 层通常依赖于较低层;因此,跳过层并直接访问较低层功能变得更加困难,从而在许多系统中降低了灵活性。
  • 由于层引入了额外的抽象,系统性能优化变得具有挑战性,这使得调整系统各个部分以使其更有效地运行变得困难。
  • 除非底层设计糟糕或效率低下,否则整个系统都会受到影响,因为上层依赖它们的功能。

微内核结构

操作系统使用微内核框架构建,该框架剥离了内核中所有不必要的部分。系统和用户应用程序用于实现这些可选的内核组件。因此,这些已开发系统被命名为微内核。

微内核结构最大限度地减少了内核处理的功能,将大多数服务委托给用户级应用程序。微内核本身仅处理核心功能,例如内存管理、进程调度和进程之间的基本通信。

  • 通过剥离内核中不必要的服务,系统变得更安全、更可靠。如果某个服务崩溃,它不会影响整个系统。
  • 微内核在 macOS 和 QNX 等现代 OS 架构中很常见,因为它们允许更轻松的更新和更好的系统弹性。

下图显示了微内核操作系统结构

Operating System Structure

微内核结构的优点

  • 仅运行在内核中的必要服务可确保用户服务故障不会导致整个系统崩溃。
  • 它将服务与内核隔离,从而最大程度地降低了系统受到损害的可能性,因为每个服务都独立于其他服务运行。
  • 较小的内核更容易操作和更改。因此,更新和错误修复不那么具有挑战性。
  • 可以添加或删除服务而不影响内核。因此,这在设计系统时提供了更大的灵活性。
  • 由于微内核的体积小,可以以最小的修改移植到不同的硬件平台。

微内核结构的缺点

  • 内核和用户服务之间的进程间通信会引入额外的开销,因此与单体方法相比速度较慢。
  • 在微内核中,必须非常小心地进行服务分离,这可能会使初始开发过程复杂化。
  • 在此方法中,用户空间和内核空间之间的上下文切换更频繁;因此,在高负载条件下性能会较慢。
  • 由于复杂性和可能额外的性能权衡,很少有操作系统使用微内核架构构建。
  • 模块化需要更多的规划和详细测试;因此,开发周期可能会更长。

4. 外内核

外内核(Exokernel)是一种由麻省理工学院(MIT)开发的操作系统,其目标是提供应用程序级别的硬件资源管理。外内核架构的目标是通过分离资源管理和保护来实现特定于应用程序的定制。由于其有限的操作能力,外内核的尺寸往往很小。

由于操作系统位于程序和实际硬件之间,它总是会影响在该操作系统上开发的应用程序的功能、性能和广度。通过拒绝操作系统必须提供用于构建应用程序的抽象的理念,外内核操作系统努力解决这个问题。目标是为开发人员提供尽可能少的对抽象使用的限制,同时又允许他们在需要时自由使用。由于外内核架构的设计方式,一个微小的内核负责将所有硬件抽象移到称为库操作系统的不可靠库中。外内核与微内核和单体内核不同,它们的主要目标是防止强制抽象。

外内核操作系统具有许多功能,包括

  • 增强的应用程序控制支持。
  • 分离管理和安全。
  • 将抽象安全地传输到不可靠的库操作系统。
  • 引入低级接口。
  • 库操作系统提供兼容性和可移植性。

外内核结构的优点

  • 应用程序直接与硬件接口以实现高功率。
  • 它提供细粒度的资源分配和撤销,以实现高效使用。
  • 使用低级控制进行新操作系统的测试和开发变得容易。
  • 每个应用程序都可以拥有自己的内存管理;因此,优化将是量身定制的。
  • 它消除了额外的内核功能;因此,它使系统更精简、更快速。
  • 由于其极简的方法,它易于适应不同的硬件平台。

外内核结构的缺点

  • 开发和维护如此复杂的接口将具有挑战性。
  • 抽象不是强制性的,这可能导致不同应用程序之间不一致。
  • 它使开发人员负责处理资源管理,这增加了它的难度。
  • 缺乏强大的抽象和对硬件的直接访问可能导致安全漏洞。
  • 由于系统大部分处于低抽象级别,调试更加困难。
  • 这意味着旧应用程序(依赖于低级抽象)将无法正常运行,因为后者抽象了更高级别的操作系统抽象。

5. 虚拟机 (VM)

我们个人计算机的硬件,包括 CPU、磁盘驱动器、RAM 和 NIC(网络接口卡),被虚拟机抽象为各种不同的执行上下文,以满足我们的需求,让我们感觉每个执行环境都是一个独立的计算机。VirtualBox 是一个例子。

使用 CPU 调度和虚拟内存技术,操作系统允许我们同时执行多个进程,同时给人一种每个进程都在使用单独的处理器和虚拟内存的印象。系统调用和文件系统是进程可以拥有的额外功能的示例,而这些功能是硬件无法提供的。虚拟机的这种方法不提供这些额外功能,而是提供一个类似于最基本硬件的接口。为每个进程提供计算机系统下方的虚拟副本。

我们可以出于各种原因开发虚拟机,所有这些原因都基本与共享同一底层硬件的能力相关,同时支持不同的执行环境,即各种操作系统。

磁盘系统是虚拟机技术的基本问题。如果实际机器只有三个磁盘驱动器,但需要托管七台虚拟机,我们不妨想象一下。很明显,为每台虚拟机分配一个磁盘驱动器是不可能的,因为创建虚拟机的程序需要大量的磁盘空间来提供虚拟内存和假脱机。提供虚拟磁盘是解决方案。

结果是用户获得了自己的虚拟机。然后,他们可以使用安装在下方机器上的任何操作系统或软件程序。虚拟机软件负责将许多虚拟机同时编程到物理机器中,而无需考虑任何用户支持软件。通过这种配置,将为多个用户构建交互式系统的挑战分解为两个可管理的块可能是有可能的。

虚拟机的优点

  • 每个 VM 本身都是独立的,这意味着发生的任何故障或安全后果都不会影响其他虚拟机。
  • 可以在一个硬件平台上运行多个操作系统。
  • 克隆、备份和恢复虚拟机非常容易;因此,就数据恢复而言,选择非常多。
  • 可以使用一台机器运行不同的操作系统,例如 Windows、Linux 等。
  • 它们非常适合在隔离的环境中测试软件更新或任何操作系统,而不会对主机系统造成任何更改。
  • 它们可以非常轻松地在不同的物理机器之间移动。

虚拟机的缺点

  • 在同一主机上运行多个虚拟机可能会由于资源共享而降低其性能。
  • VM 是 CPU、内存密集型和存储密集型应用程序;这将给主机系统带来很大的负载。
  • 管理许多虚拟机需要更高级的工具和知识。
  • 它无法像物理机器那样有效地利用硬件,因此会影响性能相关的应用程序。
  • 不受控制的创建可能导致混乱、资源利用效率低下和安全风险。
  • Hypervisor 或 VM 管理软件中的漏洞可能使所有 VM 面临安全威胁。

结论

  • 操作系统允许用户应用程序与计算机硬件交互,因此,它也充当系统软件的平台。
  • OS 结构是指其组件如何相互关联和交互,以及如何有效地管理资源。
  • 一些 OS 结构类型包括简单结构、单体结构、分层方法、微内核、外内核和虚拟机。
  • 每种结构都有各种优点以及关于性能、灵活性、安全性和可扩展性的几个权衡。
  • 反过来,较新的设计为操作系统带来了模块化、可移植性和更好的错误处理支持。
  • OS 设计的未来可能会面向更高的性能、增强的安全性和在各种硬件配置上运行,利用云计算、物联网等。

常见问题

1. 操作系统系统结构是什么意思?

操作系统的系统结构充当了 OS 各个组件如何组合和相互通信的蓝图。由于操作系统具有复杂的架构,我们希望有一个易于理解的框架,以便我们可以根据自己的需求修改操作系统。将操作系统分解成部分更容易,就像我们将更复杂的问题分解成更小、更易于管理的子问题一样。

2. 解释混合内核结构。

混合内核结构只是微内核和单体内核的混合体。本质上,它通过结合单体和微内核系统的特性,创建了一种更复杂、更有益的方法。它实现了微内核结构的稳定性和模块化,以及单体内核的速度和设计。

3. 什么是操作系统中的模块化结构?

它被认为是操作系统的最佳策略。它涉及创建模块化内核。内核仅由少数核心组件组成;其他服务作为动态可加载模块引入,可以在引导时或运行时引入。由于每个内核都有受保护和指定的接口,因此它类似于分层结构;然而,由于模块可以调用任何其他模块,因此它更具适应性。

4. 什么是虚拟机?

虚拟机(VM)是一种虚拟化技术,可以使多台操作系统在单个物理计算机上同时运行。每台虚拟机都作为一个独立的、自主的系统运行,拥有自己的操作系统和程序。

5. 单体结构的优点是什么?

由于所有组件都运行在一个单一的块中,因此单体结构性能快速,并允许组件之间进行快速通信。由于每个组件都包含在单个代码块中,因此构建起来更简单。

6. 虚拟磁盘如何解决虚拟机中的磁盘限制?

磁盘系统是虚拟机技术的主要问题。假设实际机器需要支持七台虚拟机,但只有三个磁盘驱动器。很明显,为每台虚拟机分配一个磁盘驱动器是不现实的,因为创建虚拟机的程序需要大量的磁盘空间来提供虚拟内存和假脱机。提供虚拟磁盘是解决方案。


下一个主题操作系统示例