首页 > 其他分享 >【操作系统】简单了解一下宏内核和微内核

【操作系统】简单了解一下宏内核和微内核

时间:2024-01-02 10:39:10浏览次数:35  
标签:操作系统 管理 代码 内核 微内核 进程 内存


  • 内核有哪些组成部分?
  • 宏内核和微内核的区别是什么?
  • 内核分层的目的是什么?

计算机中资源主要包括软件资源和硬件资源,软件资源可以理解为各种各样的数据,那么硬件资源就是计算器的实际组成部分,主要可以分为下面这些部分:

  • 总线,负责连接其他设备,它是设备工作的基础
  • CPU,中央处理器,负责执行程序和处理数据运算
  • 内存,负责存储运行时的代码和数据
  • 硬盘,负责长久储存用户文件数据
  • 网卡,负责计算机与计算机之间的通信
  • 显卡,负责显示工作
  • 各种I/O设备,显示器,打印机,键盘,鼠标等

内核又可以理解为对系统中软件和硬件资源的管理,从不同的功能角度来说可以划分到下面这些部分:

  • 进程管理,把运行时的程序抽象为进程,控制进程在CPU上的的资源占用情况
  • 内存管理,为程序分配内存,或者释放内存
  • 文件系统,管理用户数据
  • 图形系统,管理显卡,负责显示信息
  • 网络组件,网卡主要负责网络通讯,网络通讯需要各种通信协议,最后在内核中形成了网络协议栈
  • IO管理器,管理显示器,鼠标,键盘等

宏内核

内核部分包含进程管理,内存管理,文件系统,图形系统,网络组件,IO管理器等,把这些部分中所有代码编译,链接在一起,形成一个大的可执行程序。这里很类似于单体架构。

优点:减少了模块之间调用的成本,性能高。

缺点:各个功能模块之间高度耦合,扩展性和移植性差,一个模块出了问题,整个内核的所有组件都可能有问题。

微内核

内核部分的功能要做到精简,不需要太多的功能,仅仅只有进程调度、处理中断、内存空间映射、进程间通信等功能。进程管理、内存管理、设备管理、文件管理等服务功能,做成一个个服务进程。

进程之间通过消息进行通信,这有那种微服务的感觉。

优点:结构挺清晰,系统有良好的一致性,内核代码量少,伸缩性和拓展性都比较好

缺点:进程通讯增加了成本,性能比较差

内核分层

内核中的代码,垂直划分不同的层级,比如把硬件平台相关的代码抽离出来,化作硬件代码层,当移植到不同的硬件平台时,只需要修改这地方的代码即可。

  • 内核实现分层的主要目的和好处在于屏蔽底层细节,使上层开发更加简单。
  • 分层以后可以提高可移植性,

混合架构

混合内核大致是将需要频繁调用的功能放在内核中,提升性能。不会经常使用的功能模块可以放在内核外作为服务运行,这样也不会造成内核过度臃肿。

当前系统内核,Linux是宏内核,Windows和NT内核和苹果Darwin的XNU内核都是混合的内核,它兼具了宏内核的极致性能,又吸收了微内核的安全性和易拓展等特点。

标签:操作系统,管理,代码,内核,微内核,进程,内存
From: https://blog.51cto.com/u_15812995/9063826

相关文章

  • 打造完备数据生态,「开放互信、合作共赢」: 拓数派亮相2023龙蜥操作系统大会
    拓数派始终持「开放互信,合作共赢」的理念,通过积极建立合作伙伴生态网络、构建生态工具、打造活跃的技术和用户社区等方式,构筑更加完善的数据生态体系,为用户带来更加便捷的使用体验。2023年12月17-18日,由开放原子开源基金会指导,龙蜥社区主办的2023龙蜥操作系统大会于北京嘉瑞文化中......
  • Linux内核bind系统调用源码分析
    一、环境说明内核版本:Linux3.10内核源码地址:https://elixir.bootlin.com/linux/v3.10/source(包含各个版本内核源码,且网页可全局搜索函数)二、应用层-bind()函数将socket套接字绑定指定的地址:/**sockfd:由socket函数返回的套接口描述符*sockaddr:一个指向特定于协议......
  • 编译cuttlefish内核遇到的问题
    参考https://source.android.google.cn/docs/setup/create/cuttlefish-kernel-dev?hl=zh-cn我使用的是common-android13-5.10,在编译的时候使用的是build.sh的方法,在实际编译的时候遇到System.map找不到的问题,需要修改build.sh,将System.map从内核编译目录下拷贝到dist目录下即......
  • Linux内核socket系统调用源码分析
    一、环境说明内核版本:Linux3.10内核源码地址:https://elixir.bootlin.com/linux/v3.10/source(包含各个版本内核源码,且网页可全局搜索函数)二、应用层-socket()函数应用层创建socket对象返回整型的文件描述符。/*family:被称为协议族,或者协议域。*type:套接字类型。*......
  • 麒麟操作系统上离线安装 MySQL 8.0 ARM
    在无法连接互联网的环境中,我们可能需要在麒麟操作系统上安装MySQL8.0的ARM架构版本。以下是详细的步骤,演示如何在离线环境中完成MySQL8.0的ARM架构版本的安装和初始化。1.准备工作在开始之前,请确保已经准备好以下工作:麒麟操作系统一个存储MySQL8.0ARM架构版本和其依......
  • Linux驱动开发之Linux内核中的中断处理以及相关API和例程分析
    中断是计算机中实现异步事件处理的一种关键机制。当中断发生时,CPU会暂停当前的任务,转去运行中断服务例程。中断处理完成后,CPU再返回到原来的任务。这使得中断处理具有很高的实时性和响应速度。在Linux内核中,充分利用了中断机制来响应各种硬件和软件事件。在Linux操作系统中,中断......
  • 优维携手深职大共建“中国高校‘双碳’技能仿真操作系统”!
    优维“双碳”战略合作·高校优维科技与深圳职业技术大学碳中和技术研究院(深职碳研院)签署战略合作协议,深化产学研,聚力创新“双碳”发展。在“双碳”目标大背景下,优维科技和深职碳研院将携手共同开发中国高校“双碳”技能仿真操作系统,为“双碳”领域技能人才培养探索新道路。1“双碳......
  • 如何编译avd for macarm or winx86 内核
    AVD:AndroidVirtualDevice前言别问需求问就是抽象背景是pixel6好贵买不起备用机内核只有4.4改了三天内核代码只把kernelSupatch进去了玩不起ebpf呜呜呜什么我是macm1?有androidstudio的原生arm模拟器?avd启动!解决痛点:没有root等需要自定义内核的需求如patch......
  • Linux操作系统中软件安装:用RPM包管理器安装软件步骤
    安装软件的一般步骤如下:1.打开终端,作为root用户或使用sudo命令获取管理员权限。2.使用RPM命令进行软件包的安装。例如,使用“rpm-ivh软件包名称.rpm”命令来安装软件包,其中“-i”表示安装,“-v”表示显示详细安装信息,“-h”表示以适当的哈希标记显示安装进度。常用命令如下:除了RP......
  • 操作系统
    操作系统的概念、功能操作系统的特征并发共享虚拟异步并发和共享为两个最基本的特征,两者互为存在条件。......