微内核和宏内核以及混合内核

2023-05-16

操作系统内核的几个重要的特点:

  1. 内核是操作系统的核心部分,它管理着系统的各种资源
  2. 内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体
  3. 在一些简单的硬件设备上可以没有内核或操作系统而直接运行程序,比方单片机等。这些设备通常只是用于特定的场合,也通常功能比较单一。而对于一般计算机来说操作系统是必不可少的。对不同的操作系统,其内核实现也是有所区别的。
  4. 目前从内核架构来划分,可分为微内核(Micro Kernel)宏内核(Monolithic Kernel),“宏内核”这个翻译其实不是很好,翻译成“单内核”事实上更好一点。
  5. 对于微内核,用户服务和内核服务分别运行在不同的地址空间中
  6. 对于宏内核不管是用户服务还是内核服务事实上都是内核在统一管理,它们是运行在同一地址空间中的

我们需要好好理解第6点,也就是用户服务和内核服务运行的地址空间的问题。

大家都知道Linux采用的是宏内核,但是它也区分内核空间和用户空间,那不是有歧义了吗?我们先看一张图。

 对于Linux来说,不管是应用还是内核都是由内存管理单元来做统一的内存管理的,用户空间的程序确实不能访问内核空间,但是对于内核来说,3GB-4GB的线性地址空间对整个内核都是共用的,同时内核中的VFS、System Call等模块被划分到内核中,它们之间的地址空间是相同的,这里的用户服务按照我的理解就是这几个内核模块所需要的报备,如上图所示。

我们来列张表来对比一下微内核和宏内核的具体区别:

在技术路线方面,车用操作系统存在着宏内核、微内核和混合内核三条技术路线。

  • 宏内核优势是高性能,同时耦合度高,但是安全性与可扩展性不强。

目前常见的桌面系统(如Windows,MacOS,Linux 桌面发行版),服务器系统(如 Unix,Linux)和主流手机操作系统(Android,iOS)均是基于宏内核架构。

  • 微内核的优点是高安全、高可靠,但缺少生态,不满足高性能。
  • 混合内核是基于微内核路线进行的创新,把一部分跟性能相关的模块放到内核中通过内核的线程及服务解决高安全和高性能的问题。

中国电动汽车百人会专访丨走向开源,普华基础软件要与产业共创新一代车用操作系统_懂车帝

微内核定义:

内核管理着所有的系统资源,在微内核中用户服务和内核服务在不同的地址空间中实现

应用程序和硬件的通信中,内核进程和内存管理的极小的服务,而客户端程序和运行在用户空间的服务通过消息的传递来建立通信,它们之间不会有直接的交互,这样一来,微内核中的执行速度相对就比较慢了,这是微内核架构的一个缺点

在内核架构中,用户服务是独立于内核服务的,因此任何用户服务崩溃都不会影响到内核服务,这就加强了操作系统的健壮性,这是微内核的优势所在。

另一点,微内核的扩展性强,添加一个功能,只需要建立一个新的服务到用户空间当中,而内核空间不需要任何的修改。因此,微内核可移植性强、安全并且易于扩展。

宏内核定义:

宏内核同样管理着用户程序和硬件之间的系统资源,但是和微内核不一样的是:

在宏内核架构中,用户服务和内核服务在同一空间中实现。具体一点,就是内核可以代表内核进程运行代码,就是通常的内核进程;当用户进程经过系统调用或者中断进入到内核态时,内核也可以代表它运行代码。这样一来,宏内核需要管理的资源多于微内核,其大小就相对大一些了。

在宏内核架构当中,内核管理着CPU调度,内存管理,文件管理和系统调用等各模块的的工作,由于用户服务和内核服务被实现在同一空间中,这样在执行速度上要比微内核快。

然而,宏内核的劣势也是显而易见的,那就是当内核中的某个服务崩溃了,整个内核也会崩溃。另一点,想要在内核中添加新的功能就意味着内核中的各个模块需要做相应的修改,因此其扩展性弱

内存管理的区别:

宏内核在内核空间就实现了系统所有内存管理所需的一切业务:

  • 内存分配策略
  • 虚拟内存管理
  • 分页算法等

如下图所示:

 对于微内核的内存管理实现,有一个发展过程。

在第一代的微内核架构中,内核代理了用户空间的内存管理,控制着内存访问的权限,如下图所示。

 内核中的某个服务负责管理缺页异常并保存新分配的页,只要有缺页异常发生,请求就经过内核通知页管理器。页管理器必须进入特权模式下来获取内存的访问,然后回到用户模式下。然后发送一个返回结果来触发进程,当然这个过程也是需要经过内核的。处理缺页异常或者保存新分配页的整个过程是繁复而耗时的。

为了弥补性能上的损失,之后的微内核构架在内存管理上作了相应的改变

微内核每个进程有3个内存管理原语(Primitves):map、grant和flush

如果进程想要共享它的内存页那么它的可以通过map来映射内存页给其它进程。

当进程通过grant来让渡它的内存页给其它进程之后,该进程就丧失了这些内存页的访问权,直到让渡进程不再刷新它们。

如此一来,整个系统运行过程就成了这样:在系统启动时,内核将所有内存保存到一个叫做基本的系统进程 (basic system process) 当中,当然这个所谓有基本进程是运行在用户空间中的,如果其它进程需要内存,就是再需要从内核中获取,它可以直接向这个基本的系统进程索取。如下图所示。

其它模块的区别:

微内核和宏内核在设计上还存在一些其它的区别:

比方IO管理方面:

宏内核的设备驱动直接在内核中实现,硬件中断也直接在内核中处理;

在微内核中,内核是不直接处理IO中断管理的,来自硬件的请求将被重定向到用户服务中去,比方内核捕获了一个中断,那么内核发送给设备驱动服务就完事了,设备驱动服务会去处理这个中断。

总结:

微内核效率比宏内核慢,但在安全性、可靠性方面要比宏内核好,在扩展性方面微内核也有优势。

从内核构架发展趋势来说,将来或许会有比Linux更为强劲的基于微内核架构的OS出现,让我们拭目以待吧!

一文搞懂宏内核、微内核以及混合内核 - 知乎

 操作系统内核就是一个黑盒,用户不需要知道这个黑盒中是怎么实现,只需要使用该黑盒提供的服务就好了。

但要想学习操作系统,重中之重就是要去学习这个内核,知道这个内核中有什么,知道这个内核的结构是怎样的。

内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

从抽象的角度来看,内核其实就是计算机资源的管理者。计算机资源主要分为两大类

  • 硬件资源 CPU、存储器(内存、硬盘等)、总线、各种I/O设备(键盘、鼠标等)……
  • 软件资源 系统软件、应用软件

而内核作为计算机资源的管理者,它一般有着如下的功能:

  • 管理CPU,进程管理,决定哪个进程使用cpu,也就是进程调度
  • 管理内存,决定内存的分配与释放
  • 管理硬盘,即管理文件
  • 管理各种I/O 设备
  • 管理网络系统
    ……

内核决定着系统的性能和稳定性,是连接应用程序和硬件的桥梁。

那知道内核中有什么了,我们还得知道内核内部是如何去组织这些东西,让系统更加高效和稳定。这就引出了今天所要讲的内核的结构。

宏内核

宏内核简单理解其实就是把上面所有的功能都整合在一起。我们可以把进程管理、管理内存、管理硬盘、管理各种I/O设备……这些功能看作一个个模块。

在宏内核中,这些模块都是集成在一起的,运行在内核进程中,只有处于内核态下才能运行。

我们平常所使用的应用软件一般运行在用户态下,而运行操作系统程序,操作硬件则在内核态。
运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其 需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态(比如操作硬件)。

宏内核的结构图如下

内核层中的功能模块都是链接在一起的,并没有一定的层次关系。它们之间可直接通过方法调用进行交互。

那宏内核中是如何工作的呢?

假设现在有一个应用程序需要使用到内存分配的功能:

  1. 该应用程序会调用到系统提供的内存分配的接口(系统调用),此时CPU就会切换到内核态,并执行内存分配相关的代码。
  2. 内核里的内存管理代码按照特定的算法,分配一块内存。并将分配的内存块的首地址,返回给内存分配的接口函数。
  3. 当内存分配的接口函数返回时,此时CPU又会切换回用户态,应用程序会得到返回的内存块首地址,并开始使用该内存。

整个过程图如下:

宏内核结构的优点就是它的性能十分好,像Linux就是传统的宏内核结构。其性能极高,但其缺点也很明显,就是其耦合度高,一旦其中一个模块出现问题,其他所有的模块都可能会受到影响。

微内核

微内核则和宏内核结构相反,它提倡内核中的功能模块尽可能的少内核只提供最核心的功能,比如任务调度,中断处理等等其他实际的模块功能如进程管理、存储器管理、文件管理……这些则被移出内核,变成一个个服务进程,和用户进程同等级,只是它们是一种特殊的用户进程。

微内核的结构图如下

微内核中定义一种进程间通信的机制——消息

当应用程序请求相关服务时,会向微内核发送一条与此服务对应的消息,微内核再把这条消息发送给相关的服务进程(特殊的用户进程),接着服务进程会完成相关的服务。

那么微内核是如何工作的呢?

还是刚刚内存分配的例子:

  1. 应用程序发送内存分配的消息,这个发送消息的接口函数是由微内核提供的。
  2. 此时CPU切换到内核态,开始执行该函数的代码,微内核的代码会使当前进程停止运行,并将消息发送给内存管理的服务进程
  3. 内存管理服务进程收到该消息后,就会分配一块内存,并且也会通过消息的形式将分配的内存块的地址返回给内核。
  4. 微内核再将该消息返回给发送内存分配消息的应用程序。此时CPU切换到用户态,应用程序会得到返回的内存块首地址,并开始使用该内存。

对比宏内核中,微内核结构主要是多了接收和发送消息的这一过程,实际上也是系统调用,只是并不是直接调用内存管理的接口函数,因为微内核中内存管理功能模块已经不属于系统调用了。所以对比起宏内核,微内核结构的性能会差不少。

但微内核降低了耦合度,模块移除内核后后使得即使某一个模块出现问题,只要重启这个模块的进程即可,不会影响到其他模块,更加的稳定。并且微内核有相当好的伸缩性、扩展性,因为模块功能只是一个进程,可以随时增加或减少系统功能。

混合内核

宏内核和微内核各有优缺点,它们就如同两个极端。而将两者中和一下,就形成了混合内核。

混合内核的结构其实与微内核相似,但为了提高性能,混合内核中会将一些原本微内核中运行在用户层的功能模块放回内核中,而不常用的,或者需要的时间很长的功能模块还是放在用户层

当然这只是其中的一种情况,混合内核往往还会有其他形式,等下在拓展中会看到其他形式的混合内核。总而言之,混合内核就是结合了宏内核和微内核的特点,记住这点就好。

总结

宏内核其实就是把所有的功能都耦合起来,放在内核中,这样的优势就是性能极高,因为各个功能模块之间是可以直接调用的。

缺点就是因为各个模块是相互关联,容易出现一错皆错的问题。

微内核则恰恰相反,它为了降低耦合,内核中只会允许一些核心功能的存在,而其余所有功能都会被移出内核,变成一种特殊的用户进程——服务进程

其优点就是各个模块之间是独立的,不会相互影响,但其性能相比宏内核会大幅度下降。

混合内核则是结合上面二者的特点,它与微内核相似,只是会将一些功能模块又放回到内核中去,而不常用的功能模块还是放在用户层中。这样在微内核的基础上,又可以提高性能。

拓展

那现在用的最多的操作系统,Linux、Windows、Mac的内核结构是属于哪种呢?

Linux

Linux内核就是传统的宏内核结构,我们可以看下Linux内核的内部全景图

可以看到其内部是多模块耦合,其模块之间可以进行相互调用。所以这也是Linux的性能极高的原因。但可以看到图中各个模块的调用路劲从横交错,这就会出现一个地方出现问题,其他相关的地方可能都会出现问题,这是十分不安全的。

Windows

接下来是Windows的内核,Windows使用的是NT内核,来看下NT的内核结构图

我们主要看Kernel层,从下往上看

最下层是 硬件抽象层(HAL),HAL 层是帮助去适配各种不同的硬件平台;

在 HAL 层之上就是微软自己定义的小内核,也就是内核层中还包含着一个内核;

而在这个小内核之上就是各种执行体了,这些执行体提供了操作系统的文件系统缓存、对象管理、即插即用管理、虚拟内存、进程与线程、等服务。

每个执行体互相独立,只对外提供相应的接口,其它执行体要通过相应的接口才能和其它执行体通信或者请求其完成相应的功能服务。

这有点类似于微内核的结构,各模块功能能相互独立。但又不同于微内核,因为这些功能模块都是在内核层的。NT从设计架构上看应该属于微内核结构,HAL层之上的小内核属于微内核的核心,小内核之上的执行体属于内核级别的应用层。

NT从权限的角度看属于宏内核,内核模式之下功能完备,并不像微内核那样功能稀少。这种设计兼顾了结构清晰和性能良好两个优点。所以NT应该算是混合内核

Mac

MacOS使用的是Darwin-XNU内核,来看下其内核结构图

可以看到Darwin-XNU中有两个内核层,Mach层(微内核)和BSD层(宏内核)。

Mach内核提供简单的进程、线程、IPC 通信、虚拟内存设备驱动相关的功能服务

BSD则提供强大的安全特性,完善的网络服务,各种文件系统的支持,同时对Mach中的功能进行细化、扩展延伸。

Darwin-XNU 内核层也成为了多内核架构的代表。

那Darwin-XNU到底属于哪种内核结构呢?[1]https://zhuanlan.zhihu.com/p/394560786#ref_1

Mac OS X是基于NeXT公司1985年至1999年开发的NeXTSTEP系统开发的,NeXTSTEP是基于Mach的,虽然Mach一般认为是微内核架构,但NeXTSTEP的核心是基于自研XNU的Darwin系统,这是一种Hybrid kernel混合内核架构,它揉合了Mach和自研的设备驱动、输入输出等模块,即使只说这个Mach,也是卡内基梅隆大学基于BSD研发的包含了文件系统的宏内核版本。 所以说,当今苹果的iOS、macOS等操作系统都是起源于混合内核架构,不是微内核,也不是纯粹的宏内核。


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

微内核和宏内核以及混合内核 的相关文章

  • shell 脚本中的注释详解

    单行注释 xff1a 单行注释就比较简单了 xff0c 直接在行最前端加上符号 即可 具体用法如下所示 xff1a this is comment test echo 34 this is comment test 34 运行结果 xff1
  • 《演讲的本质》:如何做好一次公开演讲?

    关于本书 演讲的本质 是一本教你通过演讲最大化自己的影响力 建立信任关系的工具书 xff0c 探讨演讲的本质和价值 本书从视觉 听觉 语言三个角度来分析如何最大程度地打动听众 xff0c 并提供了行之有效的练习方法 核心内容 演讲的本质与价
  • ubuntu系统镜像下载源

    ubuntu 14 04 和16 04 快速下载 由于官网服务器在国外 xff0c 下载速度奇慢 xff0c 所以我们可以利用阿里云镜像下载ubuntu ubuntu 14 04 xff1a ubuntu releases 14 04安装包
  • 每天最重要的2小时

    关于作者 乔西 戴维斯 xff0c 他是哥伦比亚大学的心理学博士 xff0c 主要研究神经学领域 关于本书 从身体效能的角度 xff0c 让我们在面对一件事情时 xff0c 怎么才能把身体调整到一种巅峰状态 xff0c 进而对时间进行高效的
  • 【无标题】

    63张图 xff0c 一步一步带你弄清 Linux 虚拟内存管理 xff0c 厉害 内存管理子系统可谓是 Linux 内核众多子系统中最为复杂最为庞大的一个 xff0c 其中包含了众多繁杂的概念和原理 xff0c 通过内存管理这条主线我们把
  • 面试时不懂得自我介绍的人,最后都被PASS掉了

    做硬件维护的阿润最近后悔得直跳脚 在被公司赔偿清退后 xff0c 他直接开启了HIGH玩模式 xff0c 原计划先玩2个月再做面试准备 xff0c 结果冷不丁接到心仪公司的面试邀约 因为时间紧 邀约急 xff0c 在没做好充分准备的前提下
  • 开发板和电脑可以ping通但是ssh连接不上

    一 问题描述 某集群数据节点服务器频繁无法连接 xff0c 服务器间出现可ping通但ssh无法连接的情况 xff0c 使用带外地址登录后远程控制也无法显示正常界面 xff0c 重启后会短暂恢复 二 排查问题 重启服务器后检查服务器SSH状
  • 你对Linux下的实时性应该多点了解

    本文讲述一些有利于提高xenomai实时性的配置建议 xff0c 部分针对X86架构 xff0c 但它们的底层原理相通 xff0c 同样适用于其他CPU架构和系统 xff0c 希望对你有用 希望能够帮助大家 本文来自于微信公众号嵌入式Lin
  • 怎么保证ECU的“实时性”

    在最近一起有公开报道的辅助驾驶相关事故中 xff0c 由于AEB xff08 自动紧急制动系统 xff09 功能被怀疑没有起作用 xff0c 又有一家车企的高级辅助驾驶功能遭到质疑 其实 xff0c 目前大多数车辆中AEB功能的生效车速区间
  • 重磅成果丨ASAM SOVD 1.0.0正式发布

    重磅成果丨ASAM SOVD 1 0 0正式发布 测试行业动态 汽车测试网 编者寄语 xff1a 2022年6月底 xff0c ASAM SOVD 1 0 0版本正式发布 为了应对智能网联汽车时代井喷的软件诊断需求 xff0c SOVD如何
  • 2016-我在路上

    2016匆匆而过 xff0c 这一年做了很多 xff0c 也错过了很多 有些事情自己感觉很值得 xff0c 有些事情感觉很愧疚 xff0c 一年的酸甜苦辣尽在其中 寒假 xff0c 我加入的acm实验室 xff0c 有个集训 xff0c 但
  • 《复盘高手》

    今天为你介绍的是 复盘高手 xff0c 副标题是 自我认识与自我精进的底层逻辑 复盘 本是围棋的一个术语 xff0c 说的是下完一盘棋后 xff0c 棋手在棋盘上把下棋的过程复现一遍 xff0c 看看哪些地方下得好 xff0c 哪些地方不好
  • Linux 进程间通信(六)共享内存

    可以说 xff0c 共享内存是一种最为高效的进程间通信方式 xff0c 因为进程可以直接读写内存 xff0c 不需要任何数据的复制 为了在多个进程间交换信息 xff0c 内核专门留出了一块内存区 xff0c 这段内存区可以由需要访问的进程将
  • 对ASPICE的理解

    Aspice xff08 Automotive SPICE xff09 中文翻译为汽车软件过程改进及能力评定 是为保证软件质量的规范 xff0c 要求供应商按照Automotive SPICE的要求进行产品的设计与开发 是汽车行业中常用于质
  • 普通人如何改变自己的命运?

    Morty 普通人改变命运的秘密 xff01 我的观点可能会颠覆你的认知 哔哩哔哩 bilibili 非常感谢UP xff0c 你的每个视频我都看了 xff0c 给我启示最大的是 为什么你总是那么穷 xff0c 这些年一直走背运 xff0c
  • 指令流水线

    为提高处理器执行指令的效率 xff0c 把一条指令的操作分成多个细小的步骤 xff0c 每个步骤由专门的电路完成的方式 指令流水线是为提高处理器执行指令的效率 xff0c 把一条指令的操作分成多个细小的步骤 xff0c 每个步骤由专门的电路
  • 何为CPU的亲和性

    CPU的亲和性 xff0c 进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性 xff0c 进程迁移的频率小就意味着产生的负载小 亲和性一词是从affinity翻译来的 xff0c 实际可以称为CPU绑定 在多核运
  • Docker 快速入门

    x1f389 Docker 简介和安装 Docker 快速入门 https blog csdn net weixin 45043334 category 11863858 html https blog csdn net weixin 45
  • 如何提高Linux的实时性

    QNX是黑莓旗下的一款微内核实时操作系统 xff0c 是全球第一款通过ISO 26262 ASIL levelD安全认证的车载操作系统 xff0c QNX是一个分布式 嵌入式 可规模扩展的实时操作系统 它遵循POSIX 1 程序接口 和PO
  • 自旋锁和互斥锁的区别

    面试官 xff1a 你说说互斥锁 自旋锁 读写锁 悲观锁 乐观锁的应用场景 百度安全验证 自旋锁和互斥锁的区别 一缕阳光a的博客 CSDN博客 自旋锁和互斥锁的区别 POSIX threads 简称Pthreads 是在多核平台上进行并行编

随机推荐

  • CPU超线程技术到底有什么用?

    什么是超线程技术 前几天的超线程文章引起了不少讨论 xff0c 有些四驱两驱之类留言就不点出来了 今天咱们趁热打铁来聊下CPU超线程的实际用途 超线程的英文名是Hyper Threading Technology xff0c 简称HT 超线
  • 蓝桥杯 生日蜡烛

    某君从某年开始每年都举办一次生日party xff0c 并且每次都要吹熄与年龄相同根数的蜡烛 现在算起来 xff0c 他一共吹熄了236根蜡烛 请问 xff0c 他从多少岁开始过生日party的 xff1f 请填写他开始过生日party的年
  • QNX实时操作系统

    一个实时操作系统 xff08 RTOS xff09 必须是可靠的 xff1b 它必须是快速和响应的 xff0c 管理有限的资源和安排任务 xff0c 使它们按时完成 xff0c 并确保功能是隔离的 xff0c 不受其他功能的干扰 在本节中
  • Makefile教程(绝对经典)

    Makefile教程 xff08 绝对经典 xff0c 所有问题看这一篇足够了 xff09 GUYUEZHICHENG的博客 CSDN博客 makefile 该篇文章为转载 xff0c 是对原作者系列文章的总汇加上标注 支持原创 xff0c
  • 王道考研操作系统笔记

    https mp weixin qq com mp appmsgalbum biz 61 MzI0OTI2MjY2MQ 61 61 amp action 61 getalbum amp album id 61 227777034051051
  • 《管理的常识》:怎么做一个优秀的管理者?

    关于作者 艾伦 默里是 华尔街日报 的副总编 xff0c 华尔街日报 网和市场观察网的执行主编 xff0c 同时也是三次普利策新闻奖的得主 默里先生自己的新闻作品也获得过多次大奖 xff1a 关于亚洲的报道让他两次摘取了海外新闻出版俱乐部奖
  • VLAN 基础知识

    为什么需要VLAN 1 什么是VLAN VLAN Virtual LAN xff0c 翻译成中文是 虚拟局域网 LAN可以是由少数几台家用计算机构成的网络 xff0c 也可以是数以百计的计算机构成的企业网络 VLAN所指的LAN特指使用路由
  • 目标设定的SMART原则

    目标设定的SMART原则来源于管理大师彼得 德鲁克的 管理的实践 xff0c 有五个基本的原则 xff1a 1 目标必须是具体的 xff08 Specific xff09 2 目标必须是可以衡量的 xff08 Measurable xff0
  • 软件安全开发 - 流程规范

    写一篇软件安全开发流程分享给大家 xff0c 帮助从事软件开发 xff0c 测试 xff0c 管理的人员 xff0c 规范操作 xff0c 重视软件工程安全 现今社会存在各种网络安全事件 xff0c 比如勒索病毒导致许多网络系统瘫痪 xff
  • 读保护_混合ASIL系统中不同安全等级模块间的边界保护

    01 功能安全组件的软件开发 针对ISO 26262对功能安全软件研发的要求 xff0c AUTOSAR将功能安全需求进行了具体拆分 当前的AUTOSAR规范囊括了诸多功能安全组件软件开发的需求概念 在AUTOSAR系统设计的架构中 xff
  • 功能安全的一些好文

    特约专栏 一篇文章带你认识功能安全 本文将结合ISO 26262 xff0c 从什么是功能安全 什么是功能安全工程师以及功能安全工程师主要做什么 xff0c 三个方面展开对功能安全的介绍 https mp weixin qq com s v
  • make和makefile

    第二十六课 xff1a Makefile设计 哔哩哔哩 bilibili 内部资料 课程简介 大连理工大学国家精品课 嵌入式软件设计是计算机 软件工程等学科的专业方向课 xff0c 是一门实践性 技术性很强的重要课程 本课程的主要任务是全面
  • acm算法有用吗?写给自己。

    acm算法有用吗 xff1f 写给自己 xff0c 也希望能帮助那些大一迷茫的人 我是一个普通二本院校即将进入大三的acmer xff0c 一般问这个问题的人都是一个acmer的失败者 xff0c 因为成功的人都去忙着学习该学习的算法了 x
  • 算法题中常用的C++ STL

    一 栈 xff08 stack xff09 stack实现了一种先进后出的数据结构 xff0c 使用时需要包含stack头文件 C 43 43 定义stack语法 xff1a span class hljs stl container sp
  • Boot Loader

    在嵌入式操作系统中 xff0c BootLoader是在操作系统内核运行之前运行 可以初始化硬件设备 建立内存空间映射图 xff0c 从而将系统的软硬件环境带到一个合适状态 xff0c 以便为最终调用操作系统内核准备好正确的环境 在嵌入式系
  • 什么是SecOC 板端加密通讯

    板端加密通讯 Security Onboard Communication 缩写为SecOC SecOC是AUTOSAR标准中提出的针对ECU间通信安全提出的标准 CAN网络是明文传输 xff0c 广播报文 xff0c 无发送合法性校验 为
  • C++11:noexcept关键字

    1 介绍 C 43 43 11新标准引入的noexcept 运算符 xff0c 可以用于指定某个函数不抛出异常 预先知道函数不会抛出异常有助于简化调用该函数的代码 xff0c 而且编译器确认函数不会抛出异常 xff0c 它就能执行某些特殊的
  • 嵌入式应用程序设计流程

    第三十课 xff1a 应用程序设计流程 哔哩哔哩 bilibili arm linux gcc 交叉编译器 通过挂载实现程序调试 xff1a xff08 省去程序下载环节 xff09 第三十二课 xff1a 文件操作 哔哩哔哩 bilibi
  • uboot和bootloader有啥区别

    uboot和bootloader有啥区别 reboot to bootloader有什么用 IT教学网 片内的ram用来存储启动代码 xff0c 在2440初始化sdram之前 xff0c 代码就在片内ram中运行 片内ram装载的是nor
  • 微内核和宏内核以及混合内核

    操作系统内核的几个重要的特点 xff1a 内核是操作系统的核心部分 xff0c 它管理着系统的各种资源内核可以看成连接应用程序和硬件的一座桥梁 xff0c 是直接运行在硬件上的最基础的软件实体在一些简单的硬件设备上可以没有内核或操作系统而直