第六章 受限直接执行
如何高效、可控地虚拟化CPU?
一、受限直接执行
进程的运行
- 用户运行程序时,OS创建一个进程
- OS每次选择一个进程在CPU上运行一段时间
- OS将CPU时分共享给多个进程
基本方案:直接在CPU上运行程序
- 问题一:用户可能无意/有意地写出“错误”的程序
int *i;
i=0;*i=1;
- 问题二:OS如何拿回CPU的控制权?
int i=-1;
while(i<0) do sth;
如果进程希望做一些受限制的操作怎么办?
- 申请一次对磁盘的I/O操作
- 想要获取更多的系统资源
–> 采用受保护的控制权转移
- 用户模式(用户态):Application不能访问所有Hardware资源
- 内核模式(内核态):OS可以访问机器的所有资源
二、中断和异常
- 中断和异常是事件(Event)
- 当OS启动后,所有对内核的访问都是由于事件导致的
- 内核为不同事件定义不同的处理程序
- 事件发生后,转换为内核态,并调用处理程序
- CPU如何应对事件
- 控制权交给处理程序
- 控制程序保存程序状态,执行内核功能,回复程序状态,继续执行
- 控制权交给处理程序
- OS面对事件的处理流程

说些什么吧!