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