当前位置:网站首页>三种内核结构---宏内核、微内核、混合内核
三种内核结构---宏内核、微内核、混合内核
2022-07-30 05:45:00 【zpv2jdfc】
内核是硬件资源和软件资源的管理者,主要由这些组件组成:
管理CPU、管理内存、管理硬盘、管理显卡、管理网卡、管理IO设备的组件以及各种驱动程序。而三种不同的内核结构也就是三种对这些组件管理的结构。
宏内核结构
举例:LINUX
宏内核结构把上面这些管理进程、内存、IO等的代码编译连接之后,形成一个大的可执行程序。这个可执行程序在特权模式(也就是内核态)下运行,并且向用户应用软件提供接口(system call)。
宏内核的结构是这样的:
这里进程、内存管理等模块都是错综复杂交织在一起的,互相之间都会调用一些函数。宏内核结构最大的缺点就是耦合度太高,所有的组件使用同一个地址空间,如若其中一个组件出问题,其他组件可能都会出问题。当然,因为组件之间可以随意互相调用,它的性能很好。
linux内核结构:
从linux的内核全景图可以看出来,宏内核里各个模块之间互相调用函数,上下贯穿、没有左右边界,结构非常复杂。维护这样的系统结构是很困难的。
微内核
举例:MACH、MINIX
微内核与宏内核架构相反。微内核架构中内核功能尽可能少:只有进程调度、中断处理、内存空间映射、进程通信等功能。而像文件系统、设备驱动这些,则作为一个个独立的服务进程,进程之间通过消息传递来通信。
微内核的优势是降低了不同模块之间的耦合性,同时让系统更容易拓展其他功能。但是这也降低了系统性能。比如一个应用程序需要使用外设:首先通过系统调用进入内核态;内核给设备管理进程发送消息;切换到用户态,设备管理进程处理完后传递消息给内核;切换回内核态,传递消息给应用程序;切换回用户态,应用程序继续执行。中间涉及了4次状态切换,如果是宏内核的话只需要2次。
混合内核
举例:windows
混合内核和微内核很相似。混合内核把常用的组件放在内核态运行。这样既保证了系统的高性能,同时也不会使系统耦合度过高。
非常经典的WindowsNT内核结构:
从图中可以看出,除了常用的进程、内存管理等,windows把设备驱动程序和图形驱动程序也放在了内核中。
总结:
放一张维基百科对三种内核结构的解释图:

边栏推荐
猜你喜欢

The first WebAssembly program

Target detection, object classification and semantic segmentation of UAV remote sensing images based on PyTorch deep learning

单例模式:Swift 实现

MySQL data types and footprint

工厂模式(Swift 实现)

探究make_shared效率

“R语言+遥感”的水环境综合评价方法

第一个WebAssembly程序

迪文串口屏幕制作(连载一)=====准备工作

边境的悍匪—机器学习实战:第四章 训练模型
随机推荐
写在公众号之前——QT,ARM,DSP,单片机,电力电子与传动!
Mysql client common exception analysis
2021-09-16 集成学习上--task1机器学习数学基础
探究make_shared效率
十三、Kotlin进阶学习:内联函数let、also、with、run、apply的用法。
DeepLearing4j's deep learning Yolo Tiny realizes target detection
R语言 生态环境领域应用
Kaggle-M5
求职准备知识点
Map making of environmental impact assessment based on remote sensing interpretation and GIS technology (the latest guidelines)
【Qingdao Station】High-level application of SWAT model and modeling of areas without data, uncertainty analysis and climate change, improvement of land use surface pollution impact model and case analy
逻辑右移和算术右移区别
边境的悍匪—机器学习实战:第一章 机器学习的基础知识
遥感、GIS和GPS技术在水文、气象、灾害、生态、环境及卫生等应用
基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割
基于R语言地理加权回归、主成分分析、判别分析等空间异质性数据分析
[Getting C language from zero basis - navigation summary]
八、Kotlin基础学习:1、数据类;2、单例;3、伴生对象;4、密封类;
Use kotlin to extend plugins/dependencies to simplify code (after the latest version 4.0, this plugin has been deprecated, so please choose to learn, mainly to understand.)
Xcode 绑定按钮点击事件