操作系统是一种允许用户应用程序与系统硬件交互的结构。由于操作系统是一个如此复杂的结构,因此在创建该操作系统时应非常小心,以便可以轻松使用和修改。实现此目标的一个简单方法是对操作系统进行分拆。这些部分中的每一部分都应明确定义,具有清晰的输入、输出和函数。
-
Simple Structure
-
Monolith Structure
-
Micro-Kernel Structure
-
Exo-Kernel Structure
-
Layered Structure
-
Modular Structure
-
Virtual Machines
Simple Structure
有许多结构相当简单的操作系统。这些系统一开始很小,后来迅速扩展,远远超出了其范围。MS-DOS 就是一个常见的例子。它仅为小部分人设计。没有迹象表明它会变得如此受欢迎。
与 MS-DOS 不同,操作系统最好具有模块化结构。那样将对计算机系统及其各种应用进行更好的控制。模块化结构还允许程序员根据需要隐藏信息,并根据自己的需要实现内部例程,而无需更改外部规格。
Advantages
-
Easy Development - 在简单的操作系统中,接口非常少,这使得开发很容易,尤其是在仅需交付有限功能时。
-
Better Performance - 与其他类型操作系统相比,这种系统具有较少的层,并直接与硬件交互,可以提供更好的性能。
Disadvantages
-
Frequent System Failures - 由于设计不佳,这种系统并不稳健。如果一个程序发生故障,整个操作系统就会崩溃。因此,在简单的操作系统中系统故障很常见。
-
Poor Maintainability - 由于操作系统的各个层紧密耦合,因此一层中的更改会严重影响其他层,并随着时间的推移使代码变得难以管理。
Monolith Structure
在整体结构操作系统中,称为内核的中心代码部分负责操作系统的全部主要操作。此类操作包括文件管理、内存管理、设备管理等。内核是操作系统的核心组件,它向应用程序和系统程序提供操作系统的全部服务。
内核可以访问所有资源,它充当应用程序和底层硬件之间的接口。一个整体内核结构促进了分时、多道程序模型,并在旧的银行系统中使用。
Advantages
-
Easy Development - 由于内核是可供所有主要功能开发的唯一层,因此易于设计和开发。
-
Performance - 由于内核负责内存管理、其他操作,并具有对硬件的直接访问权限,因此性能较好。
Disadvantages
-
Crash Prone - 由于内核负责所有功能,因此如果一个功能发生故障,整个操作系统都会发生故障。
-
Difficult to enhance - 在不影响整体操作系统的其他服务的情况下添加新服务非常困难。
Micro-Kernel Structure
与整体结构一样,在微内核中存在单个内核,而在微内核中,我们有多个内核,每个内核都专门于特定服务。每个微内核都独立于其他内核开发,并使系统更稳定。如果一个内核发生故障,操作系统将继续使用其他内核功能运行。
Advantages
-
Reliable and Stable - 由于多个内核同时工作,因此操作系统发生故障的可能性非常小。如果一个功能不可用,操作系统仍然可以使用稳定的内核提供其他功能。
-
Maintainability - 作为小尺寸内核,代码大小是可维护的。人们可以在不影响其他微内核代码库的情况下增强微内核代码库。
Disadvantages
-
Complex to Design - 这种基于微内核的架构难以设计。
-
Performance Degradation - 与整体架构相比,多内核、多模块通信可能会降低性能。
Exo-Kernel Structure
Exo-Kernal 结构操作系统是在麻省理工学院设计和开发的。该设计的目的是保持内核大小最小,同时允许应用程序直接管理硬件资源。删除硬件资源的操作系统抽象的目的是使应用程序员能够编写高性能代码,而 exo-kernel 处理其他操作。
Advantages
以下是 exo-kernel 操作系统结构的优点。
-
High Performance - 由于应用程序可以分配内存,因此设计更好的代码可以进行优化并更好地执行。
-
Application Control - 由于资源管理不受操作系统保护,因此应用程序对系统资源有更多控制权,并且可以在系统资源上编写自定义操作。
Disadvantages
以下是 exo-kernel 操作系统结构的缺点。
-
Unreliable and Unsafe - 由于安全性位于应用程序级别,编写拙劣的代码会破坏系统。
-
Complex Design - 设计外核很复杂。
Layered Structure
在操作系统中实现模块化的办法之一就是采用分层方法。在这种方法中,最底层是硬件,最顶层是用户界面。
如图像所示,每一层都基于底层构建。所有层对上层隐藏一些结构、操作等。
分层结构中的一个问题是每一层都需要仔细定义。这是必要的,因为上层只能使用下层的各个功能。
Advantages
-
High Customizable - 由于是分层的,每一层都能轻松实现自定义。可以添加新的功能,而不会影响其他模块。
-
Verifiable - 由于是模块化的,每一层都能轻松验证和调试。
Disadvantages
-
Less Performant - 与基本结构操作系统相比,分层结构操作系统的性能较差。
-
Complex designing - 每一层都需要精心规划,因为每一层只需要与较低层通信,创建分层操作系统需要良好的设计流程。
Modular Structure
模块结构操作系统的工作原理与单内核的操作系统类似,但设计更合理。一个中心内核负责操作系统的几乎所有主要操作。此内核具有许多核心功能,其他服务在启动时或在运行时动态地加载到内核中,以模块形式存在。Sun Solaris 操作系统就是模块结构操作系统的示例之一。
Advantages
-
High Customizable - 由于是模块化的,每一层都能轻松实现自定义。可以添加新的功能,而不会影响其他模块。
-
Verifiable - 由于是模块化的,每一层都能轻松验证和调试。
Disadvantages
-
Less Performant - 与基本结构操作系统相比,模块结构操作系统的性能较差。
-
Complex designing - 每一层都需要精心规划,因为每一层都需要与内核通信。需要设计一个通信 API 来促进通信。
Virtual Machine Structure
在这种结构中,CPU、内存、硬盘之类的硬件都抽象到了虚拟机中。用户可以使用它们,而实际上是使用执行上下文将其进行配置。虚拟机占用大量的磁盘空间,需要进行预置。单个物理机上可以创建多个虚拟机。
Advantages
-
High Customizable - 因为是虚拟的,所以功能易于获取,可根据需要进行定制。
-
Secure - 因为是虚拟的,而且没有直接硬件访问,所以此类系统具有高度安全性。
Disadvantages
-
Less Performant - 与模块化结构操作系统相比,虚拟结构操作系统性能较差。
-
Complex designing - 虚拟机中的每个虚拟组件都必须经过仔细规划,因为每个组件都必须抽象底层硬件。