进程调度与线程
进程调度
进程调度即处理机调度,就是按照某种算法动态地把处理机分配给就绪队列中的一个进程,使之执行。
进程调度的基本概念
一个进程从提交开始到完成,需要经历三级调度
- 高级调度: 决定哪些在外存上处于后备状态的作业调入主机内存,准备执行
- 低级调度:又叫进程调度,决定就绪队列中的哪个进程将获得处理机,并实际执行将处理机分配给该进程的操作
- 中级调度:在内存和外存对换区之间进行进程对换,来解决内存紧张问题
下面是一个简单地排队调度模型
进程调度的功能
进程调度就是按照某种算法将处理机动态的分配给某一就绪进程
主要功能:
- 选择占有处理机的进程:即按照调度策略将处理机分配给一个就绪进程
- 进行进程上下文的切换::将当前执行进程的上下文保存到PCB中。刚选中的进程也需要将运行现场恢复,并将处理机控制权给选中进程,使其执行。
进程调度方式
进程调度有两种方式
- 非剥夺方式:系统不能剥夺正在运行进程的处理机资源,处理机一旦被分配给某个进程后就一直运行下去,直到进程完成或发生某事件而阻塞后才能把处理机分配给某一进程
优点:简单,系统开销小
缺点:紧急任务到达时不能立即投入运行,延误战机。 短进程必须等待长进程运行完毕,导致短进程周转时间增长。
- 剥夺方式:当一个进程运行时,系统可以基于某种原则剥夺已分配给它的处理机,将之分配给其他的进程。
剥夺原则
- 优先权原则
- 短进程优先原则
- 时间片原则:一个时间片用完后更新调度
进程调度算法
- 先进先出算法(FIFO):把处理机分配给最先进入就绪队列的进程。
易于实现,但服务质量不佳,容易引起进程不满。
-
最短处理机运行期优先调度算法(短进程优先):从就绪队列中选出下一个处理机执行期最短的进程,为之分配处理机。
-
最高响应比优先调度算法:非剥夺调度算法
响应比计算公式:
响
应
比
=
(
等
待
时
间
+
要
求
服
务
的
时
间
)
/
要
求
服
务
的
时
间
响应比 = (等待时间+要求服务的时间)/要求服务的时间
响应比=(等待时间+要求服务的时间)/要求服务的时间
- 优先级调度算法
两种优先级:
-
静态优先级。在进程创建时就确定
决定优先级的依据:
- 进程的类型
- 进程对资源的需求
- 用户申请的优先级
-
动态优先级:进程在开始创建时,根据某种原则确定一个优先级后,随着进程执行时间的变化,其优先级不断地进行动态调整。
-
时间片轮转调度算法
-
前后台调度算法
-
多级反馈队列轮转算法
进程调度的时机
- 正在执行的程序运行完毕
- 正在执行的进程调用阻塞原语将自己阻塞起来进入等待状态
- 在采用抢占优先级调度时,有优先级高于正在运行进程的进程进入就绪队列
- 在分时系统中时间片已经用完
线程
❓为什么要引入线程?
为了减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性。
线程的定义
在引入线程的操作系统中,线程是进程的一个实体,是被独立调度和分派的基本单位。
线程自己基本上不拥有系统资源,只有一点在运行时必不可少的资源。
一个线程可以共享同属一个线程的进程的其他线程共享进程所拥有的全部资源。
一个线程可以创建和撤销另一个线程。
同一进程中的多个线程之间可以并发执行。
线程的属性
- 每个线程都有一个唯一的标识符和一张线程描述表,线程描述表记录了线程执行的寄存器和栈等现场状态。
- 不同的线程可以执行相同的程序,同一个服务进程被不同用户调用时操作系统为他们创建成不同的线程。
- 统一进程中的各个线程共享该进程的内存地址空间。
- 线程是处理机的独立调度单位,多个线程是可以并发执行的。
- 一个线程被创建后便开始了它的生命周期,直至终止。
引入线程的好处
- 创建一个新线程花费时间少
- 两个线程的切换花费时间少
- 线程之间互相通信无需调用内核,不需要额外的通信机制,通信更简便,信息传送速度也快
- 线程能独立执行,能充分利用和发挥处理机与外围设备并行工作的能力
** 学习资料 操作系统 第四版 刘振鹏 张明 王煜著 **