微内核架构

news2024/9/24 3:19:46

QNX微内核架构

设计原则

最小化内核功能

在这里插入图片描述

将操作系统功能移到用户态,成为Server“服务”。在用户模块之间,通过消息传递机制通信。
在这里插入图片描述
在宏内核中,文件系统和磁盘驱动都是运行在内核态,应用通过内核调用文件系统,文件系统直接通过函数调用磁盘驱动在磁盘创建文件,再依次返回。而在微内核中,文件系统和磁盘驱动都是运行在用户态的,这样,就需要从应用通过微内核调用文件系统,文件系统再通过微内核调用磁盘驱动,磁盘驱动在磁盘空间创建文件,再原路返回到应用。

什么是宏内核

整个操作系统分为内核和应用两层

  1. 内核:运行在特权级,集中控制所有的系统资源
  2. 应用:运行在非特权级,受内核管理,使用内核服务
    在这里插入图片描述

优点

  1. 性能好、耦合性高。
  2. 宏内核拥有丰富的沉淀和积累。

缺点

  1. 安全性和可靠性问题:模块之间没有很强的隔离机制,某个模块驱动的crash,容易造成这个系统的crash
  2. 代码庞大,耦合性过高,维护困难

QNX微内核

在这里插入图片描述
在这里插入图片描述

QNX操作系统由微内核和系统服务组成,相互隔离,一个服务进程的崩溃不会影响到其他服务进程和内核的运行,微内核提供了一条软件总线(software bus)供各个软件模块的服务进程进行相互通信和协作,它的内核只提供最小化的基础/公共的系统服务,是一个高度模块化,高聚合低耦合的系统。
进程间的通信是它的主要功能,用户通过开发定制化的应用程序来增加系统功能,用户程序和系统程序通过进程间的通信(IPC)进行协作构成一个整体,操作系统通过路径管理器等系统服务实现用户程序的动态加入。

优点

  1. 微内核的弹性和可靠性更高,因为服务进程的相互隔离独立在kernel之外,一个进程挂掉之后,kernel并不会挂,其他进程也不会受影响。
  2. 灵活性和可移植性更强,比如有一个模块不想要了,或者加一个模块,都不用重新编译内核只需要不配置该服务即可
  3. 实时性强,这也是大内核不能做实时性内核的原因,大内核中临界资源太多,保护临界资源的过程中就需要关闭中断,关掉中断操作影响整个内核的调度。关中断时间越久,实时性越差。

缺点

  1. 系统开销大,因为通过进程通信的方式交换数据或者调用系统服务,而不是使用系统调用,造成额外的操作系统开销,同时降低性能。
  2. 生态欠缺,尚未形成像Linux一样具有广泛开发者的社区。
    在这里插入图片描述

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

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

相关文章

Ubuntu搭建博客typecho

提示 见过这样类型的blog吧,现在就是最详细的搭建过程。 第一步 搭建apache2环境 安装命令 sudo apt -y install apache2 apache2-utils访问项目地址: /var/www/html配置文件在: /etc/apache2/日志在: /var/log/apache2/ 修改配置文件 vim…

如何在项目中正确使用异常?

文章目录异常系列文章一、异常介绍二、异常体系三、异常处理机制四、异常处理五、异常调用链异常系列文章 如何在项目中正确使用异常?如何优雅的设计Java异常Java统一异常处理–实战篇Java 异常处理的误区和经验总结你要的Java常见异常都在这里Java中异常抛出后代码…

SpringBoot后端接口请求参数映射方式详解

在SpringBoot项目中,前端HTTP请求中的参数如何映射到Controller层的接口方法中的参数?这里针对各种方式做一个测试与总结。 1:QueryString方式 QueryString参数传递的方式为,在请求URL中直接拼接请求参数如:URL?para…

Java实现调用ChatGPT详解

Java调用ChatGPT的小插件1. 申请ChatGPT账号2. 配置阶段2.1 依赖引入2.2 配置application.yml文件2.3 EnableChatGPT注解3. 使用4. 测试1. 申请ChatGPT账号 CSDN上面有很多申请ChatGPT账号的教程,可以直接搜索chatgpt账号注册,然后按照高赞的几个回答注…

谷粒商城--SPU和SKU

目录 1.SPU和SKU概念 2.表的关系理解 3.导入前端代码 4.完善后端接口 5.属性分组详情 6.规格参数详情 7. 销售属性详情 8.分组与属性关联 9.发布商品 10.仓库服务 1.SPU和SKU概念 SPU:standard product unit(标准化产品单元):是商品信息聚合的…

链表OJ(一)

目录 从尾到头打印链表_牛客题霸_牛客网 160. 相交链表 141. 环形链表 142. 环形链表 II 138. 复制带随机指针的链表 从尾到头打印链表_牛客题霸_牛客网 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。 如输入…

Three.js中的3D文字效果

对于一些设计网页中经常会出现一些3D的文字效果,本文将利用Three.js实现各种动画WebGL文本输入效果。 示例效果 原文章 文本采样 通常情况下,文本网格是2D的平面形状,我们所要实现的3D文本形状则是要在2D的平面下,再生成z值形成…

Oracle数据库启停命令

在日常工作中,关于数据库的启停:   先关闭上层应用服务 --> 关闭监听 --> 关闭数据库;   启动数据库 --> 启动监听 --> 启动应用(Oracle SQL Developer)。 监听lsnrctl Oracle监听命令。 lsnrctl start [listener-name]&a…

Xml格式化与高亮显示

具体请参考:Xml格式化与高亮显示

分布式系统的数据一致性方案

1、在出现一致性问题时如果系统的并发或不一致情况较少,可以先使用重试来解决 a、同步重试 b、异步重试 c、入库,定时任务重试 2、分布式事务 基于数据库 XA 协议的 2PC、3PC,基于业务层的TCC,基于消息队列消息表的最终一致性方案&#xff0…

七大设计原则之接口隔离原则应用

目录1 接口隔离原则介绍2 接口隔离原则应用1 接口隔离原则介绍 接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时…

八、Git远程仓库操作——跨团队成员的协作

前言 前面一篇博文介绍了git团队成员之间的协作,现在在介绍下如果是跨团队成员的话,如何协作? 跨团队成员协作,其实就是你不属于那个项目的成员,你没有权限向那个仓库提交代码。但是github还有另一种 pull request&a…

图形化深度学习开发平台PaddleStudio(代码开源)

目录一、PaddleStudio概述二、环境准备2.1 安装PaddlePaddle2.2 安装依赖库三、基本使用介绍3.1 启动3.2 快速体验3.2.1 下载示例项目3.2.2 训练3.2.3 评估3.2.4 测试3.2.5 静态图导出四、数据集格式4.1 图像分类4.2 目标检测4.3 语义分割4.4 实例分割五、趣味项目实战&#xf…

【前端笔试题二】从一个指定数组中,每次随机取一个数,且不能与上次取数相同,即避免相邻取数重复

前言 本篇文章记录下我在笔试过程中遇到的真实题目,供大家参考。 1、题目 系统给定一个数组,需要我们编写一个函数,该函数每次调用,随机从该数组中获取一个数,且不能与上一次的取数相同。 2、思路解析 数组已经有了…

Java编译过程、JIT编译详解、类加载过程

文章目录Java编译执行过程类加载过程即时编译JITJIT编译优化中的常见技术方法内联逃逸分析 栈上分配 锁消除小总结Java编译执行过程 提到编译,可能大多数人想到的就是将**.java编译成***.class文件,但其实Java代码的编译执行是一个非常复杂的过程,将**.java编译成**.class…

Lesson1:初识编程语言、Python环境搭建

一、什么是编程语言 用来和计算机交流,控制计算机,让计算机按照我们的要求做事情,这样的语言叫做编程语言。 Note:编程语言四个字可以拆成两个部分进行理解——编程语言。 所谓语言,它的作用就是交流,向对…

Redis实战—黑马点评(一) 登录篇

Redis实战 — 黑马点评(一) 登录篇 来自黑马的redis课程的笔记 【黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目】 目录Redis实战 — 黑马点评(一) 登录篇1. 项目…

深度学习笔记:使用随机梯度下降法识别mnist数据集

深度学习算法实现流程: 1 从训练数据中随机选出一部分数据,称为mini-batch。我们的目标为减小mini-batch损失函数的值 2 计算损失函数关于权重的梯度。梯度方向即为损失函数值减小最快的方向 3 将权重沿梯度下降方向更新 4 重复以上步骤,在…

【自动驾驶汽车技术 | 车载雷达系统】

本文编辑:调皮哥的小助理 1、摘要 自动驾驶汽车传感器系统一般包括4种雷达:激光雷达(Lidar)、毫米波雷达(mmWave Radar)、超声波雷达(Ultrasonic Radar)和红外雷达(Infrared Radar)。目前激光雷达和毫米波雷达是基本和必要的车载传感器设备,…

I.MX6ULL内核开发8:linux设备驱动模型

目录 一、为什么需要设备驱动模型 二、sysfs概述 驱动模型一 驱动模型二 kobject kset kobj_type 一、为什么需要设备驱动模型 早期内核(2.4之前)没有统一的设备驱动模型,但是照样可以使用(之前的led字符设备驱动&#xff…