知道程序员在编写程序时直接和硬件打交道是一件非常麻烦的事,同时不受保障的程序直接运行在硬件上如果出错可能造成计算机宕机,于是可以编写一个应用程序驻留在计算机上管理硬件资源为上层应用提供系统调用(syscall),不允许上层应用随意访问硬件资源,这就是 内核(内核的健壮性往往比其它应用程序要高)
Syscall
可以知道的是用户程序(上层应用)需要一些硬件资源的时候使用 syscall
,陷入内核并执行内核的相关函数完成目的,除了主动陷入还有中断,由处理器硬件处理。
用户空间和系统空间

无论对于32位还是64位操作系统,程序看到的都是虚拟地址,复杂的系统映射从虚拟地址到物理地址由 MMU
硬件转化。显而易见的是用户空间共享一个系统空间,因为创建一个新的进程时重新复制一份系统空间没有意义。
用户态和内核态
- 用户态就是进程运行在用户空间上。
- 内核态就是进程运行在系统空间上。
一个有意思的比喻是将内核看作神,用户程序看作人,syscall
看作祭祀什么的人与神的交流方式。系统调用的过程就是
赞美jyy