Linux环境编程–08 CPU调度

  • Post author:
  • Post category:linux


1. 思考点

1.  多核处理器“同一时刻”能运行几个进程?多核处理器如何进行cpu调度的。

2.

2.  CPU调度

1. 目的是使CPU执行更多的指令,提高CPU效率。

2. 因为进程间存在竞争,需要操作系统选择进程进行转换。

3. 操作系统为了方便cpu调度,为进程的不同状态进行组织管理。为某些特定的状态设立一个或多个进程队列,用于管理内存。如就绪队列、设备队列。所有设备队列中进程都是等待状态。

3. CPU调度方式

1. 长程调度

道:允许在内存中运行的最多进程数。

新建状态的进程,一般首先放到外存进程池中,当内存中的进程数量没有达到最多进程数时,操作系统的调度程序从新建状态选择一个装入内存,并转换为就绪状态。这种从“新建状态”转换为”就绪状态“的操作就是长程调度,又称为作业调度或高级调度。

2. 中程调度(交换)

本质上不属实进程管理内存,应该属于内存管理。中程调度是指,一个进程在内存和外存之间的换进换出,目的是为了节省内存。一个进程在内存长期不运行时,会造成内存浪费。

3. 短程调度

又称为CPU调度或低级调度。就绪队列中不止一个进程,cpu空闲时,操作系统选择一个进程让他执行。

4. 长程调度对比短程调度

切换频率看:长程调度频率低、速度慢,短程调度频率高、速度快。进程生命周期中,只有一次长程调度,成千上万次短程调度。

切换开销看:长程调度开销大,短程调度开销小。长程调度需要把代码从外存调到内存,这些IO操作很费时。

4. cpu调度的部件

1. 调度程序

依据某种策略,选择内存中的一个就绪进程。

2. 分配程序

负责具体的进程切换工作。

3. 具体过程:

a. 利用定时器把cpu的控制权转交给cpu调度程序,让调度程序选择一个需要运行的进程。

b. 进行进程上下文切换,把该进程从就绪状态转换为运行状态

c. 系统切换到用户态,跳转到用户程序的适当位置并重新运行之

4. 分配延迟:分配程序终止一个进程,并运行另一个进程的时间开销。

5. cpu调度的两种方式

1. 非抢占式调度

系统把cpu分配给某进程后,系统不可以抢占已分配的cpu分配给其他进程,只有进程自愿释放cpu,才可以把cpu分配给其他进程。

优点:易实现、开销小、适合批处理系统。缺点响应时间比较长,不适合交互式系统。

2. 抢占式调度

系统根据某种原则暂停某个正在运行的进程,将已分配的CPU,重新分配给另外一个进程。

可防止单一进程长时间占用CPU,但系统开销大。

6. CPU调度的目标和衡量指标

1. CPU调度核心任务是提供CPU的效率,也就是利用率。

2.  CPU利用率:固定时间内CPU利用的比例。

3. 吞吐量:指单位时间内运行完的进程数。(理解一下,是数量,不考虑进程运行时间有长有短)

4. 周转时间:进程从提交到运行结束的全部时间。

5. 等待时间:进程等待调度(不运行)的时间片总和。(理解等待时间:是不连续、分段的)

6. 响应时间:从进程提交到首次运行(不是到进程结束)的时间段。也就是第一段等待时间。

7. 运行时间:进程运行的时间片总和。

8. 周转时间 = 运行时间+等待时间

9. CPU调度目标:最大的CPU利用率、最大的吞吐量、最短的周转时间、最短的等待时间、最短的响应时间;关键在于调度算法。



版权声明:本文为leiqiangq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。