操作系统 之 内核
最近华为鸿蒙系统沸沸扬扬,宣传自己用了微内核,可以支持各种设备。
- 那么内核是什么?
- 为什么微内核可以支持各种设备呢?
内核(英语:Kernel,又称核心)在计算机科学中是一个用来管理软体发出的资料 I/O(输入与输出)要求的电脑程式,将这些要求转译为资料处理的指令并交由中央处理器(CPU)及电脑中其他电子元件进行处理,是现代操作系统中最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并由内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的。所以内核通常提供一种硬件抽象的方法,来完成这些操作。通过进程间通信机制及系统调用,应用进程可间接控制所需的硬件资源(特别是处理器及 IO 设备)。
宏内核
宏内核结构在硬件之上,定义了一个高阶的抽象接口,应用一组原语(或者叫系统调用(System call))来实现操作系统的功能,例如进程管理,文件系统,和存储管理等等,这些功能由多个运行在核心态的模块来完成。
尽管每一个模块都是单独地服务这些操作,内核代码是高度集成的,而且难以编写正确。因为所有的模块都在同一个内核空间上运行,一个很小的 bug 都会使整个系统崩溃。然而,如果开发顺利,单内核结构就可以从运行效率上得到好处。
微内核
微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如线程管理,地址空间和行程间通讯等。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最核心的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分
微内核将许多 OS 服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用 OS 服务。
单内核和微内核的比较
单内核结构是非常有吸引力的一种设计,由于在同一个地址空间上实现所有复杂的低阶操作系统控制代码的效率会比在不同地址空间上实现更高些。
现在,单核结构正倾向于设计不容易出错,所以它的发展会比微内核结构更迅速些。两个阵营中都有成功的案例。微核经常被用于机器人和医疗器械的嵌入式设计中,因为它的系统的关键部分都处在相互分开的,被保护的存储空间中。这对于单核设计来说是不可能的,就算它采用了运行时加载模块的方式。
内核用来干什么
内核实现对各种硬件资源的调用提供给软件服务。为软件提供一个运行环境。内核可以让进程更简单的运行在硬件上,使用各种各样的硬件资源。
可以简单的理解成硬件抽象层。
中断事件(Interrupt Event)
处理硬件输入,例如键盘、鼠标、网络 IO 等。
系统调用(System Call)
内核提供给进程的系统功能调用统一入口。提供在各种机器上一致的调用方式,用来处理各种硬件资源的申请,释放,以及调用。
网络子系统
管理网络协议栈与网络包的收发。
设备子系统
管理输入和输出。
文件管理子系统(File Management Subsystem)
管理文件的写入读取,对接文件系统。
进程管理子系统 (Process Management Subsystem)
负责进程管理、调度、同步、以及 CPU 资源的使用。
内存管理子系统(Memory Management Subsystem)
管理虚拟内存、内存映射、页表、swap 空间、无力内存等。
微内核为什么可以支持各种设备
微内核相对于 Linux 的宏内核,由于不集成各种硬件驱动,内核体积更小,自带功能相对简单,更适合在硬件种类繁多的物联网设备上使用。
总之,技术的选用只有合适与不合适,同时代的技术通常不会有绝对的好坏,希望读者也不要盲目的瞎吹鸿蒙。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于