上下文切换、中断


上下文切换:线程之间切来切去叫上下文切换。上下文切换给我们的错觉就是好像很多人在同时处理(线程特别多,上下文消耗cpu资源也很多)

举例:

在任何一个时刻,一个核能处理一个任务,但给我们的感觉是cpu处理了好多事情,没感觉到排队。在听歌同时可以聊天可以做别的事情。那cpu是怎么做到的?

假设你有很多任务,cpu是通过时间片的策略来照顾到很多任务。为每个任务分配一个时间片。如一个分配0.1s,一个分配0.3s,不会把a的事情处理完了才去处理b的事情,只是在a上消耗了0.1s时间,如果没处理完我会保存下来当前的状态。然后再去处理别人的事情,等我处理完了,在回来接着刚才的事情继续。cpu处理速度非常快,一个事几毫秒就处理完了,几毫秒人是感觉不到的。1s时间cpu可能处理了好多事情,在这些事情之间切来切去。切换的时候要保存下当前状态的信息,这个信息就叫上下文。处理完别的事情再回来的时候,要不他之前保存的信息再提取出来,接着处理。

上下文切换可以减少但不可以避免,dos操作系统可以没有上下文切换

只有单进程单线程的系统才不需要上下文切换。这种操作系统目前是没有的。

中断

正在上课的时候有人敲门。去开门,就需要先记录下来讲课的地方,敲门对我来说就是一次中断。

cpu处理事情会有优先级,需要先处理的。鼠标和键盘的优先级是最高的,这两个事情做的时候可以不排队。所以鼠标和键盘动一次就是一次中断。中断一般是硬件发出的。

硬件中断是不能避免的。

通过一次上下文切换来完成一次中断。

中断会导致上下文切换。上下文切换不是都是中断引起的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM