内核
计算机是由各种外部硬件设备组成的,比如内存、CPU、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只关心与内核交互,不用关心硬件的细节。
现代操作系统内核一般会提供4个基本能力:
- 管理进程、线程,决定哪个进程、线程使用CPU,也就是进程调度能力
- 管理内存,决定内存的分配和回收,也就是内存管理的能力
- 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力
- 提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要由系统调用,它是用户程序和操作系统之间的接口。
内核如何工作?
内核具有很高的权限,可以控制cpu、内存、硬盘等硬件,而应用程序具有的权限很小,因此大多数操作系统,把内存分成了两个区域:
- 内核空间,这个内存空间只有内核程序可以访问
- 用户空间,这个内存空间专门给应用程序使用
用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有的内存空间。因此,当程序使用用户空间时,我们常说该程序在用户态执行,而