绝大部分系统内核函数都会调用SwapContext函数,来实现线程的切换,那么这种切换是线程主动调用的。

如何中断一个正在执行的程序?

  1. 异常 比如缺页,或者INT N指令
  2. 中断 比如时钟中断


系统时钟

  • Windows系列操作系统: 10-20毫秒
  • 如要获取当前的时钟间隔值,可使用Win32API:
    GetSystemTimeAdjustment


ida中ALT+T搜索_IDT 点进去

这个api就是0x30,追进去

这两个api不是当前模块的是HAL.dll中的,下面来打开它


跟到里面又发现一个不是hal.dll中的api,它属于ntoskrnl.exe中的调来调去最终都要会到ntoskrnl。


KiDispatchInterrupt中调用了SwapContext,所以当触发了时钟中断也会使线程切换。

时钟中断执行流程

线程切换的几种情况:

  1. 主动调用API函数
  2. 时钟中断.
  3. 异常处理

如果一个线程不调用API,在代码中屏蔽中断(CLI指令),并且不会出现异常,那么当前线程将永久占有CPU,单核占有率 100% 2核就是50%

7.Windows线程切换_时钟中断切换相关推荐

  1. 6.windows线程切换_主动切换

    ida 分析KiSwapThread sub esp, 10h mov [esp+10h+var_4], ebx ;保存当前线程寄存器现场 mov [esp+10h+var_8], esi mov [ ...

  2. macf键与功能键切换_功能切换(功能开关或功能标志)与功能分支

    macf键与功能键切换 功能分支 如果使用分支,则表示不进行持续集成/部署/交付 ! 您可能具有很好的单元测试 代码覆盖率 ,可能正在执行TDD ,可能已经以BDD格式编写了功能和集成测试,并且可能在 ...

  3. python版本切换_怎么切换python版本

    展开全部 (1)分别安2113装 python-2.7.12.amd64.msi python-3.5.2-amd64.exe (python官网下载的) 顺序无所谓(为5261了看着4102方便,我 ...

  4. java中英文切换_中英文切换

    //首页 var zh_index = { "index1":"首页", "index2":"产品实例" }; var ...

  5. (62)时钟中断切换线程,时间片管理, KiDispatchInterrupt

    一.回顾 前面的课程,我们分析了API主动切换线程的流程,分析了 KiSwapContext 和 SwapContext 函数,这两个是切换线程的函数.分析了 KiSwapThread 函数,功能是找 ...

  6. 进程线程004 Windows线程切换的三种方式

    文章目录 主动切换(调用API) KiSwapContext函数分析 哪些API调用了SwapContext函数 总结 时钟中断切换 如何中断一个正在执行的程序 系统时钟 时钟中断的执行流程 总结 时 ...

  7. 9.Windows线程切换_TSS

    SwapContext这个函数是Windows线程切换的核心,无论是主动切换还,是系统时钟导致的线程切换,最终都会调用这个函数. 在这个函数中除了切换堆栈以外,还做了很多其他的事情,了解这些细节对我们 ...

  8. java实现windows壁纸自动下载与切换

    壁纸风波 许多有内涵的朋友都喜欢将自己的电脑桌面壁纸设置为美女图片,并且隔一段时间,自动更换,看起来十分炫酷.的确,用过windows的朋友们都知道,windows的个性化设置里面,可以将壁纸设置幻灯 ...

  9. 解决Windows对JDK默认版本切换问题

    解决Windows对JDK默认版本切换问题 参考文章: (1)解决Windows对JDK默认版本切换问题 (2)https://www.cnblogs.com/ll409546297/p/659317 ...

最新文章

  1. rabbitmq 网络分区错误
  2. 新手理解的JS原型链
  3. 如何迁移开源 Flink 任务到实时计算Flink版?实战手册来帮忙!
  4. Swift中文教程(十二) 下标
  5. 分布式SQL学习总结(1)——蚂蚁金服资深总监韩鸿源:像使用集中式数据库一样使用OceanBase分布式数据库
  6. 我的java学习之旅班刊_我的java学习路程
  7. JDK17 带来什么新特性?网友:不好意思,我还在JDK6踏步走...
  8. 查看谁连接oracle,oracle如何查看当前有哪些用户连接到数据库
  9. 必备技能!聊聊二维码扫码登录的原理
  10. 什么是工业DTU?工业DTU特点及应用领域分析
  11. 支付宝扫一扫连接WIFI
  12. C0G(NP0) 电容的耐压测试
  13. pands 画图 调整大小_关于cad画图比例,图纸比例,打印比例问题详解
  14. C++数据结构课程设计
  15. C++ 类的交叉引用
  16. mysql xpath注入工具_WEB安全第四篇--与数据库的亲密接触:SQL注入攻击
  17. C C++ 调用第三方DLL库失败 LoadLibrary 返回NULL 并报 126 错误 解决办法
  18. 2021年Java工程师飞升成神之路
  19. 100道Java并发和多线程面试题
  20. 2020 BAPC Preliminaries 题解

热门文章

  1. WSL:WSL(Windows Subsystem for Linux)的简介、安装、使用方法之详细攻略
  2. ML之XGBoost:XGBoost案例应用实战(原生接口实现+Scikit-learn接口实现)
  3. DL之pix2pix(cGAN)之AC:基于pix2pix(cGAN)模型实现对图像实现Auto Color自动上色技术
  4. 成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2(二)
  5. 快速认识网络爬虫与Scrapy网络爬虫框架
  6. Xshell-密钥登录
  7. session 重写进入redis测试
  8. JSP中内置对象pageContent的使用
  9. 0523-学习进度条
  10. css3 点击爆炸下落