操作系统和内核
关于操作系统是这样定义的:
操作系统(英语:Operating System,缩写:OS)是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
对我们来说,操作系统最直观的感受就是桌面系统,以及上层的应用程序,而后面的资源处理等等就是操作系统背后的 黑盒。
读者朋友们现在阅读我的这篇文章,是在浏览器,或者某个应用程序上进行的。而一个应用程序是要运行在特定的操作系统上的。操作系统,则是要运行在硬件上的。所以这三者关系如图。
再来看看内核的定义:
“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。
简单来说,内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。
内核就是操作系统背后 黑盒的核心。
这时候我们回过头来看看操作系统和内核的定义,是不是有些明白了呢。
内核的分类
既然我们知道了内核是什么,接着来看看内核的分类,现在内核的主要分类有四类:
宏内核(单内核),微内核,混合内核,外内核。
什么是宏内核
我们上面说到,内核管理着操作系统的内存,文件,IO,网络等等,每个功能可以看做一个模块,在宏内核中,这些模块都是集成在一起的,运行在内核进程中,模块之间的交互直接通过方法调用。
什么是微内核
而在微内核中,内核只提供最核心的功能,比如任务调度,内存管理等等,其他模块被移出内核,运行在不同的进程中,这样即使某一个模块出现问题,只要重启这个模块的进程即可,不会影响到其他模块,稳定性大大增加。甚至可以在系统运行过程中替换现有模块的实现。而且由于模块独立的性质,可以做到模块的按需加载。但是模块间的相互调用需要通过进程间通信,通信效率相对较低。
什么是混合内核
我们上面看了宏内核和微内核的实现,就会发现,两者各有千秋,也各有缺点,所以混合内核就是集中了两者的特点,让微内核中的一些核心模块运行在内核中,从而使内核效率更高一些。
什么是外内核
外内核是把硬件暴露给应用程序,应用程序可以直接访问硬件,外内核对系统提供保护。目前还在研究阶段。
宏内核 微内核对比
看了上述宏内核和微内核的实现,我们可以总结一下:宏内核最大的特点就是模块集成在一起,而微内核是模块间分离。基于此点出发,对比如下:
宏内核 | 微内核 | |
---|---|---|
通信效率 | 高(函数调用) | 低(进程间通信) |
稳定性 | 低(模块集成在一起) | 高(模块间互不影响) |
扩展性 | 低(模块集成在一起) | 高(模块间互不影响) |
代码量 | 多(需要实现所有模块) | 少(只需要实现核心功能) |
当前主流操作系统内核
宏内核
Linux
Windows 9X 系列
MacOS 8.6 版本之前
微内核
Fuchsia
鸿蒙
Minix
混合内核
Windows XP
Windows 7
Mac OS X
XNU
外内核
Nemesis
参考资料
https://zh.wikipedia.org/wiki…
https://www.cnblogs.com/smwik…
https://zh.wikipedia.org/wiki…
https://www.oschina.net/news/…