内核是用来管理软件发出的资料 I/O 要求的程序,将这些要求转译为资料处理的指令并交由 CPU 及其他电子元件进行处理。

计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。

Untitled

现代操作系统,内核一般会提供 4 个基本能力:

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

Untitled

内核程序执行在内核态,用户程序执行在用户态。当应用程序使用系统调用时,会产生一个中断。发生中断后, CPU 会中断当前在执行的用户程序,转而跳转到中断处理程序,也就是开始执行内核程序。内核处理完后,主动触发中断,把 CPU 执行权限交回给用户程序,回到用户态继续工作。

Linux 内核设计的理念

MultiTask