一、内核

作为应用和硬件设备之间的桥梁,负责应用程序只与内核交互,不用关心硬件的细节。

4 个基本能力:

  • 管理进程、线程,决定哪个进程、线程使用 CPU,也就是进程调度的能力;
  • 管理内存,决定内存的分配和回收,也就是内存管理的能力;
  • 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力;
  • 提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。

内核如何工作?

内存分为内核空间、用户空间。

内核空间:只有内核程序可以访问;

用户空间:专门给应用程序使用。

应用程序如果需要进入内核空间,就需要通过系统调用,下面来看看系统调用的过程:

用户程序使用系统调用时,会发生中断,CPU会中断用户程序,转而跳到中断处理程序也就开始执行内核程序,内核程序处理完毕后主动触发中断,CPU继续执行用户程序。

 

二、LINUX系统与WINDOWS系统的区别

对于内核的架构一般有这三种类型:

  • 宏内核,包含多个模块,整个内核像一个完整的程序;
  • 微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
  • 混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序;

Linux 的内核设计是采用了宏内核,Window 的内核设计则是采用了混合内核。

这两个操作系统的可执行文件格式也不一样, Linux 可执行文件格式叫作 ELF,Windows 可执行文件格式叫作 PE。