“Monolithic Kernel”的版本间差异

来自osdev
跳到导航 跳到搜索
(创建页面,内容为“{{Template:Kernel designs}} ==Design== {|align="right" |frame|right|Basic overview of a monolithic kernel. |} 单片内核在其内核中包含其所有 (或至少大部分) 服务。 这减少了所涉及的上下文切换和消息传递的数量,使得这个做法比 Microkernel 更快。 不利的一面是,内核空间中运行的代码庞杂使内核更容易出现致命的错误。 “单片(monolithic)” 一词本…”)
 
第1行: 第1行:
{{Template:Kernel designs}}
{{Template:Kernel designs}}


==Design==
== 设计 ==
{|align="right"
{|align="right"
|[[Image:Monolithic.png|frame|right|Basic overview of a monolithic kernel.]]
|[[Image:Monolithic.png|frame|right|Basic overview of a monolithic kernel.]]
|}
|}


单片内核在其内核中包含其所有 (或至少大部分) 服务。
单内核在其内核中包含其所有 (或至少大部分) 服务。


这减少了所涉及的上下文切换和消息传递的数量,使得这个做法比 [[Microkernel]] 更快。 不利的一面是,内核空间中运行的代码庞杂使内核更容易出现致命的错误。
这减少了所涉及的上下文切换和消息传递的数量,使得这个做法比 [[Microkernel|微内核]] 更快。 不利的一面是,内核空间中运行的代码庞杂使内核更容易出现致命的错误。


“单片(monolithic)” 一词本身是指一块或像石器 (lithic指石器制作) 中的整体一块 (mono),但是当应用于内核时,确切的含义更为笼统。 大多数人 {{who}} 认为,无论部件是动态加载的 “内核模块” 还是一切都是真正的单个不可更改的二进制文件,设备驱动程序和服务作为内核的整体运行的内核是单片内核。 因此,可以在 “整体” “纯整体” 之间进行区分。
“monolithic” 一词本身是指一块或像石器 (lithic指石器制作) 中的整体一块 (mono),但是当应用于内核时,确切的含义更为笼统。 大多数人 {{who}} 认为,无论部件是动态加载的 “内核模块” 还是一切都是真正的单个不可更改的二进制文件,设备驱动程序和服务作为内核的整体运行的内核都属于是单内核。 因此,可以在 “monolithic” “pure monolithic” 之间进行区分。


Linux的现代版本是单片内核的众所周知的例子-当驱动程序作为动态加载的 “内核模块” 封装传递时,它们仍被加载到内核空间中并在内核空间中运行。 单片内核对于80x86/PC架构很常见。
Linux的现代版本是单内核中众所周知的例子-当驱动程序作为动态加载的 “内核模块” 封装传递时,它们仍被加载到内核空间中并在内核空间中运行。 单内核对于80x86/PC架构很常见。


对于80x86/PC体系结构,“纯单片” 内核的示例很少见 (但在嵌入式系统中更常见)。 这是因为现代PC中可能存在各种各样的设备,硬件和CPU功能 - 在使用之前,如果是纯单片内核会太大或得专门为计算机进行编译。
对于80x86/PC体系结构,“pure monolithic” 内核的实例很少见 (但在嵌入式系统中更常见)。 这是因为现代PC中可能存在各种各样的设备,硬件和CPU功能 - 在使用之前,如果是pure monolithic内核会太大或得专门为计算机进行编译。


一般来说,大多数操作系统不是 “纯单片” “纯微内核”,而是介于这些极端之间,以便利用这两种方法的优势。
一般来说,大多数操作系统不是 “pure monolithic” “pure micro-kernel”,而是介于这些极端之间,以便利用这两种方法的优势。


== 例子 ==
== 例子 ==

2022年3月14日 (一) 05:59的版本

内核设计
模型
其它概念

设计

Basic overview of a monolithic kernel.

单内核在其内核中包含其所有 (或至少大部分) 服务。

这减少了所涉及的上下文切换和消息传递的数量,使得这个做法比 微内核 更快。 不利的一面是,内核空间中运行的代码庞杂使内核更容易出现致命的错误。

“monolithic” 一词本身是指一块或像石器 (lithic指石器制作) 中的整体一块 (mono),但是当应用于内核时,确切的含义更为笼统。 大多数人 [哪些人?] 认为,无论部件是动态加载的 “内核模块” 还是一切都是真正的单个不可更改的二进制文件,设备驱动程序和服务作为内核的整体运行的内核都属于是单内核。 因此,可以在 “monolithic” 和 “pure monolithic” 之间进行区分。

Linux的现代版本是单内核中众所周知的例子-当驱动程序作为动态加载的 “内核模块” 封装传递时,它们仍被加载到内核空间中并在内核空间中运行。 单内核对于80x86/PC架构很常见。

对于80x86/PC体系结构,“pure monolithic” 内核的实例很少见 (但在嵌入式系统中更常见)。 这是因为现代PC中可能存在各种各样的设备,硬件和CPU功能 - 在使用之前,如果是pure monolithic内核会太大或得专门为计算机进行编译。

一般来说,大多数操作系统不是 “pure monolithic” 或 “pure micro-kernel”,而是介于这些极端之间,以便利用这两种方法的优势。

例子

  • Linux
  • MSDOS, including Windows 9x (95, 98, Me)
  • Mac OS <= 8.6
  • Most BSDs
  • Xv6