📂 操作系统 - Operating System / Chapter II 虚拟化 / Section 1 CPU虚拟化 / 1-2 机制:受限直接执行

受限直接执行

2026-05-09
#OS
  • 受限直接执行协议

    • 为了使程序尽可能快地运行,OS使用了“受限直接执行(Limited Direct Execution)”的技术,其分为“直接执行”和“受限”两部分
  • 直接执行

    • 意义
      • 意为“直接在CPU上运行程序
    • 操作
      1. 当OS希望某个程序运行时,它会在进程列表内为其创建一个进程条目,给它分配一些内存,将程序代码从磁盘加载到内存里,找到程序入口(main函数等),然后从那里开始运行代码
      2. 在这个程序运行的时间片内,CPU直接在用户态下执行该程序的指令,获得极高的执行效率
  • 受限

    • 意义
      • 由于磁盘I/O、网卡I/O或申请更多资源(如CPU、内存) 等操作过于危险,它们不能被用户程序直接执行,而是需要操作系统代理它们执行
    • 如何执行受限的操作
      • 方法:采用受保护的控制权转移
      • 前置科技树:
        • 处理器模式
          • 处理器有两种特权级别
            • 用户模式(User Mode)
              • 用户模式下代码会受到限制,例如不能发出IO请求,否则可能会遭到终止
            • 内核模式(Kernel Mode)
              • 操作系统(或内核) 就是在内核模式下运行的
        • 陷阱表(Trap Table)
          • 操作系统在启动时初始化陷阱表,将各种中断、异常、系统调用等对应的处理代码关联起来,并告知CPU该表的位置
          • 建立了操作系统处理每个特权事件的入口映射(类似键值对),也就是中断描述符表(IDT)
            • 陷阱指令:触发入口映射过程的指令(如INT 0x80)
            • 中断向量号:映射的索引(自变量、键)(如0x80)
            • 入口映射:从中断向量号映射到处理程序地址数据结构
            • 处理程序:最终从陷阱命令联系到的处理程序(值)
      • 受保护的控制权转移如何操作
        1. 用户程序需要通过系统调用来进行受限制的操作
        2. 程序(用户级)需要执行一个陷阱指令,并传递系统调用编号和参数
        3. CPU响应这个陷阱指令,CPU从用户模式转为内核模式,根据陷阱表跳到预设的操作系统处理代码
        4. 内核中的操作系统执行这段代码,并将结果返回给用户程序
        5. 然后操作系统执行一个特殊的返回指令(如iret),CPU切换回用户模式,并且CPU的控制权重新给到用户程序
        6. 用户程序始终为用户级,操作系统始终为内核级,只有CPU从用户级跳到内核级再跳回用户级