Monolithic Kernel
Monolithic Kernel 的意思是宏内核,Linux 内核架构就是宏内核,意味着 Linux 的内核是一个完整的可执行程序,且拥有最高的权限。
宏内核的特征是系统内核的所有模块,比如进程调度、内存管理、文件系统、设备驱动等,都运行在内核态。
不过,Linux 也实现了动态加载内核模块的功能,例如大部分设备驱动是以可加载模块的形式存在的,与内核其他模块解藕,让驱动开发和驱动加载更为方便、灵活。
与宏内核相反的是微内核,微内核架构的内核只保留最基本的能力,比如进程调度、虚拟机内存、中断等,把一些应用放到了用户空间,比如驱动程序、文件系统等。这样服务与服务之间是隔离的,单个服务出现故障或者完全攻击,也不会导致整个操作系统挂掉,提高了操作系统的稳定性和可靠性。
微内核内核功能少,可移植性高,相比宏内核有一点不好的地方在于,由于驱动程序不在内核中,而且驱动程序一般会频繁调用底层能力的,于是驱动和硬件设备交互就需要频繁切换到内核态,这样会带来性能损耗。华为的鸿蒙操作系统的内核架构就是微内核。
还有一种内核叫混合类型内核,它的架构有点像微内核,内核里面会有一个最小版本的内核,然后其他模块会在这个基础上搭建,然后实现的时候会跟宏内核类似,也就是把整个内核做成一个完整的程序,大部分服务都在内核中,这就像是宏内核的方式包裹着一个微内核。
Windows 内核设计
当今 Windows 7、Windows 10 使用的内核叫 Windows NT,NT 全称叫 New Technology。
下图是 Windows NT 的结构图片:
Windows 和 Linux 一样,同样支持 MultiTask 和 SMP,但不同的是,Window 的内核设计是混合型内核,在上图你可以看到内核中有一个 MicroKernel 模块,这个就是最小版本的内核,而整个内核实现是一个完整的程序,含有非常多模块。
Windows 的可执行文件的格式与 Linux 也不同,所以这两个系统的可执行文件是不可以在对方上运行的。
Windows 的可执行文件格式叫 PE,称为可移植执行文件,扩展名通常是.exe
、.dll
、.sys
等。
PE 的结构如下图所示,它与 ELF 结构有一点相似。
系统内核总结
对于内核的架构一般有这三种类型:
- 宏内核,包含多个模块,整个内核像一个完整的程序;
- 微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
- 混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序;
Linux 的内核设计是采用了宏内核,Window 的内核设计则是采用了混合内核。
这两个操作系统的可执行文件格式也不一样, Linux 可执行文件格式叫作 ELF,Windows 可执行文件格式叫作 PE。
应用对比
Windows下可以运行绝大部分的游戏,硬件厂商近乎100%的支持,linux下可直接运行的软件数量,和win比起来就是1和99的区别,选择linux的人基本不会考虑玩游戏,同时linux正期待更多硬件厂商的支持
linux安全性高,windows的漏洞、病毒、木马、后门出现频录比较高,windows放弃了dos的字符模式,主攻图形界面,让桌面系统更易用,linux字符模式运行的更好,图形界面还只是附带品。
性价比方面
Linux服务器与Windows服务器就性价比而言,Linux服务器优势是很明显的。Linux作为资源管理和操作系统来说,是开源、免费的,而正版的Windows的操作系统是收费的,因而就性价比来说Linux服务器优于Windows服务器。
性能方面
如果企业选择建站的内容和流量都不是很大的情况下,相同的配置的Linux服务器的性能比Windows服务器好一些,Linux服务器占用的资源会少一些。
稳定性方面
Windows系统是运用最广的操作系统,因而深受一些攻击者的“照顾”,其系统安全漏洞相应的会多一些。Linux是多用户多进程系统,意味着Linux能够一次性处理大量正在运行的进程,比Windows能够处理的数量要多得多。
安全性方面
Linux系统和Windows系统各自的有属于自己的安全技术,Linux的开源软件开发方式有助于暴露错误,集众人智慧解决问题,各种补丁更新得很快,这是Windows服务器不具备的优势。Windows的另一个不利因素是其许多应用程序依靠远程过程调用,这就迫使Windows的防火墙没有Linux那样严格。而Linux远程过程调用是限制使用的。