Operating System 简明教程

Operating System - Architecture

操作系统允许用户应用程序与系统硬件进行交互。由于操作系统是一个如此复杂的结构,因此其架构对其使用情况起着重要的作用。操作系统架构的每个组件都应明确定义,具有明确的输入、输出和功能。

Import Terms

在操作系统架构中,我们有两个主要术语,它们定义了操作系统的主要组件。

  1. Kernal − 在大多数实现中,内核是操作系统架构的核心组件。内核负责所有主要操作以及与硬件的交互。内核管理内存、处理器、输入/输出设备,并提供应用程序与硬件组件进行交互的接口。

  2. Shell − shell 是操作系统的接口。它可以是命令行界面或图形用户界面。用户使用 shell 与操作系统进行交互。应用程序也可以使用 shell 接口与底层操作系统进行交互。

  3. System Softwares - 系统软件是与内核交互的程序,为安全管理、内存管理和其他低级活动提供接口。

  4. Application Programs - 应用软件/程序是用户与操作系统交互使用的程序。例如,用于创建文档并将其保存在文件系统上的文字处理器,用于创建便笺的记事本等。

以下是操作系统架构的各种流行实现。

  1. Simple Architecture

  2. Monolith Architecture

  3. Micro-Kernel Architecture

  4. Exo-Kernel Architecture

  5. Layered Architecture

  6. Modular Architecture

  7. Virtual Machine Architecture

Simple Architecture

有许多结构相当简单的操作系统。这些系统一开始很小,后来迅速扩展,远远超出了其范围。MS-DOS 就是一个常见的例子。它仅为小部分人设计。没有迹象表明它会变得如此受欢迎。

os basic structure

少数操作系统具有简单但强大的体系结构,例如 MS-DOS。这将导致对计算机系统及其各种应用程序的更大控制权。简单的体系结构允许程序员根据需要隐藏信息,并根据需要实现内部例程,而无需更改外部规范。

Advantages

以下是简单操作系统架构的优点。

  1. Easy Development - 在简单的操作系统中,接口非常少,这使得开发很容易,尤其是在仅需交付有限功能时。

  2. Better Performance - 与其他类型操作系统相比,这种系统具有较少的层,并直接与硬件交互,可以提供更好的性能。

Disadvantages

以下是简单操作系统架构的缺点。

  1. Frequent System Failures - 由于设计不佳,这种系统并不稳健。如果一个程序发生故障,整个操作系统就会崩溃。因此,在简单的操作系统中系统故障很常见。

  2. Poor Maintainability - 由于操作系统的各个层紧密耦合,因此一层中的更改会严重影响其他层,并随着时间的推移使代码变得难以管理。

Monolith Architecture

在整体操作系统架构中,称为内核的中心代码段负责操作系统的所有主要操作。此类操作包括文件管理、内存管理、设备管理等。内核是操作系统的主要组件,它向应用程序和系统程序提供操作系统的全部服务。

内核可以访问所有资源,并且充当应用程序和底层硬件的接口。整体内核架构促进了分时、多编程模型并在旧银行系统中使用。

os monolith structure

Advantages

以下是整体操作系统架构的优点。

  1. Easy Development - 由于内核是可供所有主要功能开发的唯一层,因此易于设计和开发。

  2. Performance - 由于内核负责内存管理、其他操作,并具有对硬件的直接访问权限,因此性能较好。

Disadvantages

以下是整体操作系统架构的缺点。

  1. Crash Prone - 由于内核负责所有功能,因此如果一个功能发生故障,整个操作系统都会发生故障。

  2. Difficult to enhance - 在不影响整体操作系统的其他服务的情况下添加新服务非常困难。

Micro-Kernel Architecture

与整体架构中有一个内核一样,在微内核中,我们有多个内核,每个内核都专门用于特定服务。每个微内核独立于其他内核开发,这使系统更加稳定。如果一个内核发生故障,操作系统将继续使用其他内核的功能。

Advantages

以下是微内核操作系统架构的优点。

  1. Reliable and Stable - 由于多个内核同时工作,因此操作系统发生故障的可能性非常小。如果一个功能不可用,操作系统仍然可以使用稳定的内核提供其他功能。

  2. Maintainability - 作为小尺寸内核,代码大小是可维护的。人们可以在不影响其他微内核代码库的情况下增强微内核代码库。

Disadvantages

以下是微内核操作系统架构的缺点。

  1. Complex to Design - 这种基于微内核的架构难以设计。

  2. Performance Degradation - 与整体架构相比,多内核、多模块通信可能会降低性能。

Exo-Kernel Architecture

外核架构操作系统在麻省理工学院设计和开发。此设计的目的是保持内核大小最小,同时允许应用程序直接管理硬件资源。删除硬件资源操作系统的抽象的目的是使应用程序程序员能够编写高性能代码,而外核则处理其他操作。

Advantages

以下是外核操作系统架构的优点。

  1. High Performance - 由于应用程序可以分配内存,因此设计更好的代码可以进行优化并更好地执行。

  2. Application Control - 由于资源管理不受操作系统保护,因此应用程序对系统资源有更多控制权,并且可以在系统资源上编写自定义操作。

Disadvantages

以下是外核操作系统架构的缺点。

  1. Unreliable and Unsafe - 由于安全性位于应用程序级别,编写拙劣的代码会破坏系统。

  2. Complex Design - 设计外核很复杂。

Layered Architecture

在操作系统中实现模块化的办法之一就是采用分层方法。在这种方法中,最底层是硬件,最顶层是用户界面。

演示分层方法的图像如下所示:

os layered structure

如图像所示,每一层都基于底层构建。所有层对上层隐藏一些结构、操作等。

分层架构的一个问题是需要仔细定义每一层。这是必需的,因为上层只能使用它们下层的那些功能。

Advantages

以下是分层操作系统架构的优点。

  1. High Customizable - 由于是分层的,每一层都能轻松实现自定义。可以添加新的功能,而不会影响其他模块。

  2. Verifiable - 由于是模块化的,每一层都能轻松验证和调试。

Disadvantages

以下是分层操作系统架构的缺点。

  1. Less Performant - 与基本结构操作系统相比,分层结构操作系统的性能较差。

  2. Complex designing - 每一层都需要精心规划,因为每一层只需要与较低层通信,创建分层操作系统需要良好的设计流程。

Modular Architecture

模块化架构操作系统采用与单片机类似的原理工作,但设计更出色。一个中央内核负责操作系统的全部主要操作。这个内核具有一套核心功能,其他服务在操作系统启动时或在运行时作为模块动态加载到内核中。Sun Solaris 操作系统是模块化结构操作系统的一个示例。

Advantages

以下是模块化操作系统架构的优势。

  1. High Customizable - 由于是模块化的,每一层都能轻松实现自定义。可以添加新的功能,而不会影响其他模块。

  2. Verifiable - 由于是模块化的,每一层都能轻松验证和调试。

Disadvantages

以下是模块化操作系统架构的劣势。

  1. Less Performant - 与基本结构操作系统相比,模块化架构操作系统的性能较低。

  2. Complex designing - 每一层都需要精心规划,因为每一层都需要与内核通信。需要设计一个通信 API 来促进通信。

Virtual Machine Architecture

在此类架构中,诸如 CPU、内存、硬盘之类的硬件被抽象为虚拟机。用户可以使用它们,并通过执行上下文实际配置它们。虚拟机占用大量的磁盘空间,且必须预置。可在单个物理机创建多个虚拟机。

Advantages

以下是基于虚拟机的操作系统架构的优势。

  1. High Customizable - 因为是虚拟的,所以功能易于获取,可根据需要进行定制。

  2. Secure - 因为是虚拟的,而且没有直接硬件访问,所以此类系统具有高度安全性。

Disadvantages

以下是基于虚拟机的操作系统架构的劣势。

  1. Less Performant - 与模块化结构操作系统相比,虚拟结构操作系统性能较差。

  2. Complex designing - 虚拟机中的每个虚拟组件都必须经过仔细规划,因为每个组件都必须抽象底层硬件。