RTT大牛告诉你,混合微内核是什么?



RT-Thread之前写过好几篇文章介绍微内核,然而不少开发者依然不清楚到底微内核操作系统是什么。为此,我们特别整理了5期快问快答,来为大家答疑解惑!

  • RT-Thread Smart称作是混合微内核操作系统,为什么叫混合微内核操作系统呢?

  • RT-Thread Smart和当前的版本及Linux有什么区别?

  • 有什么特色呢,用于什么场景?

  • 资源占用情况如何呢?

  • 效率又是怎么样呢?

且待我们一一解答,今天先来解释RT-Thread Smart混合微内核操作系统是什么。

<插播一句:9月1日RT-Thread将在北京举行发布会发布RT-Thread Smart混合微内核操作系统,欢迎报名来现场交流了解更多信息,观看微内核应用Demo>>

首先来看看这几个概念


PART ONE

什么是宏内核操作系统?

操作系统的特性组件均以内核态运行,而用户程序在用户态运行。比如 Linux 是一种典型的宏内核操作系统,不仅仅内核组件、驱动程序、网络协议栈、文件系统等等均在内核态运行。宏内核操作系统要求在内核态运行的程序代码具备极高的健壮性,否则任何一部分的错误或异常非常容易扩散到整个操作系统,引发系统崩溃等严重问题。

PART TWO

什么是微内核操作系统?

操作系统的内核模块运行在内核态,网络协议栈、文件系统等和用户程序一样运行在用户态。这种操作系统的内核可以做的很小,功能单一简练,比较容易形成稳定的内核。用户态的大型组件即使有发生异常,既不会影响其他进程的运行,也不会导致操作系统内核崩溃。

PART THREE

什么是混合微内核操作系统?

混合微内核操作系统是 睿赛德科技针对目前行业痛点定义的一款新形态的操作系统,支持将系统服务组件或驱动按需纳入内核态中运行,以获得更佳的性能,也支持将系统的大部分系统组件及驱动移到内核之外即用户态,以一个个单独的服务进程运行,内核与服务进程之间通过消息传递完成交互。

这样,从外在看,这种操作系统兼具微内核操作系统的特性,又具备了宏内核的高性能特性,为开发者提供了更多系统性能调优方面的可能。

下面用一个通俗的例子来做个比喻解释下微内核和混合微内核:

操作系统内核 - 比喻为总经理在总经理办公室(内核态)

某个进程 A - 比喻为处理工作的职员A,在外面的办公区某个工位(该进程空间)

某个进程 B(用户应用程序或系统服务) - 比喻为处理工作的职员B,在外面的办公区另一个工位(该进程空间)

微内核场景下, 职员A和职员B,分别和总经理交流,分别在不同的工位,即使A发生错误,也不影响B以及总经理的安全,而且此时总经理办公室非常简单,处理的事务也很简单,只负责任务计划(调度)、通信(IPC)、工位分配(内存管理)等,可以做到足够的简单稳定,这些都是微内核特有的优秀属性。

在某些情况下,假设A需要B的服务,则仍旧需要A先敲门进总经理办公室(操作系统中进程间互相访问,需要调用内核机制),再出来,总经理然后把B叫进来,B提供服务,经由总经理转给A。 这期间,A和B与总经理交流都要频繁敲门开门关门(系统调用),会消耗部分资源。如果A对B的服务请求过分频繁,则系统的响应速度会比较低。

此时,如果B能够直接搬进总经理办公室(内核态),如果A需要请求服务,则B就在总经理边上,响应就会变得十分迅速,这就是 某些进程(例如B)可以在用户态执行,也可以按需迁移到内核态(总经理室)运行。这时的内核特性,就是表现为混合微内核,而不是一个纯粹的微内核。

这个比喻不一定恰当,但应该能一定程度帮助我们理解什么是微内核操作系统以及混合微内核操作系统,如有建议请留言探讨。

下一问我们将解答下RT-Thread Smart和Linux、RT-Thread的区别,敬请关注。








你可以添加微信 17775982065 为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群!

RT-Thread


让物联网终端的开发变得简单、快速,芯片的价值得到最大化发挥。Apache2.0协议,可免费在商业产品中使用,不需要公布源码,无潜在商业风险。

长按二维码,关注我们

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux操作指令及根目录介绍

1. 查看当做操作目录位置 > pwd 2. 查看(当前)目录里边的文件内容 > ls //list > ls -l 或ll //显示文件的详细信息 > ls -al //all显示文件的详细信息(包括隐藏文件) > ls -a //显示目录全部文件名字(包括隐藏文件) > ls [-al] 目录 //查看指定目录的文件信…

计算机linux运维日记,计算机的运维系统情况

其实&#xff0c;对于计算机的主要部件来说&#xff0c;计算机是有硬件和软件组成的&#xff0c;并且能够通过硬件和软件的协同工作完成了的&#xff0c;而对于一些计算机的硬件&#xff0c;则是由一些不同的部件进行完成的&#xff0c;那么其中主要的补间就是内存&#xff0c;…

Linux ALSA 图解

最近在解决一个音频的问题&#xff0c;所以正好借这个机会来把音频的东西重新梳理一下&#xff0c;总结是一个很好的习惯&#xff0c;能方便自以后遇到问题快速排查问题。平台「MT8167」内核版本「kernel 4.4」音频读数据函数流程tinyalsa调用读取函数IOCTL调用流程读取数据到应…

OpenGL学习笔记-坐标系统

转换关系&#xff1a; 局部坐标系 &#xff08;模型矩阵&#xff09;》 世界坐标系&#xff08;观察矩阵&#xff09;》观察坐标&#xff08;投影矩阵&#xff09;》裁剪坐标 Vclip Mprojection * Mview * Mmodel * Vlocal 裁剪空间&#xff08;透视划分&#xff09;》标准化设…

将一段复杂文本变成字符串的赋值语句

因为需要在C#的代码中&#xff0c;写入一大段的js代码和网页代码&#xff0c;试验已经没有问题了。实现时却碰到一个小问题&#xff0c;就是大段的js和html代码&#xff0c;应该以什么方式存在。最省事的方式&#xff0c;其实就是存在一个单独的文件中&#xff0c;每次读入即可…

ARM 原子操作里的两个汇编指令

今天一个读者朋友给我留言&#xff0c;问了这个问题&#xff0c;ARM原子操作的汇编代码&#xff0c;还给我截图了两个不同的解释&#xff0c;让我说哪个是正确的。原子操作的起因是为了内核同步&#xff0c;保证数据在正确性&#xff0c;之前已经吹过一波&#xff0c;可以看这几…

解决Ubuntu下pycharm无法输入中文的问题

sudo nautilus在这个界面中通过“计算机”进入pycharm.sh所在文件夹。一般在安装包的bin文件夹中。3、在文件pycharm.sh中添加红色字样内容&#xff08;根据自己实际pycharm.sh文件内容适当添加&#xff09;[maokxlocalhost bin]$ vi pycharm.sh# ----------------------------…

奥鹏20春在线作业c语言,电子科20春《C语言(专科)》在线作业3答案

试卷总分:100 得分:100一、单选题 (共 20 道试题,共 100 分)1.已知intb;则对指针变量p正确的说明和初始化是&#xff1a;()A.intpb;B.intp&b;C.int*pb;D.int*p&b;答案:2.对于int*p;inta[];pa;的合法运算()A.若p中的地址为100则p;运算后&#xff0c;则其值为100B.p;相当…

秒,在解答这个C语言题目上,我们都败了

看这篇文章之前&#xff0c;我觉得可以先看看下面这篇文章 看printk引发的一点思考不管我们用的printk还是printf&#xff0c;它们的核心都是可变参数的函数&#xff0c;所以可以拼接很多参数传递给函数实体&#xff0c;然后函数实体里面可以通过某种方式解析这些参数。看看这个…

为C++程序添加文件保存加载功能

一、引子为什么要浪费时间去设计一个算法来实现数据的文件存储还要费劲地调试代码呢&#xff1f;Boost库可以为你做这些事情。借助于串行化模板&#xff0c;你可以容易地把数据存储到你自己定制格式的文件中。本文将教给你如何轻松地存储数据并回读数据。二、概述当你开发一个软…

[Uva10641]Barisal Stadium(区间dp)

题意:按照顺时针给出操场的周边点&#xff0c;然后给出周围可以建设照明灯的位置&#xff0c;以及在该位置建设照明灯的代价&#xff0c;照明灯照射的范围与操场的边界相切&#xff0c;现在要求一个最小的花费&#xff0c;要求操场的所有边都被照射到。 解题关键&#xff1a;预…

常用c语言代码大全,C语言的一些常用代码

C语言经常需要发明各种轮子&#xff0c;为方便以后能够把精力放在应用逻辑上而不在发明轮子上&#xff0c;把一些常用的代码片段列于此。首先是字符串处理方面的&#xff0c;strcpy 函数容易越界&#xff0c;习惯使用 strncpy 函数&#xff0c;但此函数只管复制最多 n 个字符&a…

Linux kernel 同步机制(下篇)

之前的文章Linux kernel同步机制在上一部分&#xff0c;我们讨论了最基本常见的几类同步机制&#xff0c;这一部分我们将讨论相对复杂的几种同步机制&#xff0c;尤其是读写信号量和RCU&#xff0c;在操作系统内核中有相当广泛的应用。读写信号量&#xff08;rw_semaphore&…

白话设计模式——Abstract Factory

Abstract Factory&#xff0c;把英文直接翻译过来的话就是“抽象工厂”&#xff0c;既然是工厂&#xff0c;那就肯定是生产产品的地方。不过&#xff0c;它不是生产同一类的产品&#xff0c;而是生产同一系列的产品。举个例子&#xff0c;广州本田现在生产3种汽车&#xff0c;O…

c语言程序设计工资纳税系统流程图,c语言程序设计,纳税工资系统.doc

c语言程序设计,纳税工资系统c语言程序设计,纳税工资系统第一章 课程设计目的和要求1.1 课程设计的目的C语言一直是程序设计语言的主流之一数据类型丰富、齐全。C供了整数、实数、字符、字符串等基本数据类型&#xff0c;还提供数组、指针、结构体等构造数据类型运算符丰富、齐全…

工程师实战:单片机裸机程序框架是怎样炼成的?

前言 前不久&#xff0c;我有位做测试的朋友转去做开发的工作&#xff0c;面试遇到了一个问题&#xff0c;他没明白&#xff0c;打电话问了我。题目大概就是&#xff1a;在单片机裸机开发时&#xff0c;单片机要处理多个任务&#xff0c;此时你的程序框架是怎样的呢&#xff1f…

c 语言指针教学视频,[C语言] 猎豹网校 C和指针视频教程

资源介绍21days_Cpp_二进制和十六进制.mp4xa0xa080x86_内联汇编.mp4xa0xa0ABG2C_for_循环.mp4xa0xa0ABG2C_关系运算符.mp4xa0xa0ABG2C_字符串.mp4xa0xa0ABG2C_循环.mp4xa0xa0ABG2C_数学运算.mp4xa0xa0ABG2C_更高级的运算符.mp4xa0xa0ABG2C_测试多个值.mp4xa0xa0ABG2C_终止循环.…

此处为本人自勉自留地!

本人自97年从师范学院毕业&#xff0c;整整8年的青春献给了自己所事业!前一段&#xff0c;遇到一些人和事&#xff0c;对我有些触动!找了一块自留地&#xff0c;写些东西进行自勉!也许我将有一个全新的开始&#xff0c;也许还是走以前的老路!希望是自己的&#xff0c;结果也是自…

Oracle shared server模式连接ORA-12519

设置了shared server连接&#xff0c;dispatcher进程和shared server进程都没有问题listener.ora文件配置如下&#xff1a;LSNR2 (DESCRIPTION (ADDRESS_LIST (ADDRESS(PROTOCOLtcp)(HOSTedbjr2p1.example.com)(PORT1526)) ))SID_LIST_LSNR2 (SID_LIST (SID_…