- 进程控制块队列(PCB),操作系统采用链表的方法将这些进程的PCB链接起来生成队列。
对于单CPU系统,生成的PCB队列如下。
(1)执行队列。任何时刻系统中最多只有一个进程处于执行状态。
(2)就绪队列。就绪队列中的PCB会根据某种原则进行排序,进程入队与出队的顺序与调度算法有关。
(3)阻塞队列。所有处于阻塞状态的PCB,根据阻塞的原因不同分别排队。可以有多个进程的PCB,也可以为空。
又称为低级调度。主要任务是确定什么时候进行调度(调度时机)、怎样调度(调度算法)、按什么原则进行调度(调度过程具体做些什么)。
用户把一个任务提交给计算机操作系统后,一般要经过一个三级调度的过程才能完成整个任务:高级调度、中级调度、低级调度。所有的操作系统都具有低级调度。
进程调度和进程切换是操作系统的核心程序。
我们把一个进程让出CPU,另一个进程占用CPU的过程叫做“进程切换”、“上下文切换”、“CPU场景切换”。
在单CPU操作系统中,某个进程正在处理机上执行时,另一个更为重要的进程需要优先处理。系统一般具有以下两种处理方式:
抢占式:优先级高的进程可以强行抢占CPU,特点:较高灵活性,紧急任务到达后可以抢占处理机立即进行处理,但是算法复杂。
非抢占式:不允许强行剥夺已经分配给正在执行进程的处理机。特点:简单,系统开销小,紧急任务到达后不能立即进行处理,实时性差。
在设计进程调度算法时一般要考虑:公平性、高效性、响应时间、周转时间、加权周转时间、吞吐量
常用的进程调度算法:
(1)先来先服务调度算法:以到达就绪队列的先后次序为标准来选择占用处理机的进程。到达进程的PCB总是排在就绪队列末尾,调度程序总是把CPU分配给就绪队列中第一个进程使用。
(2)时间片轮转调度算法:为就绪队列中的每一个进程分配一个称为“时间片”的时间段,他是允许一个进程连续执行的最大时间长度。经常用在分时操作系统中,时间片值应略大于大多数分时用户的询问时间。
(3)优先级调度算法:为系统中的每个进程规定一个优先级,就绪队列中具有最高优先级的进程有优先获得处理机的权利;如果几个进程的优先级相同,则采用先来先服务的方法调度。
可以从以下几方面考虑进程的优先级:根据进程的类型(系统进程>用户进程)、根据进程执行任务的重要性、根据进程程序的性质、根据对资源的要求、根据用户的请求。
(4)多级队列调度算法:它是时间片调度算法与优先级调度算法的结合。
进程调度程序应该具有以下的功能:
(1)记录系统中所有进程的有关情况
(2)确定分配处理机的算法
(3)完成处理机的分配
(4)完成处理机的回收
一旦启动程序,就要保证做完,中间不能插入其他程序的执行序列。在操作系统中,把具有这种特性的程序称为“原语”。
为了保证原语操作的不可分割性,通常总是利用屏蔽中断的方法。
原语的功能:
(1)创建进程原语
(2)撤销进程原语:收回该进程占用的资源
(3)阻塞进程原语
(4)唤醒进程原语
《操作系统实用教程》