1 术语补充
1.1 特级权
对于一个操作系统来说,创建一个进程是核心功能。创建进程有很多的工作,会消耗很多的物理资源。比如分配物理内存,父子信息拷贝等,这些都需要特定的进程去做,这样就有了特级权的概念。最关键的工作需要交到特级权最大的进程进行集中管理,减少有限资源的访问和冲突。inter x86架构的cpu一共有四个级别,0-3级,0级特权级最高,3级特权级最低。
1.2 用户态和内核态
当一个进程再执行用户自己的代码时候处于用户运行态(用户态),此时特权最低,为3级。是普通的用户进程运行的特权级,大部分用户直接面对的程序是运行再用户态。Ring3状态不能访问Ring0的地址空间,包括代码和数据;当一个进程因为系统调用陷入内代码中执行处于内核运行态(内核态),此时特权级最高为0级。执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。
用户调用一个程序,该程序创建的进程开始时候会运行自己的代码,处于用户态。如果要执行文件操作、网络数据发送操作必须通过write\send等系统的调用,这些系统调用会调用内核的代码。进程会切换到Ring0,然后进入3G-4G的内核地址空间去执行内核代码来完成相应的操作。内核态的进程执行完后又切换到Ring3,回到用户态。这样,用户态的进程就不能随意操作内核地址空间,具有一定的安全保护作用。这说的保护