Cracking the coding interview--Q18.2
来源:互联网 发布:linux怎样安装压缩文件 编辑:程序博客网 时间:2024/06/04 00:43
题目
原文:
How can you measure the time spent in a context switch?
译文:
怎样计算上下文切换的时间?
解答
上下文切换(有时也称为进程切换或任务切换)是指CPU 的控制权从一个进程或线程切换到另一个。
引起上下文切换的原因有哪些?
- 时间片用完,CPU正常调度下一个任务;
- 被其他优先级更高的任务抢占;
- 执行任务碰到IO阻塞,调度器挂起当前任务,切换执行下一个任务;
- 用户代码主动挂起当前任务让出CPU时间;
- 多任务抢占资源,由于没有抢到被挂起;
- 硬件中断;
P1正在执行,而P2在等待。在某个时刻,操作系统从P1切换到P2。假设此时, P1执行到第N条指令,记录时间戳Time_Stamp(P1_N),当本来在等待的P2 开始执行第1条指令,说明切换完成,记录时间戳Time_Stamp(P2_1)。因此, 上下文切换的时间为:Time_Stamp(P2_1) - Time_Stamp(P1_N)
思路非常简单。问题在于,我们如何知道上下文切换是何时发生的? 进程的切换是由操作系统的调度算法决定的。我们也无法记录进程中每个指令的时间戳。
另一个问题是:许多内核级线程也做上下文切换,而用户对于它们是没有任何控制权限的。
总而言之,我们可以认为,这最多只能是依赖于底层操作系统的近似计算。 一个近似的解法是记录一个进程结束时的时间戳,另一个进程开始的时间戳及排除等待时间。
如果所有进程总共用时为T,那么总的上下文切换时间为: T - (所有进程的等待时间和执行时间)
转自:http://hawstein.com/posts/18.2.html
---EOF---
0 0
- Cracking the coding interview--Q18.2
- Cracking the coding interview--Q18.1
- Cracking the coding interview--Q18.3
- Cracking the coding interview--Q18.4
- Cracking the coding interview--Q18.5
- Cracking the coding interview--Q18.6
- Cracking the Coding Interview
- 《Cracking the coding interview》
- Cracking The Coding Interview
- Cracking the coding interview
- Cracking the coding interview
- Cracking the coding interview Q1.2
- Cracking the Coding Interview Chap1 Q1.2
- Cracking the coding interview--Q1.2
- Cracking the coding interview--Q2.2
- Cracking the coding interview--Q3.2
- Cracking the coding interview--Q1.2
- Cracking the coding interview--Q2.2
- CONNECT_BY_ISCYCLE
- 优盘数据恢复的妙招
- eclipse new project后设置编码utf-8
- vlc-android源码git下载
- C中含位域结构体大小的计算
- Cracking the coding interview--Q18.2
- MFC框架中WM_COMMAND消息响应顺序
- 流年无罪,错的是那份遇见
- 牛刀小试(三)——java简单的支付界面
- c#操作远程注册表的两种方法
- 微信公众平台开发教程Java版(二)接口配置
- 小学生连任三年班长后落选绝食 称失败没面子
- Apache Karaf Overview 特性 了解
- window下apache与tomcat整合