0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

微内核的差异性及开发工作

嵌入式IoT 来源:搜狐网 作者:搜狐网 2020-09-01 10:23 次阅读

1.本文目的

随着RT-Thread Smart微内核发布会的临近,对于开源社区以及国产RTOS比较关注的人或许早有耳闻。RT-Thread要发布微内核操作系统了。从去年的华为提出鸿蒙微内核到目前为止,都未曾真正见到一个微内核系统面向大众。从真正的开发者角度来看,或许真正的关注点不在于多少先进技术的提出,而实际的关注点在于是否好用,是否能够快速高效的开发出稳定的产品,是否用上了之后能够减少自己的工作量。本文主要从微内核开发的思维角度出发,谈一谈RT-Thread Smart以及我个人进行微内核开发工作的所思所想。

2.微内核的差异性

内核是操作系统中管理资源的核心部分,它充当着计算机程序与硬件之间桥梁。

其实在程序运行时,用户态程序想要访问外设,必须要通过内核进行资源调度,然后进行统一的管理。现在许多CPU中,最基本的都会有用户模式和超级管理员模式两种。用户程序首先必须要有可以自己管理的一段内存空间,进行业务逻辑的设计,如果要使用到共享资源或者硬件资源时,那就需要通知内核,此时内核进行调度和分配,在合适的时机给申请资源的应用程序。如果访问特殊的寄存器,这时候,还需要切换CPU的模式,从而访问超级管理员才能使用的寄存器。

这种权限的控制核心都是由内核进行,用户态程序申请访问内核资源的时候,通常是通过软件中断的形式实现,这会导致硬件的中断处理程序将控制权转移到作为操作系统一部分的适当的中断处理程序上,在进程中将模式位转换为内核模式。中断处理程序检查生成了哪个中断,如果合适,检查附加参数(通常通过寄存器传递),然后调用适当的内核服务例程来处理系统调用请求的服务。

此时如果用户程序访问了非法指令,或者访问了本不该自己访问的东西,也会产生软件中断,从而将事件交给内核处理,内核进行保存错误日志,并负责清理垃圾。

上述也仅仅介绍了内核态与用户态的基本工作流程,微内核基本也是沿用了这套思想,但是微内核体现的正是这个微的特定。为了体现微这个特点,微内核一般只会提供最少的进程和内存管理的服务,客户端程序与应用程序只在用户地址空间之间进行消息的传递,这样并不会影响内核的功能,但是这样的方式会大大增加消息传递的负载,也就是说,大量的消息传递也会降低系统的运行性能。但这些牺牲带来的好处也是显而易见的,对开发者来说非常的方便,不用过分关注内核的稳定性问题,只需要好好处理上层的业务逻辑即可。

3.微内核该怎么写应用程序?

微内核的应用程序部分一般不需要过度的去关注内核部分的代码,就像我们进行Linux开发应用程序一样。首先应该充分的相信微内核内核部分的可靠性,如果一出问题就总是怀疑内核是不是有BUG那就不太适合进行微内核的开发工作。我们在开发Linux的时候,遇到问题,总不会把Linux的整个代码再review一遍,这样是费力不讨好。

所以进行微内核的开发工作,首先需要知道微内核提供的编程规范,以及所提供的API函数进行程序设计。其实在C语言中,也是会提供一些标准库函数的,比如RT-Thread Smart中提供的musl库等等。当然还有不同微内核系统中所提供的专用的API,比如对RT-Thread比较熟悉的人,在上手RT-Thread Smart时,也能够找到很多之前用到的函数API的接口的影子。

而APP的编译是独立的,只需要交叉编译工具链,将程序链接到指定的入口地址,无论是通过makefile还是scons或者CMake都做不做限制,编译出来的程序,微内核通过加载器加载到内存中去执行程序。

另外编写应用程序需要注意的是不同线程之间的消息传递机制,以及线程与进程之间的关系。这个是非常值得关注和思考的问题。

4.微内核的效率和实时性怎么样?

我觉得微内核的实时性是弱于RTOS强于LInux的,之所有有这样的结论,是因为微内核确实会存在大量消息传递机制传递消息的问题。对于直接进行处理事件的RTOS来说,这样的方式必然会降低系统响应的速度。如果业务逻辑简单倒是看不到很明显的差异,但是一旦涉及到任务量大,应用程序很多的情况时,内核的负载太大了。

例如在用户态进行网络协议栈的处理上来说,如果说驱动在内核层,网络协议栈在用户层,数据将直接从内核驱动过来,然后通过消息传递机制比如共享内存传递到用户态,用户态接收到通知,然后再拷贝数据,处理数据,然后通过系统调用,又将处理好的数据传递到内核层。这个过程涉及到太长的链路,一定会影响系统的性能。但是如果驱动在应用层,那也需要大量的消息传递机制来确保两个进程间的通信的迅速以及准确。总体说起来,对于目前高性能的处理器来说,性能一般不是太大的瓶颈,架构的稳定与系统复杂度也是需要好好均衡的,鱼与熊掌不可得兼,舍鱼而取熊掌者也,至于其中的利弊,个人来做评判与选择。

5.如何客观的评价RT-Thread Smart混合微内核?

从我的角度去看这个东西,或许是用瑕不掩瑜这个词语概况比较恰当一点。凡事在开始阶段,都是在摸着石头过河,没有人会知道这个东西的真正面目是什么,也没有人彻底的能够描绘出它的全貌,所以开发的过程一步一步的进行的是挖坑再填坑的过程,刚开始没有轮子,然后慢慢有了一个轮子形状的东西,能转但是很奇怪,因为并不方正。然后慢慢的砍成一个方形的,之后慢慢磨,终于变成圆形的了,这时候就走的很顺畅了。我说的上述过程大概就是我做了一点微内核的开发工作的心路历程吧。

真正的做下来,没有什么尝试是毫无意义的。造不如买,买不如租这种思维模式,收益的也只是眼前,从长远的大趋势上来看,唯有走在最前面的人,才能看得到最好的风景。这次RT-Thread Smart 混合微内核的发布,具体能够有哪些东西值得关注,我后面再慢慢细说。我不敢说这个是一个极其好用的东西,但是我觉得至少走出了第一步,这也是一个突破。更多的功能完善,更加稳定的实现细节可能需要的是更多的努力吧,还有需要更多人的智慧,才能不断推进技术走向更高的高峰。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微内核架构
    +关注

    关注

    0

    文章

    5

    浏览量

    6528
  • 微内核
    +关注

    关注

    0

    文章

    57

    浏览量

    13412

原文标题:微内核进行开发工作究竟是怎样的感受?

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    晶体管之间的差异

    晶体管之间的差异性:就三极管,mos管和可控硅之间的差别和相同点的相关概念有点模糊,请各位大侠指点!!!
    发表于 06-07 23:27

    SKYLAB:BLE蓝牙模块SKB360与SKB362相比差异性

    智能照明方案。为了方便工程师的BLE4.0模块选型,本篇小编就来具体为大家介绍一下BLE4.0模块SKB360和SKB362的差异性。SKB360和SKB362的不同点:硬件区别:SoC类型不一样
    发表于 06-07 18:08

    线性稳压器和开关式稳压器的特性有什么差异性

    线性稳压器和开关式稳压器的特性有什么差异性?DCDC开关式稳压器有哪几种类型?
    发表于 03-08 07:59

    基于 stm32 的应用实例 —— USART 串口通讯(stm32 与主机通讯)精选资料分享

    目标一、基于寄存器、固件库编程的差异性二、参考资料文章说明一、基于寄存器、固件库编程的差异性基于寄存器与基于固件库的 stm32 LED 流水灯例子的编程方式有什么差异使用固件库,目前比较多的例程
    发表于 08-03 06:03

    模拟电路设计使HDTV体现出差异性

    模拟电路设计使HDTV体现出差异性 随着高清电视(HDTV)显示器技术的成熟,模拟视频和音频处理的质量将最终使电视机之间产生差异性。HDTV中的数字处理(包括图像扩缩、
    发表于 10-29 15:54 636次阅读
    模拟电路设计使HDTV体现出<b class='flag-5'>差异性</b>

    RS274D与RS274X 的差异性比较

    RS274D与RS274X 的差异性比较 GERBER FILE 目前常见到的有二种格式 RS-274D 及 RS-274X . 在CAM软件中,这二种格式都有支援,这二种格式的最大分别,在于RS-274X 内
    发表于 03-09 11:52 7341次阅读
    RS274D与RS274X 的<b class='flag-5'>差异性</b>比较

    考虑季节差异性的不同时间尺度含风电系统旋转备用优化研究

    考虑季节差异性的不同时间尺度含风电系统旋转备用优化研究_温步瀛
    发表于 01-04 16:32 0次下载

    测试软件及测试终端差异性研究分析

    ,Probe软件在不同终端下的测试指标相差不大;CDS在不同终端条件下的测试结果差异性很大,对测试终端要求较高。ATU和Probe相比较,相同条件下ATU测试指标差于Probe测试指标。
    的头像 发表于 02-01 09:22 7139次阅读
    测试软件及测试终端<b class='flag-5'>差异性</b>研究分析

    SMR和ZNS两种技术差异,你不能不知道

    分析对比一下SMR和ZNS这两种技术的差异性
    的头像 发表于 06-25 10:32 5027次阅读
    SMR和ZNS两种技术<b class='flag-5'>差异</b>,你不能不知道

    电流法的测试结果差异性影响分析

    原文标题:【赛盛技术案例分享】测试布置与分布参数对辐射发射及电流法的测试结果差异性影响分析 文章出处:【信公众号:深圳市赛盛技术有限公司】欢迎添加关注!文章转载请注明出处。 责任编辑:haq
    的头像 发表于 09-28 15:17 2093次阅读
    电流法的测试结果<b class='flag-5'>差异性</b>影响分析

    工业以太网交换机存在有哪些差异性

    通过之前对工业交换机的认知,我们了解到工业以太网交换机采用存储转换的交换方式,同时提高了以太网通信速度,并且内置智能报警设计监控网络运行状况,使得在恶劣危险的工业环境中保证以太网可靠稳定的运行。那么,工业以太网交换机有哪些差异性呢?
    的头像 发表于 10-23 14:47 2306次阅读

    闲谈工业以太网交换机和家用交换机的差异性

    通过之前对工业交换机的认知,我们了解到工业以太网交换机采用存储转换的交换方式,同时提高了以太网通信速度,并且内置智能报警设计监控网络运行状况,使得在恶劣危险的工业环境中保证以太网可靠稳定的运行。那么,工业以太网交换机有哪些差异性呢》接下来我们就跟随飞畅科技的小编一起来看看吧!
    发表于 10-27 11:37 1553次阅读

    基于差异性累积与子空间传播的法向估计算法

    以分割为基础的法向估计算法主要是通过法向的差异来构造点之间的相似性。针对由于距离属性的缺失使这类算法对于紧邻面及一些光滑曲面的估计结果并不理想的问题,提出基于差异性累积与子空间传播的法向估计
    发表于 04-21 11:13 1次下载
    基于<b class='flag-5'>差异性</b>累积与子空间传播的法向估计算法

    基于差异性代码克隆的代码块补全提示方法

    在软件编程中,通过代码补全提示可以提高编码效率,但目前缺乏有效的工具和手段从规模差异较大的相似代码中找到合适的候选代码。针对该问题,基于差异性代码克隆技术设计一种新的代码块补全提示方法。通过改进
    发表于 05-28 11:22 4次下载

    可编程IC的类型、主要功能、相似性和差异性

    电子发烧友网站提供《可编程IC的类型、主要功能、相似性和差异性.pdf》资料免费下载
    发表于 01-03 14:08 0次下载
    可编程IC的类型、主要功能、相似性和<b class='flag-5'>差异性</b>