嵌入式系统QNX概述-微内核架构进程管理安全性

2023-05-16

一.微内核架构

在这里插入图片描述

  • QNX操作系统由微内核以及一组协作的系统服务进程组成
  • 服务进程与操作系统内核是相互隔离开的,当服务进程出问题时并不会影响内核
  • 微内核提供软件总线供各个软件模块进行通信和协作
  • 内核只提供最小化的基础/公共服务
  • 高度模块化设计带来良好的系统隔离性,为微内核的可靠性提供了保障

在这里插入图片描述

  • 进程间通信是QNX内核提供的核心功能
  • 用户可以通过开发定制化的应用程序来增强系统功能
  • 用户程序与系统程序通过进程间通信进行协作构成一个有机的整体
  • 操作系统以一种扁平化的结构组织
  • 操作系统通过路径管理器等系统服务支持用户的服务的动态加入

在这里插入图片描述

微内核架构的 trade off

  • Benefits

    1. resilience and reliability 弹性和可靠性

    2. ease of configuration and reconfiguration 易于配置

    3. ease of debugging development 易于调试开发

    4. Scalability 可扩展性

  • Cost: System overhead

    1. More context switches 更多上下文切换
    2. More copies of data 更多数据拷贝

二.进程管理

在这里插入图片描述

  • 进程管理器和内核共同组成了procnto,与内核共享同一个地址空间
  • 负责进程管理,创建和结束
  • 负责内存保护,地址空间管理
  • 负责路径名字管理pathname management
  • 以及一些基础的资源管理器

三.资源管理器

在这里插入图片描述

  • io func layer,提供了所有POSIX对文件可以进行的io操作;
  • res mgr layer,提供了登记路径名,接收数据并分发给io func执行具体操作;
  • dispatch layer,识别不同的输入信息,然后转给不同的处理函数进行处理;
  • thread pool layer,提供了一个线程池管理,可以配置实现多个线程进行资源管理。

四.线程调度-线程状态

在这里插入图片描述

调度示例

在这里插入图片描述

  • 线程优先级从低到高0(idel)->255
  • 内核总是选择从ready状态任务队列中优先级最高的线程抢占CPU运行

五.Security-概述

在这里插入图片描述

  • 系统安全源于系统设计;
  • 系统架构也主要决定了系统的安全性;
  • 系统安全以类似洋葱的形式立体构建,层层防护。

六.Security-Filesystem Security

文件系统完整性怎么保证?

QNX Trusted Disk,可信文件系统,只读文件系统,其会对文件的完整性进行校验,通过该文件系统可以扩展secure boot 的过程。一般在其中存储基础的系统服务,关键应用服务,以及一些固定的配置文件。

在这里插入图片描述

七.Security Boot概述

  • 安全启动基于信任链
  • 信任根 Root of trust:基于芯片级不可算改的Boot ROM和OTP
  • 整个启动过程通过上一级对下一级逐级进行完整性和合法性的校验
  • Bootloader阶段一般依赖于芯片公司的解決方案
  • QNX IFS之后的文件系统使用QNX的解决方案
  • 校验过程一般是先对目标内容先进行hash,然后再对hash进行验签

在这里插入图片描述

八.Security Policy MAC

在这里插入图片描述

在这里插入图片描述

九.Security-Pathtrust

怎么阻止非信任的程序执行呢?

  • Pathtrust可以管理程序执行;

  • Pathtrust可以管理动态库的加载dlopen;

  • 怎么使能Pathtrust:

    • procnto启动时带参数-qt以使能该功能;

    • Devb-*块设备驱动需要具备PROCMGR_AID_PATH_TRUST的能力;

    • 文件系统挂载需要是具备完整性保护的,如QTD;

  • 选择信任程序策略:

    • 开发的私有程序或者QNX等受信任供应商的程序;
    • 第三方程序无特别理由就设置成非可行程序;
    • 可信和不可信程序最好分开存储在不同的文件系统,以便做区分;
    • 脚本解析器推荐是非可信程序。

在这里插入图片描述

十.Security-DOS & APS

嵌入式的拒绝访问攻击怎么应对?

  • 当一个恶意程序以高优先级运行可能会把整个系统的CPU资源耗尽,导致其他较低优先级的任务无法及时的执行;
  • 通过使能自适应分区调度后,可以将系统分成不同的区,如把第三方的程序分在一个单独的调度分区中并限定一个合理的资源,这样即使有异常实施DOS攻击也不会影响到其他分区中的任务正常执行。

在这里插入图片描述

十一.Security-Access Control DAC

  • 指定服务单独的用户ID和组ID:

    • 通过用户ID和组ID能方便的配置不同服务对不同资源的访问权限;

    • 将各个服务以非root进行启动;

  • 在POSIX权限的基础上可以进一步调节访问权限;

  • 只有root程序能使用该功能。

在这里插入图片描述

十二.Security-程序加固方案

怎么让开发的程序不被病毒感染?

  • 该类保护比较倾向于是在程序编译阶段,做编译参数的加固以提升程序的安全性;
  • Stack protection 堆栈保护;
  • RELRO(Relocation Read-Only)保护动态库加载的全局符号表GOT;
  • ASLR(Address Space Layout Randomization)随机地址布局;
  • Memory allocation check 检测内存申请和释放,如重复释放
  • Fortified System Functions强化系统功能,检査内存越界访问
  • Compiler defenses其他的编译器防御参数,如-fPIC
  • 随机数使用,建议使用 QNX randon服务而非ibc的接口
  • 使用命令 qchecksec来检查程序的安全加固状态
  • Resource manager加固,启动权限,消息检测和权限检测

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式系统QNX概述-微内核架构进程管理安全性 的相关文章

  • Games101 VS2022 C++ auto推断不出变量类型

    在写Games101 Homework2的时候 xff0c 下面这句的 auto推断不出3个变量的类型 span class token comment If so use the following code to get the int
  • 密度聚类:OPTICS算法详解

    很多人不理解OPTICS算法绘出的图该怎么理解 为什么波谷就算一类 xff0c 有个波峰又算另一类了 xff0c 本篇在第三部分的第2 3节详细讲这个是什么判别分类的 本篇会添加一些个人思考过程 xff0c 可能有不严谨的地方 xff0c
  • 密度聚类:OPTICS算法简单易懂版

    前几天写了一篇详解版 xff0c 感觉可能太详细了阅读量不高 xff0c 所以修改精简成这篇 很多人不理解OPTICS算法绘出的图该怎么理解 为什么波谷就算一类 xff0c 有个波峰又算另一类了 xff0c 本篇在第三部分的第2 3节详细讲
  • 跟着LearnOpenGL文档做的纹理显示不出来,但也不报错

    跟着LearnOpenGL文档入门章的纹理一节 xff0c 把源代码复制下载都运行不了 xff0c 有这么3条要注意的点 一 下载完stb image h xff0c 引用时要加上 define STB IMAGE IMPLEMENTATI
  • 【C++】一文搞懂C++中的std::是什么

    1 C 43 43 中的std 是什么 xff1f std 是个名称空间标示符 xff0c C 43 43 标准库中的函数或者对象都是在命名空间std中定义的 xff0c 所以我们要使用标准函数库中的函数或对象都要使用std来限定 标准库在
  • 详解GMM高斯混合模型EM模型

    一般讲到GMM就会讲到EM 我不过多的介绍EM算法 这里只是举一些例子来看看真实的GMM怎么用EM算的 一 GMM的作用 记住GMM的作用 xff0c 就是聚类 xff01 二 GMM有hard和soft两种 hard GMM和soft G
  • MiniAlphaGo黑白棋 蒙特卡洛搜索

    做个笔记 一 蒙特卡洛在黑白棋的应用 输入 xff1a 棋盘 x1d44f x1d45c x1d44e x1d45f x1d451 当前执子方 x1d450 x1d45c x1d459 x1d45c x1d45f 搜索时间 x1d461 x
  • 基于LLVM的C编译器--lcc——以CLion用SSH连接WSL Ubuntu22.04为例

    Windows 10 22H2CLion 2022 3 1Ubuntu 20 04 xff08 Microsoft Store内的WSL发行版 xff09 一 下载WSL xff0c 换源 xff0c 切换到WSL2 1 1 保证windo
  • Windows有CUDA但是没有nvcc命令

    明明有CUDA xff0c 但是cmd中输入nvcc V无效 但是如果打开anaconda prompt xff0c 输入nvcc V就有效 这可能是因为直接用的pytorch官网命令conda下载安装的 xff0c 然后又没有把anaco
  • win下配置pytorch3d

    一 配置好的环境 xff1a py 3 9 43 pytorch 1 8 0 43 cuda 11 1 cudnn 8 0 43 pytorch3d 0 6 0 43 CUB 1 11 0 你可能觉得pytorch3d 0 6 0版本有点低
  • 【pytorch3d】running build_ext error: [WinError 2] 系统找不到指定的文件

    在win10上安装pytorch3d时 xff0c 遇到如下错误 xff1a running build ext error span class token punctuation span WinError span class tok
  • windows下安装jax

    一 首先下载jaxlib 需要去这个非官方网站去找到适合自己的版本 xff0c 下载到本地 然后使用对应的虚拟环境pip install 该文件名即可 二 然后下载对应的jax 一行命令即可 pip span class token fun
  • STM32 HAL库串口收发数据

    STM32 HAL库串口收发数据 许多传感器的使用方法是 xff1a 单片机给传感器发送一帧数据 xff0c 然后传感器返回单片机一帧有用数据 xff0c 所以串口的收发功能十分重要 STM32cubeMX的配置 时钟和下载方式就不讲了 串
  • W7,显卡型号nvidia geforce 840M,安装tensorflow-gpu

    记录一下 xff0c 以防忘记 1 首先我拿驱动精灵把显卡驱动升到最新 xff0c 然后在NVIDIA 控制面板里查看支持CUDA9 1 xff0c 但是我下载了CUDA9 0 43 cudnn7 0 xff0c 先不用安装 注意 xff0
  • IP和MAC的作用

    IP地址的作用以及MAC地址的作用 MAC地址是一个硬件地址 xff0c 用来定义网络设备的位置 xff0c 主要是数据链路层负责 IP地址是IP协议提供的统一的地址格式 xff0c 为互联网上的每一个网络和每一台主机分配一个逻辑地址 xf
  • SPI简介

    SPI全称是Serial Perripheral Interface xff0c 也就是串行外围设备接口 SPI是Motorola公司推出的一种同步串行接口技术 xff0c 是一种高速 xff0c 全双工的同步通信总线 SPI时钟频率相比I
  • npm 错误码 EMISSINGARG

    EMISSINGARG Error npm ERR node v6 6 0 npm ERR npm v3 10 3 npm ERR code EMISSINGARG npm ERR typeerror Error Missing requi
  • axios.response返回数据格式

    axios response接口中存储的是如下内容 xff1a 96 data 96 是服务器的提供的回复 xff08 相对于请求 xff09 data 96 status 96 是服务器返回的http状态码 status 200 96 s
  • flask实现下载文件、前后端

    采用前后端分离的过程中 xff0c 前端只能下载静态文件中的文件或者url下载文件 但是 xff0c 一般情况下文件要么是远程或者存在于其他文件夹 这种情况就需要采用后端预先下载文件 xff0c 传递给前端 flask有几种文件传输方式 x
  • python+flask 简单并发,使用gevent库

    pip install geventfrom gevent wsgi import WSGIServer 关键这个WSGIServer 127 0 0 1 5000 app serve forever

随机推荐

  • java中Array.remove()方法,源码中不对负索引进行检查

    public E remove int index 检查remove源码是 xff0c 发现 其中对index 的检查仅限于上溢出检查 没有显示的对下溢出进行检查 xff1f rangeCheck index modCount 43 43
  • java- 类名.this.成员 和 this.成员 的区别

    this 成员 xff1a this用于本类中 xff0c 自身的引用 xff0c 调用自身对象属性 类名 this 成员 用于内部内 xff0c 调用外部类的成员 用 外部类 this 表示外部类的引用 xff0c 用以 和 自身类进行区
  • java异常 Exception in thread “main“ java.lang.IllegalArgumentException: Comparison method violates its

    Exception in thread 34 main 34 java lang IllegalArgumentException Comparison method violates its general contract at jav
  • 速查matplotlib-python中画图曲线的形状和颜色

    速查matplotlib python中画图曲线的形状和颜色 在属性值先写颜色 xff0c 后写形状如 xff1a r 红色曲线 b 蓝色短横线 等 字符描述 39 39 实线样式 39 39 短横线样式 39 39 点划线样式 39 39
  • python-pyplot直方图,标注直方图数据

    话不多说 由于自己一直忘记直方图的一些细节 xff0c 经常不用 xff0c 老得百度 xff0c 干脆自己记下来好了 这是直方图的写法与标注直方图的数据写法 如下 from matplotlib import pyplot as plt
  • 从零开始学JetsonTX2----can bus开发

    step by step implementation 搞硬件开发 xff0c 先把技术手册搞到手 这个网页把几乎Jetson tx2的开发资料都汇总了一下 找教程开始配置can所需要系统环境 NIVIDA社区的教程 xff1a https
  • CAN总线详解

    目录 CAN 协议简介1 xff0c 何为CAN 1 1 CAN的应用实例1 2 总线拓扑图1 3 CAN的特点 2 xff0c CAN 电气属性3 xff0c CAN 协议3 1 数据帧3 2 遥控帧3 3 错误帧3 4 过载帧3 5 间
  • 内存对齐规则总结

    由于某些硬件平台不能任意访问地址数据 xff0c 只能在某些地址处取某些特定类型的数据 xff1b 并且处理器访问未对齐的内存时 xff0c 需要多次读取并对多余数据进行剔除 xff0c 相较于对齐内存访问 xff0c 耗费了更多的时间 x
  • 一些常用库的使用(CMAKE部分)

    opencv span class token function find package span span class token punctuation span OpenCV span class token number 3 1
  • 将RTKLIB编译成静态库

    rtklib编译 在写自己的程序时 xff0c 想要调用rtklib h xff0c 和它的一些文件来进行运行 xff0c 想要将rtklib编译成静态库安装在系统的目录下 xff0c 这样基于rtklib的二次开发就不用再使用源码了 xf
  • TIM_SetCompare2()

    对于 void TIM SetCompare2 TIM TypeDef TIMx uint16 t Compare2 的理解 void TIM SetCompare2 TIM TypeDef TIMx uint16 t Compare2 C
  • C语言语句YPR[0]=(BUF[1]<<8|BUF[2]),以及 >> 8 &0xFF如何理解?

    C语言语句 YPR 0 61 BUF 1 lt lt 8 BUF 2 如何理解 这是一个赋值语句 xff0c 把等式右边的值赋给左边 xff1b 先来看右边是怎么运算的 xff0c 由于移位运算符 lt lt 的优先级大于位运算符 xff0
  • word文档编辑时字体突然发生变化解决方法

    word文档在编辑时字体突然发生变化 xff0c 第1步 点击 开始 xff0c 图片中右下角 箭头 第2步 选择需要的字体 xff0c 第3步 设置默认字体 xff0c 确定
  • AD(Altium Designer)如何铺铜

    在PCB PcbDoc文件中 xff1a 在软件下方选择 34 Top Layer 顶层 34 xff08 1 xff09 执行 34 放置 34 gt 铺铜 xff1b 或者快捷键 34 PG 34 会弹出 34 Properties 属
  • 嵌入式硬件-读懂原理图

    学习硬件的第一节课 学习读懂原理图 读懂原理图对嵌入式软件工程师和程序员尤为重要 在深入细节之前请注意 对所有的嵌入式设计人员来说 能懂得硬件工程师创建和使用的来描述其硬件设计的原理图和符号是非常重要的 无论硬件设计得多么复杂 不管有多少设
  • 校招行测笔试-图形推理

    校招行测笔试 图形推理 面对校招笔试的行政能力测试 xff08 简称 行测 xff09 环节 xff0c 刚开始接触有些束手无策 摸不到头脑 xff0c 其实是有技可循的 xff0c 本文就帮助大家总结一下行测的相关技巧 如果对你有所帮助
  • 统一建模语言UML详解附思维导图

    UML图 概述 构成 事物 Things xff1a UML模型中最基本的构成元素 xff0c 是具有代表性的成分的抽象 构件事物 xff1a UML模型的静态部分 xff0c 描述概念或物理元素 类 xff1a 具有相同属性相同操作 相同
  • 比特率与波特率

    比特率 xff1a 单位 Bps bit per second xff0c 即每秒传输的 bit 数 波特率 xff1a 单位 Baud xff0c 即每秒传输的 码元 数 这里涉及到码元 码元 xff1a 持续一段固定时间的通信信道有效状
  • 嵌入式相关开源项目、库、资料------持续更新中

    学习初期最难找的就是找学习资料了 xff0c 本贴精心汇总了一些嵌入式相关资源 xff0c 包括但不限于编程语言 单片机 开源项目 物联网 操作系统 Linux 计算机等资源 xff0c 并且在不断地更新中 xff0c 致力于打造全网最全的
  • 嵌入式系统QNX概述-微内核架构进程管理安全性

    一 微内核架构 QNX操作系统由微内核以及一组协作的系统服务进程组成服务进程与操作系统内核是相互隔离开的 当服务进程出问题时并不会影响内核微内核提供软件总线供各个软件模块进行通信和协作内核只提供最小化的基础 公共服务高度模块化设计带来良好的