[Kernel]微内核、单内核

一、从应用层面直观说明采用各种内核的系统

微内核:华为鸿蒙系统、Windows系统、塞班系统

单内核:Unix、Linux、FreeBSD、安卓系统

二、各自的特点

这里两种起始类似与RISC和CISC的比较,可以对比的看一下。

微内核

微内核是内核的一种精简模式,通常系统服务层是和内核集成在一起的,而微内核将系统服务层被分离出来,变成可以根据需求加入的选件,这样就可以提供更好的可扩展性和更加有效的应用环境。

微内核提供一组“最基本”的服务,如进程调度、进程间通信、存储管理、处理I/O设备。其他服务,如文件管理、网络支持等通过接口连到微内核。(采用IPC机制)

单内核

与微内核相反,单内核是集成的,比微内核更大。单内核是直接将整体作为一个单独的大过程进行实现,并同时运行在一个单独的地址空间。因此,这样的内核通常以单个静态二进制文件的形式存放于磁盘。所有内核服务都在这样的一个大内核空间中运行。内核之间的通信是微不足道的,因为大家都运行在内核态,并身处同一地址空间:内核可以直接调用函数,这与用户空间没有什么区别。这种模式的支持者认为单模块具有简单和高性能的特点。

三、Unix和Linux内核

Linux是一个单内核,也就是说,Linux内核运行在单独的内核地址空间。不过,Linux汲取了微内核的精华:其引以为豪的是模块化设计、抢占式内核、支持内核线程以及动态装载内核模块的能力。不仅如此,Linux还避其微内核设计上性能损失的缺陷,让所有事情都运行在内核态,直接调用函数,无需消息传递。至今,Linux是模块化的、多线程的以及内核本身可调度的操作系统

Linux支持动态加载内核模块。尽管Linux内核也是单内核,可是允许在需要的时候动态地卸除和加载部分内核代码。
Linux支持对称多处理(SMP)机制,尽管许多Unix的变体也支持SMP,但传统的Unix并不支持这种机制。
Linux内核可以抢占(preemptive)。与传统的Unix不同,Linux内核具有允许在内核运行的任务优先执行的能力。在其他各种Unix产品中,只有Solaris和IRIX支持抢占,但是大多数传统的Unix内核不支持抢占。
Linux对线程支持的实现比较有意思:内核并不区分线程和其他的一般进程。对于内核来说,所有的进程都一样—只不过其中的一些共享资源而已。
Linux提供具有设备类的面向对象的设备模型、热插拔事件,以及用户空间的设备文件系统(sysfs)。
Linux忽略了一些被认为是设计得很拙劣的Unix特性,像STREAMS,它还忽略了那些实际上已经根本不会使用的过时标准。

四、Harmony OS内核

HarmonyOS 2是华为基于开源项目OpenHarmony 2.0开发的面向多种全场景智能设备的商用版本。Openharmony 和 HarmonyOS(鸿蒙操作系统) 是两个完全不同的概念。华为把 HarmonyOS 中基础功能提取出来,打包成功一个项目叫做“Openharmony” ,把 Openharmony 捐献给了原子开源基金会。而华为自己的商业版本HarmonyOS 2 并没有捐出,这个商业版本也是基于开源项目 OpenHarmony 2.0 开发的,兼容了 AOSP,增加了 HMS 。所以这里仅对OpenHarmony进行简单的介绍。

OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。OpenHarmony技术架构如下所示:

这里我们把目光聚焦于内核层和系统服务层,从前面微内核的特点与OpenHarmony架构的展示不难看出,OpenHarmony是一种微内核。下面对内核层和系统服务层进行介绍。其他部分可以查看官方开源介绍:https://gitee.com/openharmony?utm_source=alading&utm_campaign=repo

内核层

  • 内核子系统:采用多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
如何理解KAL,个人认为可以参考HAL进行解释
HAL是硬件抽象层,介于Android内核和上层之间抽象出来的一层结构,是对linux驱动的一个封装,对上层提供统一接口,上层应用不必知道下层硬件的具体实现,屏蔽了底层的实现细节。

https://blog.csdn.net/FZeroTHero/article/details/88673860

  • 驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

系统服务层

系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:

  • 系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。
分布式软总线
分布式软总线是多设备终端的统一基座,为设备间的无缝互联提供了统一的分布式通信能力,能够快速发现并连接设备,高效地传输任务和数据。分布式数据管理
分布式数据管理位于基于分布式软总线之上的能力,实现了应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件分布式任务调度
分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、绑定/解绑、以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况并结合用户的习惯和意图,选择最合适的设备运行分布式任务设备虚拟化
分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,将周边设备作为手机能力的延伸,共同形成一个超级虚拟终端。
  • 基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。
  • 增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
  • 硬件服务子系统集:提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

[Kernel]微内核、单内核相关推荐

  1. linux系统微内核,微内核操作系统的定义及用微内核设计的系统,附Linux是单内核结构介绍...

    本文为你介绍微内核操作系统的定义,及其采用微内核设计的操作系统都有哪些?同时附有 Linux 是一个单内核结构的介绍,不过 Linux 还吸收了微内核的优点,所以系统表现相当的出色.微内核如今非常受关 ...

  2. 操作系统单内核和微内核的区别

    单内核 单内核就是从整体上把内核作为一个大过程来实现,同时也运行在一个单独的地址空间上.因此单内核通常以单个静态二进制文件的形式存放于磁盘中.而进程管理.内存管理等是其中的一个个模块,所有内核模块都在 ...

  3. 微内核相对于单内核优势之我见

    我认为微内核相对于单内核上没有明显的技术优势,微内核一般都宣称有如下的技术优势: 1. 各服务可以动态加载插入,使内核很小,减少内存. 2. 系统非常灵活.当运行一个应用程序时,只需把选定的系统服务加 ...

  4. 单内核与微内核的比较

    操作系统内核分为单内核.微内核.外内核(科研中). 单内核 所谓的单内核就是把它从整体上作为一个单独的大过程来实现,同时也运行在一个单独的地址空间上.因此单内核通常以单个静态二进制文件的形式存放于磁盘 ...

  5. LINUX内核杂记(1)-处理器与单内核

    一.处理器在任何时间点的活动可分为以下三类: 1.运行于用户空间,执行用户进程 2.运行于内核空间,处于进程上下文,代表某个 特定的进程执行 3.运行于内核空间,处于中断上下文,与任何进程无关,处理某 ...

  6. Linux kernel 3.10内核源码分析--进程上下文切换

    一.疑问 进程调度时,当被选中的next进程不是current进程时,需要进行上下文切换. 进行上下文切换时,有一些问题不太容易理解,比如: 1.进程上下文切换必然发生在内核态吗? 2.上下文切换后原 ...

  7. Linux内核的l2tp实现,Linux Kernel gdth实现内核内存破坏漏洞

    Linux Kernel gdth实现内核内存破坏漏洞 发布日期:2010-11-04 更新日期:2010-11-16 受影响系统: Linux kernel 2.6.x 描述: ---------- ...

  8. 5.4. Interaction Between Devices and Kernel 设备与内核的交互

    目录:http://www.cnblogs.com/WuCountry/archive/2008/11/15/1333960.html   [不提供插图,读者最好从网上下载源书]      5.4. ...

  9. linux最新内核4.19,Linux Kernel 4.19内核为长期支持版本,有诸多新功能及改进

    Linux Kernel开发者与维护总负责人Greg Kroah-Hartman宣布Linux Kernel 4.19内核将是长期支持版本,即用户使用该内核可得到长期的补丁支持,包括修复重要的漏洞.目 ...

最新文章

  1. win10 中redis client提示 ERR Client sent AUTH,but no password is set
  2. [转]FINDSTR正则表达式小结
  3. 动态代理(JDK的动态代理)
  4. 严重推荐文献管理软件 Mendeley
  5. 三、在应用中升级----网络编程部分
  6. php-fpm启动后没有监听端口9000
  7. 表格合并行_合并行table表格
  8. COJ1196(Staginner 去爬山)
  9. 没有bug队——加贝——Python 练习实例 13,14
  10. 大型翻车现场?人人车官博辟谣破产传闻 却被群嘲官博怕是还蒙在鼓里
  11. VS Code 调试ROS节点
  12. Ps 初学者教程,如何添加选择、减去选择和进行交叉选择?
  13. word根据数字符号自动回车
  14. 简单书籍类网页代码制作
  15. Python自学笔记11:实操案例八(咖啡馆、2019中超联赛前五,模拟手机通讯录)
  16. 计算机程序ppt,计算机和计算机程序.ppt
  17. 目标检测随笔1——目标检测简要综述
  18. linux串口驱动安装 RPM,Devart数据库工具【教程】:在Linux(DEB / RPM)上安装和配置ODBC驱动程序...
  19. 魔兽世界联盟物价稳定的服务器,魔兽世界怀旧服NAXX物价惊到隔壁玩家:堕落的灰烬使者210W...
  20. 那些年啊,那些事——一个程序员的奋斗史 ——53

热门文章

  1. Python Flask Web教程014:Flask 消息闪现
  2. 图标设计-CSDN就业班-专题视频课程
  3. java毕业设计物流信息管理系统录像演示源码+lw文档+mybatis+系统+mysql数据库+调试
  4. Hbuilder打包web项目为app时,下载文件失效,下载出现问题解决
  5. Python入门简单概念讲解及其小案例
  6. 无门槛计算机岗位,没岗位?竞争大?这五个被偏爱的专业极容易入编,快来康康...
  7. 《项目管理之美》第1章
  8. 正交实验测试用例利器——pict
  9. android请求连接wifi之后验证密码是否正确的方法
  10. java多线程异步调用别的系统接口代码_抢先准备,40个 Java 多线程面试题及答案大汇总!...