zoukankan      html  css  js  c++  java
  • 翻译: Context Switch Definition

        上下文切换(进程切换/Task切换)是指CPU从一个进程或线程切换到另一个。

        进程(Task)是一个正在运行着的程序。在Linux中,线程是可以并行运行并与主进程共享内存空间和其他资源的轻量级进程。

        上下文(context)是指在任意时刻CPU寄存器和程序计数器的内容。寄存器是CPU内部的速度非常快的内存单元,它通过提供对计算过程中的常用值的极速访问来提高计算速度。程序计数器是一个指向CPU指令位置的特殊寄存器,这个位置要么是指向需要执行的指令地址要么指向下一条需要执行指令的地址,取决于系统。

        上下文切换可以被描述为:系统内核在CPU上执行关于进程/线程的以下操作:(1)停止当前进程,并把它的相关状态信息存到内存的某个地方。(2)从内存里拿出下一个进程的状态信息并放入寄存器里。(3)从程序计数器里取出这个进程需要运行的指令,开始继续执行这个进程。

    Context Switches and Mode Switches

    进程切换只会发生在内核模式下。内核模式是CPU的特权模式,在这个模式下只有内核可以运行并且可以访问所有内存位置和其他系统资源。其他的程序只能运行在用户模式下,但是他们可以通过系统调用(system call)来运行内核模式中的一部分功能。系统调用是类Unix系统中正在运行进程对内核提供的服务的一个请求,比如IO或创建新进程。IO可以被认为是(CPU与主内存结合体)的任意数据转移,包括移入和移出。也就是说这个结合体与用户(如键盘输入),存储(磁盘),或其他电脑的数据转移。

        类Unix系统里的这两种模式意味着当系统调用导致CPU需要变为内核态时一个类似又简单的操作(切换)是必须的。这是模式切换而不是上下文切换,因为它没有去运行其他进程。

        上下文切换是多任务操作系统的必备属性。多任务操作系统是指多个进程执行在单个CPU上看起来像是同时运行并且不互相妨碍。这种假象是通过快速的上下文切换来完成的(每秒上千次)。

        硬件中断也会引发上下文切换,硬件中断是指硬件设备产生发出一个信号给内核,告诉内核发生了一个事件(比如键盘输入,鼠标点击,网络数据到达,系统时钟)。

        Intel80386和更高级的CPU提供了对上下文切换的硬件支持。然而大多数现代的操作系统更趋向于使用软件上下文切换,它可以在任何CPU上使用,而不使用硬件上下文切换,用于提高性能。软件上下文切换最先是在Linux2.4版本内核中实现的,用于适配Intel-compatible系列CPU。

        软件上下文切换的一个主要好处是,硬件设备保存了几乎所有的CPU状态信息,而软件可以更有选择性,只保存真正需要保存和重新加载的部分。然而问题是这种做法对提升上下文切换效率到底有多重要?它的倡议者还声称软件上下文切换提供了改进切换代码可能,从而提高效率,它可以对已经加载的数据进行更好的控制。


    The Cost of Context Switching

        上下文切换通常是加强计算的。就是说,它需要考虑处理器的时间,对每秒上千次的切换这个时间需要精确到纳秒。因此上下文切换会对系统CPU时间产生大量开销,并且可能成为系统里最大的开销。

        所以操作系统在设计时一个主要的点是怎么避免不需要的上下文切换。然而这是实践中是很难实现的。实际上,尽管上下文切换对CPU时间的开销已经下降了,单它主要通过提高CPU时钟速度而不是提高上下文切换本身。

        相比其他操作系统包括类Unix系统,Linux上下文切换和内核模式切换代价非常小。


  • 相关阅读:
    WebRTC视频分辨率设置
    WebRTC本地插入多个转发节点,模拟多节点转发,造成延迟
    Android SeekBar 自定义thumb,thumb旋转动画效果
    WebRTC从摄像头获取图片传入canvas
    WebRTC本地分享屏幕,录制屏幕
    Android 悬浮窗
    WebRTC与音频音量
    WebRTC概念介绍
    Android CameraX ImageAnalysis 获取视频帧
    Android 摄像头预览悬浮窗
  • 原文地址:https://www.cnblogs.com/superzhao/p/5147576.html
Copyright © 2011-2022 走看看