操作系统中的分层结构

2025年6月26日 | 阅读 8 分钟

操作系统可以通过各种结构来实现。OS 的结构主要取决于操作系统的各种通用组件是如何相互连接和集成到内核中的。根据这个,我们必须遵循操作系统的结构。

分层结构方法将操作系统分解成不同的层,并保持对系统的更多控制。最底层(第 0 层)是硬件,最顶层(第 N 层)是用户界面。这些层设计成每一层只使用低层的功能。这简化了调试过程,因为如果低层已经调试过,并且在调试过程中发生错误。错误必须只在该层上,因为低层已经调试过。

Layered Structure of Operating System
  • 这允许实现者更改内部工作原理并增加模块化。
  • 只要例程的外部接口不改变,开发人员就有更大的自由来更改例程的内部工作原理。
  • 主要优点是构建和调试的简单性。主要困难在于定义各个层。

这种结构的主要缺点是数据需要在每一层进行修改和传递,这会增加系统的开销。此外,还需要仔细规划层,因为一层只能使用低层。UNIX 是这种结构的一个例子。

为什么要在操作系统中进行分层?

分层在操作系统中提供了明显的优势。所有层都可以单独定义,并根据需要相互交互。此外,如果系统以分层形式进行,则更容易创建、维护和更新。一层规格的变化不会影响其余的层。

操作系统中的每一层只能与上面和下面的层进行交互。最底层处理硬件,最顶层处理用户应用程序。

分层 OS 架构

整个 OS 被分成多个级别,例如 0 到 n。OS 方法的层各自负责一项特定任务。此外,在执行这些级别时存在以下规范:

关键层约定

最顶层,或 UI 层: 用户界面 (UI) 级别,直接与用户通信,是最表层。因为它管理客户输入和输出,所以平台易于使用。

硬件层:被认为是离核心最近的层,负责管理方法的机械资产,包括中央处理单元 (CPU)、存储设备和内存设备。

中间层: 在计算机硬件和用户界面层之间有额外的级别,它们执行特定任务,例如管理内存、处理进程、包括系统的资源分配。

层间访问控制

在堆叠式 OS 中,每个子系统只能访问其下方的子系统。例如,Layer n-1 无法通信 Level n 或其更高级别的任何层,但它可以访问 Layers n-2 到 0。由于这种受控访问,每个层都独立运行,而不会相互影响。

分层 OS 架构图示

Unix

这种设计的一些最早和最重要的例子是 Unix,它使用传统的层次框架。内核在物理组件之后,负责管理内存、程序规划和 I/O 活动等基本功能。系统的功能链接位于内核之外,并充当它与用户区域之间的链接,用户区域是 shell 应用程序和其他程序所在的位置。这些层的隔离通过允许单独创建和调试每个部分来提高灵活性。由于程序员可以修改特定部分而不影响整个操作系统,Unix 的灵活性也使其更具可移植性和可维护性。

Linux

Linux 和 Unix 共享许多架构概念,Linux 采用分层方法来提高可扩展性和灵活性。Linux 的内核控制着系统的资源,是所有事物的核心。系统库,例如 GNU C 库,位于内核之外,提供应用程序使用的标准功能。最后,用户空间程序(GUI、终端命令等)使用这些框架。由于其架构,Linux 可以在包括强大计算机和嵌入式机器在内的各种硬件上运行。Linux 的分层框架使其非常适合个人和专业用途,同时也促进了组件的创建并提高了系统弹性。

Windows

微软的 Windows 也采用分层设计来控制复杂性并提供广泛的软件和硬件互操作性。最底层是硬件抽象层 (HAL),它与物理组件通信。接下来是内核层,负责管理内存和进程等基本 OS 操作。Windows Executive 位于内核本身之上,提供更高级的功能,如存储和安全。最顶层由程序和用户界面组成。除了实现有效的资源管理外,这种有组织的层次结构还促进了易用性并提供了广泛的 GUI 交互。与 Unix 或 Linux 相比,某些层中多个组件的组合有时会限制灵活性。

比较微内核和宏内核架构

分层架构

在分层框架中,OS 按层次结构组织,每个层次都有不同的角色。而最先进的层次处理应用程序和用户交互,较低的层次则通过硬件进行通信。其适应性使系统构建、测试以及可能的服务更加容易。例如,内核不受用户交互层修改的影响。然而,由于查询必须经过多个层,这会增加复杂性并略微影响速度。

分层结构架构

这种类型的操作系统被创建为对早期宏内核系统的改进。在分层操作系统中,操作系统被划分为多个层,每个层具有不同的功能。层实现有一些规则如下:

  • 特定层可以访问其下方的所有层,但不能访问它们。也就是说,第 n-1 层可以访问从 n-2 到 0 的所有层,但不能访问第 n 层。
  • 第 0 层负责分配进程、在中断发生或计时器到期时在进程之间切换。它还负责 CPU 的基本多道程序设计。

因此,如果用户层想要与硬件层交互,响应将通过从 n-1 到 1 的所有层进行传输。每一层都必须设计和实现,以便它只需要低层提供的服务。

分层操作系统有六个层。演示这些层的图如下:

Layered Structure of Operating System
  1. 硬件:这一层与系统硬件交互,并协调所有使用的外围设备,如打印机、鼠标、键盘、扫描仪等。这些类型的硬件设备都在硬件层进行管理。
    硬件层是分层操作系统架构中最低且最权威的一层。它直接连接到系统的核心。
  2. CPU 调度:这一层负责为 CPU 调度进程。使用许多调度队列来处理进程。当进程进入系统时,它们被放入作业队列。
    准备在主内存中执行的进程保留在就绪队列中。此层负责管理有多少进程将被分配给 CPU 以及有多少进程将不被分配给 CPU。
  3. 内存管理:内存管理负责内存以及将进程从磁盘移动到主内存进行执行和移回。这由操作系统的第三层处理。所有内存管理都与此层相关。计算机中有各种类型的内存,如 RAM、ROM。
    如果考虑 RAM,那么它涉及到内存的换入和换出。当我们的计算机运行时,一些进程会移动到主内存 (RAM) 中执行,当计算器等程序退出时,它会从主内存中移除。
  4. 进程管理:这一层负责管理进程,即为进程分配处理器并决定有多少进程将保留在等待调度中。进程的优先级也在此层进行管理。用于进程调度的不同算法有 FCFS(先来先服务)、SJF(最短作业优先)、优先级调度、轮转调度等。
  5. I/O 缓冲区:I/O 设备在计算机系统中非常重要。它们为用户提供了与系统交互的手段。这一层处理 I/O 设备的缓冲区,并确保它们正常工作。
    假设您正在从键盘输入。键盘旁边有一个键盘缓冲区,可以临时存储数据。同样,所有输入/输出设备都有一些与之连接的缓冲区。这是因为输入/输出设备的处理或存储速度较慢。计算机使用缓冲区来保持处理器和输入/输出设备的良好时序速度。
  6. 用户程序:这是分层操作系统中的最高层。这一层处理操作系统中运行的许多用户程序和应用程序,如文字处理器、游戏、浏览器等。您也可以称之为应用程序层,因为它处理应用程序。

分层结构的优点

操作系统设计的分层结构有几个优点,例如:

  1. 模块化:这种设计促进了模块化,因为每一层只执行其预定任务。
  2. 易于调试:由于层是离散的,因此非常容易调试。假设 CPU 调度层发生错误。开发人员只能在该特定层进行搜索进行调试,与所有服务都存在于其中的宏内核系统不同。
  3. 易于更新:对某一层的修改不会影响其他层。
  4. 无直接硬件访问:硬件层是设计中最内层。因此,用户可以使用硬件服务,但不能直接修改或访问它,这与用户可以直接访问硬件的简单系统不同。
  5. 抽象:每一层都关注其功能。因此,其他层的函数和实现对它是抽象的。

分层结构的缺点

尽管这种系统比宏内核和简单设计有几个优点,但也存在一些缺点,例如:

  1. 复杂且仔细的实现:由于一层可以访问其下方的层,因此必须仔细安排层。例如,后备存储层使用内存管理层的服务。因此,它必须保留在内存管理层之下。因此,高度的模块化带来了复杂的实现。
  2. 执行速度较慢:如果一层想与另一层交互,它会请求通过位于两者之间的所有层进行传输。因此,它增加了响应时间,而宏内核系统则比它更快。因此,层数的增加可能导致非常低效的设计。
  3. 功能:功能并不总是可以分开。很多时候,它们是相互关联的,无法分离。
  4. 通信:相邻层之间没有通信。