进程调度的任务、机制和方式
1.进程调度的任务
1)保存处理机的现场信息(程序计数器、多个通用寄存器的内容)
2)按某种算法选取进程
3)把处理器分配给进程
2.进程调度的机制
为了实现进程调度应该具有三个部分
1)排队器。将系统中的所有就绪进程按照一定的策略排成一个或者多个对列。每当有一个进程转换成就绪进程时就将其插入到就绪队列中。
2)分派器。根据进程调度程序选定的进程,将其从就绪队列中选出,然后进程从分派器到新选出进程间的上下文切换,将处理机分配给新选出的进程。
3)上下文切换器。1.os将保存当前进程的上下文,即当当前进程的处理剂存储器内容保存到该进程相应的进程控制块内的相应的单元中,再装入分配程序的上下文,以便程把序的运行2.第二对上下文切换是移出分派程序的上下文,而把新进程的CPU现场信息装入到处理机的各个相应的寄存器中,以便新程序的运行
在进行上下文的切换时会执行大量的load和store等操作指令,来保存寄存器的内容
3.进程的调度方式
1)非抢占方式
一旦把处理机分配给某进程时就一直让他运行下去
2)抢占方式
暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程
原则
1.优先原则(优先级高的)
2.短进程优先
3.时间片原则 (正在执行的时间片执行完后 再进行重新的分配)
调度算法
轮转时间片(RR)
在分时操作系统中,最简单最常用的分配算法
系统根据FCFS,将就绪进程排成一个就绪队列
进程切换的时机
1)一个时间片尚未用完,正在运行的进程执行完毕,就立即激活调度程序,将其从就绪队列中删除,在调度队首的进程运行,并启动一个新的时间片
2)在一个时间片用完时,计时器中断处理程序被激活。如果程序尚未运行完毕,调度程序将把他送到就绪队列的末尾
优先级调度算法
多队列调度算法
多队列调度算法由于设置多个就绪队列,因此每个队列可以执行不同的调度算法
再多处理机系统中 每个处理机的调度可以执行不同的调度策略,而且对于一个含有多个线程的进程而言,可以根据其要求将所有的线程分配在一个就需队列,全部在一个处理机上运行
最早截止时间优先(EDF)
任务的截止时间越早,其优先级就越高,具有最早时间的任务排在队列的队首
分为两种
非抢占方式调度方式用于非周期实时任务(一个任务开始执行后就执行完中途不会发生切换)
抢占方式调度算法用于周期实时任务
如果正在执行一个任务又来了一个任务,新来的任务的周期短并且紧迫就会切换任务
最低松弛度优先(LLF)