kernel - Jokacer/Learn GitHub Wiki
内核(
kernel
)
决定了系统根本的样子和能力,必须完成主要的两个目标:
- 与硬件部分的交互,为包含在硬件平台上的所有低层可编程部件提供服务
- 为运行在计算机系统上的应用程序提供执行环境
程序想使用硬件资源时必须向OS发出请求,内核对这个请求做评估,在允许的情况下代表应用程序与相关硬件部分进行交互。
应用程序禁止和低层硬件部分直接交互,引入用户态(User Mode)和内核态(Kernel Mode)使得应用进程可以通过内核态进行硬件资源请求。如此做的优点是
- 将用户从硬件设备编程中解放
- 由内核检查请求的正确性来提高系统的安全性
- 使程序具有可移植性。
内核作为进程管理者,请求内核服务的进程使用系统调用(System call)完成用户态到内核态的转换,除此之外还可以通过发出异常信号、发出中断信号、内核线程被执行来激活内核例程
内核线程(kernel thread)具有以下特点:
- 以内核态运行在内核地址空间
- 不与用户直接交互,因此不需要终端设备
- 通常在系统启动时创建,活跃到系统关闭