发生进程调度的场景

发生进程调度的场景

Content #

进程在什么时候才会被调度到 CPU 上运行呢?

  1. 进程执行完终止,它之前使用的 CPU 会释放出来,这个时候再从就绪队列里,拿一个新的进程过来运行。

  2. 为了保证所有进程可以得到公平调度,CPU 时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,就会被系统挂起,切换到其它正在等待 CPU 的进程运行。

  3. 进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行,这个时候进程也会被挂起,并由系统调度其他进程运行。

  4. 当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度。

  5. 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行。

  6. 发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序。

Viewpoints #

From #

03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)