之前已知Linux对进程的管理
现在看看Linux如何调度进程
1.什么是进程调度?
对于CPU来说,进程调度指的就是对CPU进行时间资源的分割管理。
2.Linux中进程调度还是在调度进程吗?
不是,Linux中进程调度的是进程,这是历史原因,得从进程线程在Linux
中的概念开始讲起。
3.Linux对进程的调度是直接调度还是间接调度?
直接调度即一级调度。直接调度的线程
4.为什么要调度?
实现多任务流畅运行。合理利用资源。
5.为何能实现进程调度?
分为为何能触发调度和为何能执行进程调度
主动调度是自己触发的,被动调度得益于中断的机制。
执行调度分为两部分:选择进程和切换进程
选择进程是纯软件的,肯定能实现。
切换进程需要硬件的支持。
6.协作式多任务指的是?
协作式多任务指的是主动调度。
7.触发调度和执行调度是同步的吗?
主动调度情况下是,被动不是。
8.进程调度的执行框架是怎样的?
- 选择进程(根据进程选择算法)
- 切换进程
- 切换用户空间(切换线程时不需要切换)
- 切换线程栈(执行栈)
9.调度器的评价标准有哪些?
- 响应性
- 吞吐量
- 公平性
- 适应性
- 节能性
10.进程如何被放入运行队列当中?
- 新建的进程: 调用select_task_rq 选择进程到哪个CPU的rq上去,然后调用active_task将进程加入到队列当中去,最后调用check_preempt_curr 检查是否需要抢占。
- 阻塞的进程:try_to_wake_up首先进行一些检测,先检测被唤醒的进程是否为当前进程,检测进程状态,然后后续与wake_up_new_task
是一样的