操作系统中的外核

7 Jan 2025 | 11分钟阅读

Exokernel 是一种操作系统架构,它试图在有效管理硬件资源的同时,尽可能少地为程序提供抽象。与封装硬件资源的标准单片内核不同,Exokernels 直接将底层硬件资源提供给程序。由于其更高的效率、灵活性和可定制性,Exokernels 特别适用于研究和专业计算环境。

Exokernel 的核心组件是资源多路复用。资源管理不再以线程和进程等高级抽象的形式出现,而是将其功能委托给由应用程序开发人员编写的库。同样,负责控制特定硬件集(例如内存、CPU 和网络接口)的 OS-libs 或库操作系统 (library OSes) 代表了这些功能和分配。Exokernels 通过仅提供对机器直接资源的访问而无需任何额外工作,可以大幅降低传统内核抽象的成本,从而提高了效率和性能。

特别是,由于每个程序都在一个独立且专用于物理资源的受保护环境中运行,因此 **Exokernels** 可以在应用程序之间实现强大的隔离。这减少了恶意行为者攻击的目标环境的攻击面,有助于增强保护。另一个需要注意的点是,Exokernels 允许更细粒度的资源分配。这种能力使程序能够根据特别针对的需求,尽可能地优化地操纵计算机硬件资源。

理解关键术语

  • 基本上,在所有提到的行业中,熟悉对有效沟通、团队合作和信息分发至关重要的不同术语是核心。有时您会遇到只有专家才能使用的专业词汇和解释,他们需要这些来达到特定的目的。这使得专家、学者或爱好者能够清晰简洁地讨论相关主题。了解基本术语非常重要,因为无论您的学科是科学、法律还是任何其他领域,它都有助于您理解并取得成功。
  • 科学中的术语和科学概念通常表示复杂的现象、概念和过程。以物理学为例。“量子力学”、“相对论”和牛顿运动定律等术语是我们理解宇宙的基础。同样,“DNA 复制”、“自然选择”和“生态系统”等术语是生物学科学语言中用于表示遗传、进化和生态概念的关键术语。
  • 计算和技术领域的各种术语同样复杂,因为它们需要系统以及创新的快速发展。语言学家必须熟悉用于描述计算概念和技术的术语,例如算法、数据结构和人工智能,因为它们与计算机科学相关。同样,在处理通信协议和网络设计时,理解“TCP/IP”、“带宽”和“路由”的含义至关重要。
  • 医学领域的术语(可以是定义性的、治疗性的或诊断性的工具)有助于描述各种疾病、确定疾病的原因以及在研究过程中。例如,糖尿病、高血压和癌症转移等术语对于充分反映医学问题及其书面描述至关重要。此外,正确服药、尽量减少副作用以及减少药物相互作用等信息对于安全有效地使用处方药也很重要。
  • 法律术语是另一种形式的行话,由法律专业人士使用。必须牢记法律词汇,即“管辖权”、“先例”和“正当程序”,以熟悉法律原则和实践。同样,“对价”、“违约”和“赔偿”等词语是理解和掌握合同法概念的关键。

Exokernel 架构

1. 极简内核

  • 这是 Exokernel 设计的一个特点,它构建了一个核心内核来满足所有必需的需求,包括提供安全机制和硬件资源多路复用系统。
  • 与涵盖内存管理和进程管理等多种抽象的大型单片内核不同,Exokernel 主要要求防止和启用资源访问。

2. 直接硬件访问

  • Exokernel 实际上直接提供对硬件接口的访问,绕过了标准的内核层。
  • 由于内核抽象的实现可能因应用程序的需求而异,因此虚拟访问是一种利用每个应用程序的资源管理系统来实现最佳效率的方法。

3. 抽象库

  • Exokernel 方法使用称为“libOSes”或“库操作系统”的系统级库来实现中间层功能,如内存分配、网络和进程管理,而不是将抽象嵌入到内核中,在那里它们是特权功能。
  • 以这种方式工作的库可以针对直接在硬件资源上运行并运行在 Exokernel 之上的各种工作负载进行定制和优化。

4. 资源多路复用

  • 除了在软件程序之间进行小规模的命令分割外,Exokernel 还负责更精细粒度的资源分配。
  • 为此,根据程序所需的特定资源,仅向每个程序提供一部分可用资源,用于创建将确保硬件得到有效利用且无冗余的必要内核。

5. 灵活性和可定制性

  • Exokernel 架构足够灵活,可以支持多种操作系统架构和编程范例,这是其主要优势。
  • 这可以通过多种方式实现,并允许不同能力水平的开发人员尝试找到解决已知问题甚至开始解决尚未解决问题的方案。

6. 强大的隔离

  • 通过管理空间域,Exokernel 允许在程序之间进行强大的隔离,即使在直接访问系统资源的情况下也是如此。
  • 由于其自身安全性,每个应用程序都在运行并致力于通过拒绝任何未经授权的资源访问来增强系统安全性。

7. 安全注意事项

  • 通过消除硬件漏洞,Exokernels 增强了系统的保护层,从而完全防止外部世界的损害。
  • 通过子系统在应用程序级别重定向操作,可以实现目录服务中的安全功能,这有助于防止安全威胁。

8. 性能优化

  • 这可以通过从 Exokernels 中移除内核抽象层的成本来实现。
  • 这样,面向性能的开发就处于最前沿。
  • 应用程序对硬件资源的直接控制可以进行优化和配置,以适应需要高效性能的特定工作负载。

9. 困难

  • 尽管有这些好处,Exokernel 设计仍然存在一些问题,例如保持不同硬件平台在某种程度上可互操作以及保证稳定性和避免与资源的冲突。
  • 研究不应停止,但应认真权衡并意识到这些问题。

10. 研究与创新

  • Exokernel 是操作系统设计研究人员持续的灵感来源,他们在此基础上创造新的软件。
  • 它在管理资源和定制方面的独特方法不仅带来了对最新颠覆性操作系统概念的既定理解,而且还让人们得以触摸计算机的未来。

Exokernel 概念示例

在操作系统设计的许多层面都可以观察到 Exokernel 的概念,例如在硬件资源访问、应用程序级别资源管理以及简单的内核方面。以下是一些演示 Exokernel 思想的例子:以下是一些演示 Exokernel 思想的例子

1. 直接硬件访问

  • 在 Exokernel 系统中,程序通常直接在硬件组件上运行,无需内核。
  • 在伪 Exokernel 环境中,应用程序可以通过直接控制网络接口硬件来执行前所未有的网络任务。
  • 例如,它们可以在没有传统内核网络堆栈的情况下运行。然而,通过执行此任务,这些应用程序能够创建仅针对特定任务或领域的网络协议和优化。

2. 库操作系统,通常称为 libOSes

  • Exokernel 使用 libOSes 来打包内核历来处理的高级抽象。
  • 如果内存管理 libOS,例如,具有内存分配和去分配的功能,应用程序就可以直接管理内存资源。
  • Exokernel 利用 libOSes 将复杂功能分配给用户空间库,从而实现更大的定制和灵活性,同时保持内核的简洁。

3. 精细资源分配

  • 通过在应用程序之间多路复用硬件资源,Exokernel 提供精细的资源分配。
  • 例如,基于 Exokernel 的多媒体应用程序可以根据实时性能需求动态分配 CPU 和 GPU 资源。
  • 这种对硬件资源的精细控制允许根据单个应用程序的需求进行有效优化和利用。

4. 保护域

  • 使用保护域,Exokernel 将我们运行的程序分开。这是因为用户环境的程序位于其单独的安全区域,并且只允许访问单独分配给它的资源。
  • 一个例子是,Web 服务器的 pandokernel 系统中的每个服务器实例都在其区域中运行,限制了对私人信息或资源的未经授权访问。

5. 定制操作系统功能

  • Exokernel 将为开发人员提供机会,让他们将自己的功能添加到操作系统中。具体来说,我们可以暗示可以使用一个专门用于在科学计算应用程序中使用的分布式内存体系结构上处理有效并行处理的 libOS。
  • 通过这种创新的实验性设计,可以极大地支持定制操作系统实体职责的灵活性,使其能够最有效地支持用户期望和应用程序需求。

Exokernel 的优点

1. 有效的资源管理

  • 它们节省内存分配,并充当应用程序和物理设备之间的通信元素,因此不再需要内核抽象,并且资源得到有效管理。
  • 通过其直接访问应用程序的主要特性,这项技术可以用来最大限度地减少资源浪费,并在资源利用期间提高效率。

2. 定制和灵活性

  • 通过使开发人员能够根据自己的需求构建自己的操作系统功能,Exokernel 使得各种操作系统架构和编程风格成为可能。
  • 开发人员可以编写用户空间操作系统库 (libOSes),这些库旨在实现定制抽象和优化,从而针对特定硬件平台或工作负载定制系统。韧性促进了探索,以找到系统设计的最佳解决方案。

3. 精细资源分配

  • 这种在多个应用程序之间多路复用宝贵硬件部件的方法将为 Exokernel 提供精细的资源分配支持。
  • 通过允许应用程序根据需要更改资源,可以纠正资源和性能,从而实现效率和有效性。
  • 在多个处理任务专门通过这些系统执行的实际领域中,对资源分配进行细粒度管理为可扩展性和优化提供了基础。

4. 改进的性能

  • Exokernels 在性能方面优于单片或微内核设计,因为它们消除了传统内核抽象的开销。
  • 由于应用程序可以直接访问硬件资源,因此可以优化资源管理,并减少上下文切换开销。
  • 因此,Exokernels 非常适合实时系统和高性能计算环境。

5. 强大的隔离和安全性

  • Exokernels 使用保护域来强制执行强大的应用程序隔离,确保每个应用程序都在其自己的安全环境中运行。
  • 这种分离减少了恶意行为者可用的攻击面,从而提高了系统安全性。
  • 此外,Exokernels 通过提供对硬件资源的直接访问,促进了在应用程序级别库中有效实现安全功能。

6. 支持专用工作负载

  • Exokernels 特别适用于需要专业计算、资源管理和定制优化的环境。
  • 云平台、嵌入式设备、实时系统和科学计算是其中的一些例子。
  • Exokernels 使开发人员能够定制操作系统以满足特定工作负载的独特需求,从而最大限度地提高效率和性能。

Exokernel 的缺点

1. 应用开发复杂性

  • 为 Exokernels 创建应用程序需要深入了解低级编程和硬件资源。
  • 由于应用程序直接访问硬件,开发人员必须手动处理资源分配、同步和保护。Exokernel 系统可能由于其复杂性而更难采用,特别是对于经验较少的工程师。它还延长了开发时间。

2. 缺乏标准抽象

  • 通用操作系统的进程、线程和虚拟内存操作等概念是一些 Exokernels 中缺失的标准抽象。
  • 缺少这些实体存在无法将实际应用程序移植到 Exokernel 系统,并强制更改代码的功能。
  • 另一个障碍是软件系统缺乏社区现有标准抽象的指导,而社区已习惯于依赖它们。

3. 系统稳定性和可靠性

  • 当程序直接寻址操作系统稳定性和可靠性的硬件资源时,存在风险的可能性是一个问题。
  • 应用程序可能导致的内核问题或与其他应用程序之间的问题将加剧系统维护稳定性的任务。
  • 有错误或缺陷的应用程序可能比系统中断的潜在风险更严重,可能导致数据损坏或系统故障(某些情况)。

4. 安全问题

  • 虚拟化层 Exokernel 可以提供硬件资源,但如果没有将内核分割到虚拟域中以实现良好的隔离,仍然可能导致安全问题。
  • 攻击者可以利用应用程序级库中的漏洞或在硬件资源中制造混乱。
  • 他们的唯一目的 - 绕过系统安全机制。此外,安全方面还存在更多问题,因为在应用程序级别管理安全系统很复杂,导致应用程序级别系统的管理变得更加困难。

5. 资源管理困难

  • 虽然 Exokernel 的细微资源分配机制可能非常高效,但运行数百个虚拟机仍然是一个挑战,并且熟练的资源管理可能需要付出相当大的努力。
  • 它们反过来又必须争夺数据资源本身,这反过来可能涉及资源争用和资源浪费。管理复杂资源并为所有人提供好处同时避免资源争用的任务并不容易。将其实际应用到现实并实时实现并不容易。

Exokernel 的内容是否能造就任何重量级产品?

1. 专用工作负载

Exokernel 等系统可以成为需要专用计算、资源管理和定制的空间的高效解决方案。Exokernels 为应用程序提供确定性的硬件资源访问,就像在科学计算、实时系统、嵌入式设备和拥有大量处理器且每个处理器共享通用网络的集群中一样。

2. 复杂性和开发开销

开发 Exokernel 的应用程序,您必须了解低级编程概念和资源。源代码管理、同步和安全支持可能对开发人员来说是一项繁琐且具有挑战性的工作,特别是对于那些没有系统编程教育背景的人。

3. 兼容性和可移植性

与 Exokernels 类似,它们不包含传统操作系统中的标准抽象,因此与现有的软件生态系统和现有的软件兼容可能会非常复杂。主要利用线程、虚拟内存管理和进程等经典抽象的应用程序在更改为 Exokernel 结构时可能会遇到困难。

4. 系统稳定性和安全性

关于在外部系统硬件中实现安全性和可靠性,使用直接硬件访问是一个风险因素。系统维护需要严格的测试、错误修复和各种安全模型。软件工程师需要解决的一个主要领域是识别和消除应用程序代码中的错误或缺陷,这些错误或缺陷可能导致系统崩溃或安全问题。