上下文切换:线程之间切来切去叫上下文切换。上下文切换给我们的错觉就是好像很多人在同时处理(线程特别多,上下文消耗cpu资源也很多)
举例:
在任何一个时刻,一个核能处理一个任务,但给我们的感觉是cpu处理了好多事情,没感觉到排队。在听歌同时可以聊天可以做别的事情。那cpu是怎么做到的?
假设你有很多任务,cpu是通过时间片的策略来照顾到很多任务。为每个任务分配一个时间片。如一个分配0.1s,一个分配0.3s,不会把a的事情处理完了才去处理b的事情,只是在a上消耗了0.1s时间,如果没处理完我会保存下来当前的状态。然后再去处理别人的事情,等我处理完了,在回来接着刚才的事情继续。cpu处理速度非常快,一个事几毫秒就处理完了,几毫秒人是感觉不到的。1s时间cpu可能处理了好多事情,在这些事情之间切来切去。切换的时候要保存下当前状态的信息,这个信息就叫上下文。处理完别的事情再回来的时候,要不他之前保存的信息再提取出来,接着处理。
上下文切换可以减少但不可以避免,dos操作系统可以没有上下文切换
只有单进程单线程的系统才不需要上下文切换。这种操作系统目前是没有的。
中断:
正在上课的时候有人敲门。去开门,就需要先记录下来讲课的地方,敲门对我来说就是一次中断。
cpu处理事情会有优先级,需要先处理的。鼠标和键盘的优先级是最高的,这两个事情做的时候可以不排队。所以鼠标和键盘动一次就是一次中断。中断一般是硬件发出的。
硬件中断是不能避免的。
通过一次上下文切换来完成一次中断。
中断会导致上下文切换。上下文切换不是都是中断引起的。