操作系统的运行环境与机制

中央处理器(CPU)

处理器由运算器、控制器、一系列的寄存器以及高速缓存构成

两类寄存器

  • 用户可见寄存器:高级语言编译器通过优化算 法分配并使用之,以减少程序访问内存次数

  • 控制和状态寄存器:用于控制处理器的操作,通常由操作系统代码使用,在某种特权级别下可以访问、修改

    • 常见的控制和状态寄存器

      • 程序计数器(PC:Program Counter),记录将要取出的指令的地址

      • 指令寄存器(IR:Instruction Register),记录最近取出的指令

      • 程序状态字(PSW:Program Status Word),记录处理器的运行状态如条件码、模式、控制位等信息

操作系统的“保护”需求

  • 从操作系统的特征考虑

    • 并发、共享

  • 提出要求

    • 实现保护与控制

  • 需要硬件提供基本运行机制

    • 处理器具有特权级别,能在不同的特权级运行的不同指令集合

    • 硬件机制可将OS与用户程序隔离

处理器的状态(模式 MODE)

  • 现代处理器通常将CPU状态设计划分为两种、三种或四种

  • 在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的 CPU状态

  • 例:X86架构中的EFLAGS寄存器描述符中也设置了权限级别

操作系统需要两种CPU状态

  • 内核态(Kernel Mode):运行操作系统程序

  • 用户态(User Mode):运行用户程序

特权指令和非特权指令

  • 特权(privilege)指令:只能由操作系统使用、用户程序不能使用的指令

  • 非特权指令:用户程序可以使用的指令

实例:X86 系列处理器

  • X86支持4个处理器特权级别特权环:R0、R1、R2和R3

    • 从R0到R3,特权能力由高到低

    • R0相当于内核态;R3相当于用户态;R1和R2则 介于两者之间

    • 不同级别能够运行的指令集合不同

  • 目前大多数基于x86处理器的操作系统只用了R0和R3两个特权级别

CPU 状态之间的转换

  • 用户态 → 内核态

    • 唯一途径 → 中断/异常/陷入机制

  • 内核态 → 用户态

    • 设置程序状态字PSW

一条特殊的指令:陷入指令(又称访管(因为内核态也被称为supervisor mode,管态)指令) 提供给用户程序的接口,用于调用操作系统的功能(服务) 例如:int,trap,syscall,sysenter/sysexit

最后更新于