| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 宏内核、微内核、混合内核的理解 -> 正文阅读 |
|
[系统运维]宏内核、微内核、混合内核的理解 |
想要说清楚宏内核,我认为首先要从内核说起,内核是连接应用层和硬件层的资源管理系统。在我理解看来,简单说就是管理软件和硬件,使得软件能够在硬件上运行。 我认为越庞大的操作系统功能必然更加强大,结构也会更加复杂,追根溯源的话,可以理解为现在应用程序的壮大,各种app,或者电脑应用程序众多,如何使能应用程序,操作系统在其中起到了功不可没的地位,一个最简单的内核最起码要实现对硬件层和软件层基本管理,比如IO的调用、内存的管理等等。实际上也就是通过和CPU进行二进制的交流,将简单的电平信号进行处理,能够调度应用层。 同时在最近看到一本关于操作系统的书说到,通常我们是通过一个操作系统来制作一个新的操作系统,那么第一个操作系统怎么来的呢,第一个操作系统是人们通过对照CPU的命令代码将0和1排列起来,再将这些数据写入磁盘,就做出来了一个能够自启动的操作系统。
宏内核包含了一个非常完整的内核所要具备的所有功能,包括了进程管理、管理内存、管理硬盘、管理各种I/O设备……这些功能统统被集成在宏内核中,在运行的时候,它是个单独的二进制大映像。其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。这样的结构会使得宏内核非常的庞大,同时调度时也会更加的方便。宏内核具有代码庞大、性能好、耦合性高的特点,像Linux这种庞大的宏内核操作系统,恐怕一个人一生是很难写出来的,操作系统在不断地迭代更新中变得愈发庞大,同时也更加的方便和高效。 在这里顺便一提吧,原来我经常会将操作系统和内核弄混,有时候觉得Ubuntu、Linux、Windows、Mac都是一类东西,但实际上内核并不是操作系统,内核只是操作系统的一部分。在这里以Linux为例,Linux以Linux为内核,它既是操作系统的名字,又是内核的名字,Linux是一个典型的宏内核,但是我们又经常说Ubuntu也是Linux的,实际上说的是Ubuntu是以Linux为内核开发的操作系统,还有许多国产的操作系统比如红帽、Deepin等等都是基于Linux内核开发出来的操作系统。 图1 宏内核层次结构示意图
前面讲清楚了内核和宏内核,到了这里微内核就更好解释了,宏内核是最大内核,在我看来微内核就是最小内核了。 微内核包含了内核所需要的最基本的功能,由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成,这些原语仅仅包括了建立一个系统必需的几个部分,如任务调度,中断处理等。那么微内核相较宏内核缺少的那些部分比如进程管理、存储器管理、文件管理……这些模块功能被移除了内核,来到了应用层,变成了一个个服务进程,和用户进程同等级,只是它们是一种特殊的用户进程。 图2 微内核层次结构示意图
以微内核的内存资源分配为例子,应用程序首先会发送内存分配的消息,这个发送消息的接口函数是由微内核提供。此时CPU切换到内核态,开始执行该函数的代码,微内核的代码会使当前进程停止运行,并将消息发送给内存管理的服务进程。内存管理服务进程收到该消息后,就会分配一块内存,并且也会通过消息的形式将分配的内存块的地址返回给内核。微内核再将该消息返回给发送内存分配消息的应用程序。此时CPU切换到用户态,应用程序会得到返回的内存块首地址,并开始使用该内存。这样就会导致微内核在调度内存时多次在用户态和内核态来回切换,使得整个操作系统的性能大大降低。 对比宏内核中,微内核结构主要是多了接收和发送消息的这一过程,实际上也是系统调用,只是并不是直接调用内存管理的接口函数,因为微内核中内存管理功能模块已经不属于系统调用了。所以对比起宏内核,微内核结构的性能会差不少。
混合内核很像微内核结构,只不过它的的组件更多的在核心态中运行,以获得更快的执行速度。宏内核和微内核更像是两个极端,各自的特点鲜明,优缺点同样很明显,但是操作系统作为一个适用于各种硬件平台的资源管理器,我们不仅仅要求性能强大还要求可移植性强等等。这个时候混合内核就发挥了更好的作用。 三者的异同
对于我们平时使用电脑比较多的学生来说,对于我们平时使用电脑比较多的学生来说,可能更加熟悉的时 Linux、Windows、Mac 等等,最近新出的单片机的有 RT-Tread 操作系统。相较于计算机上的操作系统,单片机的操作系统更加简单结构也更加清晰。 Linux Linux 作为一个被大家熟知的经典宏内核的操作系统系统,可以看到它的内部是多模块耦合,其模块之间可以进行相互调用结构相较于其他的内核更加的复杂也更加的混乱。不过这也是 Linux 的性能极高的原因这样导致的一个结果就是,图中各个模块的调用路径从横交错,会出现一个地方出现问题,其他相关的地方可能都会出现问题,这是十分不安全的,同时不利于二次开发和升级。 Windows Windows 是现在用户普遍使用的一种操作系统,主要用于商用,所以具有极高的稳定性,以及极高的集成度,很多东西不再适合用来二次开发。(仅个人理解)Windows 使用的是 NT 内核。 Mac MacOS 使用的是 Darwin-XNU 内核。 在这里就不多赘述以上三种操作系统的内核了,毕竟我现在也看不懂这些内核的结构图, 相较而言 RT-Tread 的内核更容易理解一点 RT-Tread RTT 总共发布了三种内核的操作系统,分别是 rt-smart、nano、以及经典的 RT-Tread。 RT-Thread Smart(简称 rt-smart)是基于 RT-Thread 操作系统衍生的新分支,高端应用的芯片。rt-smart 在 RT-Thread 操作系统的基础上启用独立、完整的进程方式,同时以混合微内核模式执行。 RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),正演变成一个功能强大、组件丰富的物联网操作系统。相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。 RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。 所以说,以上的 RT-Thread 以及 Smart 都属于是混合内核,而 nano 属于一个微内核。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 0:29:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |