Presentation is loading. Please wait.

Presentation is loading. Please wait.

本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址:www.dtdishui.com 论坛地址:www.dtdebug.com QQ交流 :49759272.

Similar presentations


Presentation on theme: "本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址:www.dtdishui.com 论坛地址:www.dtdebug.com QQ交流 :49759272."— Presentation transcript:

1 本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :

2 内容回顾 在上一节中我们讲过了,绝大部分系统内核函数都会调用SwapContext 函数,来实现线程的切换,那么这种切换是线程主动调用的。 那如果当前的线程不去调用系统API,操作系统如何实现线程切换呢?

3 1、如何中断一个正在执行的程序? 1) 异常 比如缺页,或者INT N指令 2) 中断 比如时钟中断

4 2、系统时钟 (IDT表)中断号 IRQ 说明 0x30 IRQ0 时钟中断 Windows系列操作系统: 毫秒 如要获取当前的时钟间隔值,可使用Win32 API: GetSystemTimeAdjustment DWORD adjustment,clockInterval; BOOL adjustmentDisabled; GetSystemTimeAdjustment(&adjustment, &clockInterval, &adjustmentDisabled ); printf( "The systemclock interval is %d ms\n", clockInterval / );

5 3、时钟中断的执行流程 时钟中断执行流程: KiStartUnexpectedRange HalEndSystemInterrupt KiEndUnexpectedRange KiDispatchInterrupt KiUnexpectedInterruptTail SwapContext HalBeginSystemInterrupt

6 4、总结: 线程切换的几种情况: 1) 主动调用API函数 2) 时钟中断 3) 异常处理 如果一个线程不调用API,在代码中屏蔽中断(CLI指令),并且 不会出现异常,那么当前线程将永久占有CPU,单核占有率 100% 2核就是50%

7 5、课后练习: 《线上班》学员可见


Download ppt "本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址:www.dtdishui.com 论坛地址:www.dtdebug.com QQ交流 :49759272."

Similar presentations


Ads by Google