概念
CPU 指令集是 CPU 实现软件指挥硬件执行的媒介,是 CPU 能够直接识别的二进制格式代码(为了便于编写和阅读,出现了字符格式的代码即汇编,汇编语句通过编译就可以转成二进制的代码供 CPU 运行)。非常非常多的 CPU 指令在一起,可以组成一个、甚至多个集合,指令的集合叫 CPU 指令集。
指令集权限
CPU 指令集是有权限分级。 CPU 指令集可以直接操作硬件的,如果因为指令操作的不规范,造成的错误会影响整个计算机系统的。例如 硬件的操作非常复杂,参数众多,出问题的几率大,必须谨慎的进行操作,给开发人员带来巨大的心智负担,因此非硬件开发人员在这方面不被信任。操作系统通过内核直接屏蔽了非硬件开发人员对硬件的操作,不允许直接使用这些 CPU 指令集。
针对上面的需求,硬件设备商直接提供硬件级别的支持,做法就是对 CPU 指令集设置了权限,不同级别权限能使用的 CPU 指令集是有限的。
- Intel 的 CPU 把 CPU 指令集 操作的权限由高到低划为4级:ring 0、ring 1、ring 2、ring 3。其中 ring 0 权限最高,可以使用所有 CPU 指令集;ring 3 权限最低,仅能使用常规 CPU 指令集,不能使用操作硬件资源的 CPU 指令集,比如 I/O 读写、网卡访问、申请内存都不行。
- 在Linux系统中,仅采用ring 0 和 ring 3 这2个权限。