什么是上下文切换

简介:

原文:http://www.wisegeek.com/what-is-context-switching.htm     译者:郭蕾 校对:方腾飞

支持多任务处理是CPU设计史上最大的跨越之一。在计算机中,多任务处理是指同时运行两个或多个程序。从使用者的角度来看,这看起来并不复杂或者难以实现,但是它确实是计算机设计史上一次大的飞跃。在多任务处理系统中,CPU需要处理所有程序的操作,当用户来回切换它们时,需要记录这些程序执行到哪里。上下文切换就是这样一个过程,他允许CPU记录并恢复各种正在运行程序的状态,使它能够完成切换操作。

在上下文切换过程中,CPU会停止处理当前运行的程序,并保存当前程序运行的具体位置以便之后继续运行。从这个角度来看,上下文切换有点像我们同时阅读几本书,在来回切换书本的同时我们需要记住每本书当前读到的页码。在程序中,上下文切换过程中的“页码”信息是保存在进程控制块(PCB)中的。PCB还经常被称作“切换桢”(switchframe)。“页码”信息会一直保存到CPU的内存中,直到他们被再次使用。

在三种情况下可能会发生上下文切换:中断处理,多任务处理,用户态切换。在中断处理中,其他程序”打断”了当前正在运行的程序。当CPU接收到中断请求时,会在正在运行的程序和发起中断请求的程序之间进行一次上下文切换。在多任务处理中,CPU会在不同程序之间来回切换,每个程序都有相应的处理时间片,CPU在两个时间片的间隔中进行上下文切换。对于一些操作系统,当进行用户态切换时也会进行一次上下文切换,虽然这不是必须的。

操作系统或者计算机硬件都支持上下文切换。一些现代操作系统通过系统本身来控制上下文切换,整个切换过程中并不依赖于硬件的支持,这样做可以让操作系统保存更多的上下文切换信息(译者注:软件可以更有选择性的保存需要保存的部分)。 

目录
相关文章
|
7月前
|
算法 Linux 调度
每日一道面试题之什么是上下文切换?
每日一道面试题之什么是上下文切换?
|
11天前
|
算法 调度
3.处理机调度与死锁
3.处理机调度与死锁
|
3月前
|
存储 Linux 调度
进程优先级与进程调度
进程优先级与进程调度
进程优先级与进程调度
|
4月前
|
缓存 算法 Java
Java线程面试题:什么是线程上下文切换?为什么要减少上下文切换?
Java线程面试题:什么是线程上下文切换?为什么要减少上下文切换?
24 0
|
9月前
|
存储 调度
关于进程与进程调度
关于进程与进程调度
35 0
|
9月前
|
算法 调度 Windows
进程调度
进程调度
80 0
|
SQL 分布式计算 资源调度
并发编程1-上下文切换和死锁
并发编程1-上下文切换和死锁
54 0
|
缓存
关于多核 CPU 自旋锁 (spinlock) 的优化
CPU的总线为铜薄膜,虽然摩尔定律使单位面积晶体管的密度不断增加,但是对于连接导线的电阻却没有明显的下降,导线的RC延迟几乎决定现有CPU性能,因此我们会看到传输数据在CPU的角度来看是个极为沉重的负担。我们看到intel 为了引入更多的CPU核心,从Skylake开始芯片总线由上一代的 ring-bus 转变为 2D-mesh, 虽然2D-mesh为数据提供了更多的迁移路径减少了数据堵塞,但也同
10608 0
|
Linux 调度
系统调用,上下文切换及中断概念的汇总
       仔细揣摩了一段时间.        系统调用过程,用户进程进入内核态,进程栈进入内核态栈, cpu进入内核态,cpu用户态各寄存器的值保存到内核态栈,执行内核态代码. 执行完从内核态返回到用户态,包括进程栈返回到用户态栈,cpu返回到用户态,cpu各寄存器的值用之前保存在内核态栈的值还原.  内核在执行系统调用时处于进程上下文中,current指针指向当前进程,即引发系统调用的进程。
2597 0