单体操作系统
单体操作系统是一种非常基本的操作系统,其中文件管理、内存管理、设备管理和进程管理直接在内核中进行控制。内核可以访问系统中存在的所有资源。在单体系统中,操作系统的每个组件都包含在内核中。第一次使用采用单体架构的操作系统是在1970年代。
单体操作系统也被称为单体内核。这是一种旧的操作系统,用于执行诸如批处理和时间共享任务之类的小任务。单体内核充当控制所有硬件部件的虚拟机。
它与微内核不同,微内核具有有限的任务。微内核分为 内核空间 和 用户空间 。两个部分通过进程间通信(IPC)相互通信。微内核的优势在于,如果一个服务器失败,那么另一个服务器将接管它。
单体内核
单体内核是一种操作系统架构,整个操作系统在内核空间中运行。单体模型与其他操作系统架构(如微内核架构)不同,它独自定义了计算机硬件上的高级虚拟接口。
一组原语或系统调用实现了所有操作系统服务,如进程管理、并发性和内存管理。设备驱动程序可以作为模块添加到内核中。
单体内核的优势
以下是单体内核的一些优点:
- 单体内核的执行速度非常快,因为内存管理、文件管理、进程调度等服务在同一地址空间下实现。
- 在单体内核中,进程完全在单一地址空间中运行。
- 单体内核是一个静态的单一二进制文件。
单体内核的缺点
以下是单体内核的一些缺点:
- 如果单体内核中的任何服务失败,将导致整个系统失败。
- 用户需要修改整个操作系统来添加任何新服务。
单体系统架构
操作系统架构的单体设计对操作系统的特殊性质没有做任何特殊的适配。尽管设计遵循了关注点分离,但没有试图限制授予操作系统各个部分的权限。整个操作系统以最高权限执行。单体操作系统内部的通信开销与其他软件相同,被认为相对较低。
CP/M和DOS是单片式操作系统的简单示例。CP/M和DOS都是与应用程序共享单一地址空间的操作系统。
- 在CP/M中,16位地址空间以系统变量和应用程序区域开始。它以操作系统的三个部分即CCP(控制台命令处理程序)、BDOS(基本磁盘操作系统)和BIOS(基本输入/输出系统)结束。
- 在DOS中,20位地址空间以中断向量数组和系统变量开始,之后是DOS的驻留部分和应用程序区域,最后是由视频卡和BIOS使用的内存块。
单片式架构的优点:
单片式架构具有以下优点,例如:
- 结构简单且易于实现。
- 由于可以直接访问所有服务,执行速度更快。
单片式架构的缺点:
以下是单片式架构的一些缺点:
- 添加新功能或删除过时功能非常困难。
- 由于内核中的各个服务器之间没有隔离,所以安全问题始终存在。
模块化单片式系统
模块化操作系统和大多数现代单片式操作系统(如OS-9 OpenVMS、Linux、BSD、SunOS、AIX和MULTICS)可以在运行时动态加载(和卸载)可执行模块。
操作系统的这种模块化是在二进制级别进行的,而不是在架构级别进行的。模块化单片式操作系统不会混淆与使用微内核和服务器的服务器-客户端操作系统(有时作为混合内核销售)固有的架构级别的模块化。
实际上,动态加载模块只是在运行时以更灵活的方式处理操作系统映像,而不是重新启动使用不同操作系统映像的情况。模块允许根据需要轻松扩展操作系统的功能。与将模块构建到操作系统映像中相比,动态可加载的模块会产生一些小的开销。
然而,在某些情况下,动态加载模块有助于将内核空间中运行的代码量最小化。例如,为了减小内嵌设备或具有有限硬件资源的设备的操作系统占用空间。也就是说,未加载的模块不需要存储在稀缺的随机访问内存中。
单片式系统的局限性
单片式操作系统具有以下局限性,例如:
- 在该操作系统(OS)中编写的代码难以移植。
- 单片式操作系统更容易产生错误和漏洞。原因是用户进程使用与内核相同的地址位置。
- 向单片式操作系统添加和删除功能非常困难。需要重新编写和重新编译所有代码才能添加或删除任何功能。
单片式系统的特点
单片式操作系统提供以下功能给用户,例如:
- 简单的结构: 这种类型的操作系统有一个简单的结构。所有需要进行处理的组件都嵌入到内核中。
- 适用于较小的任务: 它更适合执行较小的任务,因为它可以处理有限的资源。
- 组件之间的通信: 所有组件可以直接相互通信,也可以与内核通信。
- 快速的操作系统: 构建单体内核的代码非常快速和可靠。
单体内核和微内核的区别
内核是操作系统的核心部分,它管理系统资源。内核就像是应用程序和计算机硬件之间的桥梁。内核可以进一步分为两类,即微内核和单体内核。
微内核 是一种允许自定义操作系统的内核类型。它运行在特权模式下,并提供低级地址空间管理和进程间通信(IPC)。此外,操作系统服务(如文件系统、虚拟内存管理器和CPU调度程序)位于微内核之上。每个服务都有自己的地址空间,以使它们变得更安全。此外,应用程序也有自己的地址空间。因此,应用程序、操作系统服务和内核之间有保护机制。
单体内核 是另一种内核分类。在基于单体内核的系统中,每个应用程序都有自己的地址空间。与微内核类似,这种内核也在应用程序和硬件之间管理系统资源,但 用户服务 和 内核服务 在同一个地址空间下实现。这会增加内核的大小,从而增加操作系统的大小。
该内核通过系统调用提供CPU调度、内存管理、文件管理和其他系统功能。由于这些服务都是在同一地址空间下实现的,这使得操作系统的执行速度更快。下面是微内核和单体内核之间的一些其他区别,例如:
术语 | 单块内核 | 微内核 |
---|---|---|
定义 | 单块内核是在操作系统中整个操作系统都工作在内核空间的一种内核类型。 | 微内核是一种提供低级地址空间管理、线程管理和进程间通信以实现操作系统的内核类型。 |
地址空间 | 在单块内核中,用户服务和内核服务都存储在相同的地址空间中。 | 在微内核中,用户服务和内核服务存储在单独的地址空间中。 |
大小 | 单块内核比微内核要大。 | 微内核的大小较小。 |
执行 | 它具有快速执行速度。 | 它具有较慢的执行速度。 |
操作系统服务 | 在单块内核系统中,内核包含操作系统服务。 | 在基于微内核的系统中,操作系统服务和内核是分开的。 |
可扩展性 | 单块内核的扩展相当复杂。 | 微内核易于扩展。 |
安全性 | 如果一个服务崩溃,那么整个系统也会崩溃在单块内核中。 | 如果一个服务崩溃,它不会影响微内核的工作。 |
定制化 | 向单块内核中添加新功能很困难。因此,它不可定制。 | 向微内核中添加新功能更容易。因此,它更可定制。 |
代码 | 撰写单块内核需要较少的代码。 | 微内核需要较多代码。 |
示例 | Linux、FreeBSD、OpenBSD、NetBSD、Microsoft Windows(95、98、Me)、Solaries、HP-UX、DOS、OpenVMS、XTS-400等。 | QNX、Symbian、L4L.inux、Singularity、K42、Mac OS X、Integrity、PikeOS、HURD、Minix和Coyotos等。 |