-
受限直接执行协议
- 为了使程序尽可能快地运行,OS使用了“受限直接执行(Limited Direct Execution)”的技术,其分为“直接执行”和“受限”两部分
-
直接执行
- 意义
- 意为“直接在CPU上运行程序”
- 操作
- 当OS希望某个程序运行时,它会在进程列表内为其创建一个进程条目,给它分配一些内存,将程序代码从磁盘加载到内存里,找到程序入口(main函数等),然后从那里开始运行代码
- 在这个程序运行的时间片内,CPU直接在用户态下执行该程序的指令,获得极高的执行效率
- 意义
-
受限
- 意义
- 由于磁盘I/O、网卡I/O或申请更多资源(如CPU、内存) 等操作过于危险,它们不能被用户程序直接执行,而是需要操作系统代理它们执行
- 如何执行受限的操作
- 方法:采用受保护的控制权转移
- 前置科技树:
- 处理器模式
- 处理器有两种特权级别:
- 用户模式(User Mode)
- 用户模式下代码会受到限制,例如不能发出IO请求,否则可能会遭到终止
- 内核模式(Kernel Mode)
- 操作系统(或内核) 就是在内核模式下运行的
- 用户模式(User Mode)
- 处理器有两种特权级别:
- 陷阱表(Trap Table)
- 操作系统在启动时会初始化陷阱表,将各种中断、异常、系统调用等与对应的处理代码关联起来,并告知CPU该表的位置,
- 建立了操作系统处理每个特权事件的入口映射(类似键值对),也就是中断描述符表(IDT)
- 陷阱指令:触发入口映射过程的指令(如INT 0x80)
- 中断向量号:映射的索引(自变量、键)(如0x80)
- 入口映射:从中断向量号映射到处理程序地址的数据结构
- 处理程序:最终从陷阱命令联系到的处理程序(值)
- 处理器模式
- 受保护的控制权转移如何操作
- 用户程序需要通过系统调用来进行受限制的操作
- 程序(用户级)需要执行一个陷阱指令,并传递系统调用编号和参数
- CPU响应这个陷阱指令,CPU从用户模式转为内核模式,根据陷阱表跳到预设的操作系统处理代码
- 内核中的操作系统执行这段代码,并将结果返回给用户程序
- 然后操作系统执行一个特殊的返回指令(如iret),CPU切换回用户模式,并且CPU的控制权重新给到用户程序
- 用户程序始终为用户级,操作系统始终为内核级,只有CPU从用户级跳到内核级再跳回用户级
- 意义
操作系统 - Operating System
/
Chapter II 虚拟化
/
Section 1 CPU虚拟化
/
1-2 机制:受限直接执行