简介

  1. 调度究竟想干什么?
  2. 调度的时机是什么?操作系统在什么时候会发生调度?
  3. 如何合理选择下一个进程?
  4. 什么是进程上下文?进程上下文包含哪些内容?
  5. 进程上下文保存到哪里?
  6. 什么是中断现场?中断现场需要保存哪些内容?
  7. 中断现场保存在什么地方?
  8. 进程切换时候究竟需要切换哪些东西?
  9. 站在CPU角度,进程切换时候,CPU会区分谁是prev进程,谁是next进程?
  10. 假设next进程和prev进程都是用户进程,当prev进程切换到next进程后,next进程执行的下一条语句是什么?是next进程在用户空间被打断的那条指令吗?
  11. 假设prev进程正在执行时发生了时钟中断,然后发生了进程切换,切换到next进程,那么这个时钟中断的中断现场会在什么时候恢复?
  12. 假设prev进程在时钟中断驱动下发生了进程切换,并选择next进程是新创建的进程,那么新创建进程从哪里开始执行?
  13. 接上题,由于时钟中断处理是在关中断下进行的,若新创建的进程一直在loop里执行,那么是不是系统就一直没办法再一次响应时钟中断,导致系统一直运行这个新创建的进程?
  14. 在中断处理函数中,能不能直接调用schedule()函数?为什么?
  15. 小明同学在raw_local_irq_disable()函数后直接调用schedule()函数,若调度器选择了的next进程是一个loop执行的进程,那是不是系统就不能响应时钟中断,从而瘫痪了?
  16. 为什么switch_to()函数有3个参数?prev和next就够了,为何还需要last?

本篇文章需要解答上面16个问题。

解答

调度究竟想干什么?

参考资料

灵魂拷问之调度与切换十六问