zoukankan      html  css  js  c++  java
  • 上下文切换

    https://www.cnblogs.com/emperor_zark/archive/2012/12/11/context_switch_1.html

    https://www.cnblogs.com/emperor_zark/archive/2012/12/11/context_switch_2.html

    如果某台计算机只有一个CPU的话,则在某一时刻只有一个线程可以运行。
    Windows必须跟踪记录线程对象,而且不停地跟踪记录每个线程对象。
    Windows必须决定CPU下一个次(每隔约20毫秒)调度那一个线程使其运行。
    上下文切换(Context switch):Windows使CPU停止执行一个线程的代码,而开始执行另一个线程的代码的现象,我们称之为上下文切换。
    上下文切换的开销:
    1.进入内核模式;
    2.将CPU的寄存器保存到当前正在执行的线程的内核对象中。
    注明:X86架构下CPU寄存器占了大约700字节(Byte)的空间,X64架构下CPU寄存器大约占了1024(Byte)的空间,IA64架构下CPU寄存器占了大约2500Byte的空间。
    3.需要一个自旋锁(spin lock),确定下一次调度那一个线程,然后再释放该自旋锁。
    如果下一次调度的线程属于同一个进程,哪么此处开销更大,因为OS必须先切换虚拟地址空间。
    4.把即将要运行的线程的内核对象的地址加载到CPU寄存器中。
    5.退出内核模式。


    以上节选自《框架设计》,供大家参考。

    关于Windows平台上多线程的理论上就知道这么多,但没有验证,也不知道该怎么去验证。
    Linux平台没深入学习过,各种OS的线程管理应该大同小异吧,《操作系统原理》之类的的书上也有讲过,

  • 相关阅读:
    Lodash JS实用类库 数组操作 延时执行 功能强大
    7.【nuxt起步】-Nuxt与后端数据交互
    vue图片懒加载
    猎鹰与龙飞船基于 Linux,采用 C++、Chromium 与 JS 开发
    | 和 ||,& 和 && 的区别
    Linux安装.net core
    Linux下程序后台运行:nohup和&
    vuejs如何调试代码
    全局安装 Vue cli3 和 继续使用 Vue-cli2.x
    导入sass文件
  • 原文地址:https://www.cnblogs.com/tcicy/p/10192542.html
Copyright © 2011-2022 走看看