如果我有两个进程,为什么忙等待会避免上下文切换?为什么上下文切换比在这种情况下浪费CPU时间便宜?如果有线程而不是进程会发生什么变化?
谢谢!
答案 0 :(得分:2)
为什么忙等待会避免上下文切换
忙碌等待不避免上下文切换!上下文切换是调度程序决定将CPU提供给其他进程运行的过程。繁忙的等待是一种用于保持进程循环和等待某事的技术。即,防止两个进程同时修改某些共享数据。一个过程将循环,直到另一个过程“告诉”他已完成。这是一种错误的同步方法,因为当流程花费时间突然无效时,CPU利用率会下降。
为什么上下文切换比浪费CPU时间便宜
DEPENDS!如果关键部分的代码很短,则繁忙等待可能比上下文切换更快。进程可以忽略信号,并通过这种方式在CPU上运行,直到它自动放弃它。 注意并非所有信号都可以忽略。
如果有线程而不是进程会发生什么变化?
我担心这太难以回答了,因为这可能取决于操作系统以及操作系统是否知道线程。