返璞归真系列——————微内核与宏内核

微内核和宏内核 微内核是一种典型的架构模式 ,区别于普通的设计模式,架构模式是一种高层模式,用于描述系统级的结构组成、相互关系及相关约束。微内核架构在开源框架中的应用非常广泛,比如常见的 ShardingSphere 还有Dubbo都实现了自己的微内核架构。那么,在介绍什么是微内核架构之前,我们有必要先阐述这些开源框架会使用微内核架构的原因。 阅读详情

        我发现我一直是一个后知后觉的人。不知道是心里的浮躁还是自己脑子小装不下那么多知识。不过幸好我还是一个善于思考的人。现在重新想到了要区分一下这两个概念。也不至于稀里糊涂的过着。了解了如下的问题之后更有利于对linux架构的认识。

         在通常情况下,我们会想到把凡是能够为进程服务的模块就应该放在操作系统的内核中。例如:文件管理模块是为进程服务的,所以放在内核中;各种驱动模块是为进程服务的,所以要放在内核中;进程模块当然要放在内核中。随着进程服务请求的增加,操作系统内核就会越来越大,随之也将出现一系列的问题。

        首先,内核是常驻内存的,因此大内核占用的存储空间就大,这样在硬件系统比较小,存储器资源比较紧张的系统就不太适用;其次,是维护起来也比较困难,假设内核中的某一个服务模块进行了修改,那么修改之后就必修对整个系统进行一次编译,显得极不方便;再次,就是使得处理器在内核运行的时间比较长,从而不适合在速度要求比较高的场合下应用。

         总之,操作系统内核大到一定程度之后,会出现一系列因为大而产生的诸多问题。为了解决这些问题,人们想了一系列的办法试图在满足应用程序所需服务的前提下把内核做小。其中一个有效的办法是,把内核各个服务程序模块中的部分内容移到内核外面作为一个进程来看待,在内核中只保留内核服务与用户进程的接口。内核只作为一个消息的中转站,这样内核就大大变小了。这样的内核就叫做微内核。

         宏内核和微内核谁好谁坏也不是我这个菜鸟级水平的人能够评判的。但是如果我把这些代表请上来的话也许大家会在内心对他们有个自己的评价。

          微内核系统有WindowNT,Minix,Mac,etc.宏内核的系统有Unix,Linux,etc。其中有个有意思的现象:Unix是宏内核,而Mac却是微内核。另外废话一句:minix和linux也都没说服对方。

          两个系统的内核是通过进程的创建FORK的实现比较,因为进程的创建涉及到系统调用,内存管理,文件管理等系统的主要方面。因此可以通过比较fork来大致了解一下内核的差别。

微内核的代表Minix

        在Minix中,操作系统的内核,内存管理,系统管理都有自己的进程表,每个部分的表包含了自己需要的域。表是精确对应的,为了保持同步,在进程创建和结束时,这三个部分都要更新自己的表。由内存管理器协调。

       系统启动后,kernel,mm,fs系统进程在各自的空间运行main()函数循环等待消息

      while (true)

                   {

                             ……

                            receive(ANY,&mm_in);

                             ……

                   }

        当一个fork传给mm的main(),main()调用do_fork(),do_fork()函数把父i函数的data、segment和stack segment创造了一个精确副本给子进程,并把父进程的text segment与子进程共享,然后在mm的进程表mproc[ ]中添加新进程,并设置各属性。添加完后发送消息给kernel(sys_fork(...))和fs(tell_fs(...)),kernel中的函数sys_task()接收到系统消息,调用do_fork( message *m_ptr),拷贝父进程的proc 结构体到子进程,并设置进程在内核进程表中的属性。tell_fs( )是内存管理器与文件系统之间的接口。tell_fs(...)调用_taskcall(...),文件管理器接收到fork系统消息,调用do_fork( )函数,拷贝父进程的 fproc 结构体到子进程并设置进程在文件进程表中的属性。这样整个进程的属性就设置完成。

       在Minix创建新进程的过程中,可以看到一个很大特点,就是整个系统按照功能分成几个部分,各模块之间利用消息机制通信,调用其他模块的函数必须通过目标模块的守护进程调用完成。

宏内核的代表:linux

      在linux中,进程的结构如下:

        struct task_struct{

               pid_t pid;

               pid_t pgrp;

              ...

             /*filesystem information*/

            struct fs_struct *fs;

           /*memory managment info */

          struct mm_struct *mm;

         ...   

        };

       在linux进程的结构定义中,task_struct包含了所有的信息,包括进程的内存情况,文件系统情况。在创建进程时,系统调用sys_fork调用do_fork(...)函数。

      int do_fork(unsigned long clong_flags,...)

        {

             struct task_struct *p;

             p->pid = get_pid(clone_flags);

             ....

            /*copy all the process information*/

        copy_files(clone_flags,p);

        copy_fs(clone_flags,p);

         copy_mm(nr,clone_flags,p);

          ...

        }

         在创建进程时,do_fork函数把所有的工作完成,分配pid。。。号,拷贝父进程数据段,堆栈段,等等。linux的进程创建过程是一个完整的过程,直接调用其他模块的函数,而不是消息传递。

          Minix与Linux创建新进程的过程比较可以看出两者之间的区别,Minix是建立在分模块之上的,模块之间以信息传递联系。Linux内部是分模块的,但是在运行的时候,它是一个独立的二进制大映像,其模块之间的通讯是直接调用其他模块中的函数实现的。宏内核与微内核的区别也就在此。微内核是一个信息中转站,自身完成的功能很少,主要是传递一个模块对另一个模块的功能请求,而宏内核则是一个大主管,把内存管理,文件管理等等一股脑全部接管。

          从理论上来看,微内核的思想更好一些,微内核把系统分为各个小的功能模块,降低了设计难度,系统的维护与修改也容易,但是通信带来的损失效率是个问题。宏内核的功能块之间的耦合度太高造成修改与维护的代价太高,不过在目前的linux里面还不是太大的问题,因为目前linux还不算太复杂,宏内核因为是直接调用的,所以效率比较高。

微内核、宏内核、混合内核,三者到底有什么区别? 操作系统内核,你可以把它想象成一个繁忙城市的交通指挥系统。就如同交通指挥系统管理着城市的道路、桥梁和交通信号灯,以确保交通顺畅,内核同样管理着计算机的各种硬件资源,如处理器、内存、硬盘等,以保障操作系统的正常运行。而当我们谈到进程管理和文件系统管理时,这就像是交通指挥系统要确保各个方向的车辆能按照规定的路线行驶,防止交通混乱。总的来说,内核就像是交通指挥系统的角色,它在幕后默默工作,确保计算机的硬件资源能有序、高效、安全地服务于各种上层应用程序。内存管理:内存管理是操作系统内核的一项基本任务。 阅读详情

相关推荐

COCOS 3.8 接入高德定位SDK

/微信登录所必须的code。//是否获得code。

八喜互动 1993

内核的架构 --- 宏内核与微内核

宏内核与微内核

weixin_43604927的博客 1115

Mac版UltraEdit 18.00.0.19破解教程:终端一行命令搞定(附版本适配指南)

本文为Mac用户提供了UltraEdit的合法替代方案与授权指南,强调破解软件的法律风险和安全隐忧。推荐使用VS Code、Sublime Text等开源或商业编辑器,结合终端工具如Vim/Neovim,实现高效文本编辑。同时详细介绍了UltraEdit的官方授权选项,帮助开发者在遵守软件许可的前提下提升工作效率。

k9l0m1的博客 357

宏内核与微内核

宏内核 微内核

四季帆的博客 1046

Windows 10下三菱PLC控件安装报错Error Number:-119的终极解决方案(附详细步骤)

本文针对Windows 10系统安装三菱PLC控件时常见的Error Number:-119报错,提供了深度分析与终极解决方案。文章剖析了该错误源于oleaut32.dll文件版本冲突,并详细介绍了通过设置兼容性模式、手动注册DLL、直接安装MX Component以及高级系统修复等多种方法,帮助用户彻底解决此安装难题,顺利搭建PLC开发环境。

weixin_29289821的博客 333

补洞与fairing算法

对网格进行补洞,remesh, 平滑,fairing, 最小二乘优化平滑

闪电彬彬的博客 1047

操作系统中微内核与宏内核

宏内核:内核包含了操作系统的所有主要功能,性能较好但内核代码复杂,安全性和稳定性较低。微内核:将大部分操作系统服务移出内核,内核更加精简,系统的稳定性和安全性更好,但性能可能略逊色于宏内核。在实际应用中,宏内核和微内核各有优势,具体选择取决于操作系统的应用场景。实时系统、嵌入式系统等要求高稳定性和安全性的环境中,微内核更为合适,而在桌面或服务器环境中,宏内核则因其高性能和简化的通信机制更为常见。

2201_76133789的博客 3927

台达B3伺服电机485通讯的调试过程

最近上了一项目,没办法直接把B3伺服接到PLC上去,怎么办?偶说试下直接电脑通过100多米的485线控制好了,定型前的测试就这样展开了。 1、焊CN1口 如果不安装CN1,是开不了机的,要报很多错误,比如SERV EMG ALERT, 上限报警,下限报警什么的,怎么办?直接焊好CN1头子吧,烦了点,但是必要的。 主要接的是11,9,10,32,31,30几个脚,按照图上连接好就是了。 2、 接线路 按照上面的图,接上伺服电机线,编码器线,电源线,包括限位常闭开关、485连线等,就完..

shidong01的博客 1万+

宏内核和微内核介绍

宏内核和微内核的基本概念 宏内核:简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程、线程管理、内存管理外,文件系统,驱动,网络协议等等都在内核里面。将内核从整体上作为一个大过程实现,并同时运行在一个单独的地址空间。所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。 优点:效率高 缺点:稳定性差、开发过程中的bug经常会导致整个系统挂掉 ...

鹏鹏的博客 8638

机器学习实战26-一种基于LightGBM的股市涨跌预测系统与代码实现过程

在全球经济一体化的背景下,股市作为经济活动的晴雨表,其波动与预测对于投资者、金融机构乃至国家政策制定者而言至关重要。随着金融市场的日益复杂化与信息量的爆炸式增长,股市分析不再仅限于基本面和技术面的传统研究,而是迫切需要更加精准、高效及智能化的方法来捕捉市场动态,以辅助决策制定。模型评估是确保LightGBM股市预测系统准确性和稳定性不可或缺的一环。通过综合运用多种评估指标、科学的验证方法以及深入的性能分析,我们不仅能够全面理解模型的能力和限制,还能为持续优化模型、提升预测准确性奠定坚实基础。

微学AI的博客 2327

实战干货|.NET9 C#上位机:多PLC并发通信+数据防丢+指令精准下发(10台设备实测+踩坑实录)

摘要:本文介绍了一个基于.NET9重构汽车零部件产线10台西门子S7-1200 PLC并发通信的工业级解决方案。针对原有系统存在的同步轮询阻塞、数据丢失、指令重复等问题,采用连接池复用、异步并发控制、超时隔离等技术,实现800ms内完成10台PLC并发采集、零丢包率、100%指令精准下发。方案通过.NET9的ThreadPool调度优化和ValueTask内存管理,将CPU占用控制在15%以内,解决了多PLC通信中的并发冲突、超时扩散等核心痛点,并提供了可直接复用的工业级代码实现。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 453

软件架构模式

自从做了一些平台化系统之后,发现最原始的抽象,建模,分层,内聚,低耦合,面向对象变得越来越重要了,有的时候技术就是这样,那些最本质,最朴实的东西,有种返璞归真的感觉,当然其他很多事情也一...

春哥大魔王的博客 273

claude code desktop中出现Doesn‘t look like an Anthropic model - expected a gateway model route 解决方案

本文主要介绍了claude code desktop中出现Doesn’t look like an Anthropic model - expected a gateway model route referencing an Anthropic model和Server is busy. Retrying的解决方案,希望能对使用claude code desktop的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 9万+

操作系统的体系结构:宏内核和微内核

为此,操作系统设计人员试图按照复杂性、时间常数、抽象级别等因素,将操作系统内核分成基本进程管理、虚存、I/O与设备管理、IPC、文件系统等几个层次,继而定义层次之间的服务结构,提高操作系统内核设计上的模块化。它将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低了内核的设计复杂性。微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可以独立地优化和演进,从而保证了操作系统的可靠性。

二进制君 1855

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[架构之路-221]:鸿蒙系统和安卓系统的比较:微内核VS宏内核, 分布式VS单体式

微内核架构通过分离和隔离不同的功能和服务,提供了更好的可靠性和灵活性,但相应地会带来一些额外的开销。例如,Linux 内核提供了动态加载的模块机制,允许在运行时加载和卸载特定的功能模块,以实现系统的灵活性和可扩展性。需要注意的是,虽然 Linux 是宏内核架构,但它也支持一些微内核架构的概念和特性,如进程间通信(IPC)和分离用户空间和内核空间。需要指出的是,在实际应用中,存在一些混合型内核架构(如宏内核中加入部分微内核的特性)及其他的变种架构,以平衡不同架构的优缺点,以满足特定的需求和约束。

文火冰糖(王文兵)的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

宏内核与微内核--Linux的工程理论

简要对比了操作系统架构中宏内核和微内核的分类对比,以及Linux使用的架构及自己的发展。

smallmaolv的博客 681

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

三种内核结构---宏内核、微内核、混合内核

操作系统的三种内核结构---宏内核、微内核、混合内核

qq_33014341的博客 2925

*30.什么是微内核

将微内核之前,要了解内核。 内核是什么?听起来跟cpu一样,像一个物理硬件。但是恰恰不是。内核是操作系统中的核心部分。那操作系统是硬件?肯定不是,是软件。那么内核也就是软件。 内核还可以分为:微内核和宏内核(单内核)。 如何区分呢?做一个形象的比喻。 宏内核相当于一家公司,然后办公室不划分任何部门,所有的部门都在这里工作。 微内核也是一家公司,但是它把办公室隔成了很多小办公室,每个部门在各自的办公...

chenyson的博客 1536

计算机操作系统的宏内核与微内核原理

(1)宏内核宏内核(又称单体内核)指将进程管理、存储管理、文件系统、设备驱动、网络协议栈、IPC等大部分内核服务都放在内核态,以过程调用为主完成跨子系统协作。其核心特征是单一内核地址空间、大内核可信计算基(TCB)与低开销的内部调用路径。(2)微内核微内核主张将内核职责缩到最小:典型只保留进程/线程管理、地址空间与内存映射、基本调度、中断转发、最小IPC机制等极少数关键功能在内核态;而文件系统、设备驱动、网络协议栈以及大多数“内核服务”上移为用户态服务器,相互之间通过IPC消息传递协作。

分享人工智能领域原创文章 1778

宏内核与微内核详细对比表

内核架构对比摘要 宏内核与微内核在架构设计上存在本质差异:宏内核将核心功能集中在内核空间,强调性能但耦合度高;微内核仅保留基础功能在内核,其他作为用户空间服务运行,具有更好的模块化、安全性和可维护性。性能方面,宏内核的系统调用更快,而微内核因频繁IPC存在开销。微内核在稳定性、安全隔离和系统扩展上优势明显,适合嵌入式和安全关键系统;宏内核则在高性能计算场景表现更佳。现代操作系统多采用混合架构以平衡两者优缺点,发展趋势包括性能优化、形式化验证和虚拟化技术的应用。内核选择需根据具体场景在性能、安全与实时性间权衡

qq_39980997的博客 1241

微内核和宏内核的区别(短小、精悍)

微内核:提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口与,如DOS、Workplace OS、Workplace Unix等。IBM、Microsoft等操作系统都采用了这一研究成果的优点。(百度百科) 宏内核:是操作系统核心架构的一种,此架构的特性是整个核心程序都是以核心空间(Kernel Space)的身份及监管者模式(Su...

Cat 2万+

请你来说一下微内核与宏内核

参考回答: 宏内核: 除了最基本的进程、线程管理、内存管理外,将文件系统,驱动,网络协议等等都集成在内核里面,例如linux内核。 优点:效率高。 缺点:稳定性差,开发过程中的bug经常会导致整个系统挂掉。 微内核:内核中只有最基本的调度、内存管理。驱动、文件系统等都是用户态的守护进程去实现的。 优点:稳定,驱动等的错误只会导致相应进程死掉,不会导致整个系统都崩溃 缺点:效率低。典型代表QN...

WangY.H 1312

linux是微内核还是宏内核,微内核与宏内核比较

微内核与宏内核比较内核体系结构---微内核与宏内核比较内核按照体系结构分为两类:微内核(microkernel)与宏内核(macrokernel). 微内核的系统有WindowNT,Minix,Mach,etc.宏内核的系统有Unix,Linux,etc.通过比较Minix和Linux来比较微内核和宏内核是很有意思的,因为当年两个系统的创始人对两种内核的优劣有过争论.两个系统的内核是通过进程的创建...

weixin_36289813的博客 3283
上一篇: 什么是真正的实时操作系统
下一篇: 触摸屏相关的一点拙见--以及android系统中linux内核部分的编译
野-百-合
博客等级 码龄17年 308粉丝 118原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值