什么是上下文切换
来源:互联网 发布:2016国民健康大数据 编辑:程序博客网 时间:2024/05/22 06:51
跟任何其他程序一样,一个任务执行时,它使用处理器的寄存器,访问RAM ROM。这些资源(处理器的寄存器,stack等)一起组成任务的执行上下文(the task execution context).一个任务是一个连续有序的代码片断。它并不知道它将何时被内核挂起或者恢复,甚至不知道这些事情(挂起或者恢复)在什么时候已经发生了。下面考查(Consider)的这个例子是用来求两个处理器中的寄存器值之和,该任务在执行1条指令后就立即被挂起。
-->任务将要执行ADD指令时,被挂起
-->先前的指令已经把数取到寄存器(Reg1,Reg2)中了,而这些寄存器(Reg1,Reg2)将要被ADD指令用到。当这个任务被恢复后,ADD就是要执行的第1条指令。这个任务不知道是否有另一个的任务会在中间时期 修改 Reg1或者Reg2)
当这个任务挂起时,其他任务继续执行,可能会修改处理器寄存器的值。在恢复之后,这个任务也不知道处理器的寄存器被修改过(altered).如果它使用这个修改过的值,就会导致计算的和的结果不正确。
为了避免这类错误,必须保证,在恢复一个任务之后,其上下文环境跟即将挂起前是一样的。操作系统内核有责任通过在任务挂起前保存其上下文来确保这种状况。当任务恢复时,保存的上下文就被操作系统内核恢复到先前的执行情况。保存一个被挂起的任务的上下文并在任务恢复时恢复其上下文的这个处理过程就叫做上下文切换(context switching)。
-->任务将要执行ADD指令时,被挂起
-->先前的指令已经把数取到寄存器(Reg1,Reg2)中了,而这些寄存器(Reg1,Reg2)将要被ADD指令用到。当这个任务被恢复后,ADD就是要执行的第1条指令。这个任务不知道是否有另一个的任务会在中间时期 修改 Reg1或者Reg2)
当这个任务挂起时,其他任务继续执行,可能会修改处理器寄存器的值。在恢复之后,这个任务也不知道处理器的寄存器被修改过(altered).如果它使用这个修改过的值,就会导致计算的和的结果不正确。
为了避免这类错误,必须保证,在恢复一个任务之后,其上下文环境跟即将挂起前是一样的。操作系统内核有责任通过在任务挂起前保存其上下文来确保这种状况。当任务恢复时,保存的上下文就被操作系统内核恢复到先前的执行情况。保存一个被挂起的任务的上下文并在任务恢复时恢复其上下文的这个处理过程就叫做上下文切换(context switching)。
- 什么是上下文切换
- 上下文切换
- 上下文切换
- 切换上下文
- 上下文切换
- 上下文切换
- 上下文切换
- 上下文切换
- 上下文切换
- 上下文切换
- 上下文切换
- 上下文切换
- 什么是进程上下文,什么是中断上下文
- 什么是进程上下文,什么是中断上下文
- 什么是进程上下文,什么是中断上下文
- 什么是进程上下文,什么是中断上下文
- 什么是进程上下文,什么是中断上下文
- 什么是进程上下文,什么是中断上下文
- 读《雷军:创业成功八成靠运气》一文有感
- Android游戏引擎----转自CSDN(备份用)
- 有关Windows版本的宏
- 获得iframes的html代码
- 在做一些和结构体有关的指针、函数参数的数据结构时遇到的一些问题
- 什么是上下文切换
- 用JavaScript转中文字符为Unicode编码
- sql helper
- MD5算法MFC实现
- zencart rss 问题
- 新版Linux内核利用谷歌的新技术
- java中读取UTF-8文件时有时会出现第一行乱码问题
- 有感年轻人 20100805
- sql server 字符转换