CPU管理是操作系统资源管理的一个重要组成部分。CPU管理的目的是要合理、有效地调度CPU资源,满足用户的需要,提高计算机的使用效率。
CPU管理中将会涉及操作系统中最重要的概念之一:进程(Process)。
1.进程和程序
什么是进程?简单地说,进程是一个程序在一个数据集上的一次执行过程。或者说,进程是具有独立功能的程序关于某个数据集合上的一次运行活动。这个简单的定义表明以下几点。
(1)进程是一个动态过程,当一个程序存储在计算机的硬盘上时,并没有相应的进程发生。程序的存储是静态的。当在Windows环境下,双击一个程序文件名,开始执行一个程序的时候,操作系统就会发起一个相应的进程。所以进程一定会与至少一个程序发生联系。但是,在进程执行的过程中,系统有可能再启动其他的进程,来完成程序的执行。也就是说完成一个程序的执行,可以对应多个进程。
(2)进程与一定的数据有关,进程是程序的执行过程。这种执行过程必定与一定的数据相联系。执行同样的程序,但是数据不同,就对应不同的进程。
(3)进程是系统分配资源的单位,操作系统开始创建进程时,必须为该进程准备内存资源、CPU资源等。没有必要的资源,进程是不可能建立和执行的。程序执行过程中,进程的资源状态可能会随时发生变化,进程的执行状态也会发生变化。程序执行完毕,系统撤销相应的进程,并收回原来准备的各种资源。因此,进程和程序是有联系的,但是两者也有很大的不同。
·进程是程序的执行过程,是一个“动态”的概念,而程序是指令的有序集合,是存放在外存储器上的文件,是一个“静态”的概念。
·进程是程序的一次运行过程,因而它是有生命周期的,有诞生和结束。也就是说,进程的存在是暂时的,而程序的存在是永久的,只要不进行删除操作,程序就始终存放在外存储器中。
·进程需要系统分配资源才可以创建和执行,所以,不存在不使用系统资源的进程,而程序除了使用固定的存储空间外,不占用其他资源,特别是不占用处理器资源。
·进程具有并发性,计算机系统中可以有许多进程同时存在,通过操作系统的调度使得它们有序地执行,或者是分时使用计算机的资源,多个程序可以同时存放从外存中,但是它们是静态的,不存在并发性。
·程序是进程的组成部分,不存在不与程序对应的进程,也可以是多个进程对应于系统的程序(有不同的数据集)。
2.进程的描述和控制
现代计算机系统在运行时总是有多个进程存在。通过操作系统的控制,不断地对进程的执行进行切换,以达到多道程序控制或者分时控制的目的。
进程是需要系统资源的,是需要管理的。进程所分配的资源状况和相关的管理信息,在进程存在的时候都需要记录和保存。另外,在进程切换的时候,需要保存进程当前执行的状况,或者称为进程当前的状态。因此,操作系统对于每一个进程都会设置一个“进程控制块”(Process Control Block,PCB)。通过进程控制块记录与进程有关的信息,包括资源信息、管理信息和运行状态。进程控制块随着进程的创建而创建,随着进程的撤销而撤销。在进程控制块(PCB)中包含的信息有以下几类。
·进程标识,是一个进程存在的标记,可以用字符或编号表示,一般就是一个数字串。不同的进程具有不同的进程标识。
·运行信息,是一个与进程执行有关的信息,包括进程程序存放的地址,进程数据存放的地址,以及运行过程中获得的结果存放在哪些CPU的寄存器等。当进程重新执行时,就可以从上一次的结果继续执行。
·状态信息,用于说明进程执行的情况,即进程是处于哪一种运行的状态,进程一般分为运行状态、就绪状态和等待状态等三种状态,这3种状态作为进程调度时分配处理器的主要依据。(www.xing528.com)
·管理信息,用于进程调度和通信,如优先级、所用的信号量、队列指针等。
进程控制块(PCB)是操作系统进行进程控制的基础。所谓进程控制,是为了达到多个进程高效率的并发执行和相互协调、实现资源共享的目的,操作系统对进程执行过程的调度和管理,其中包括进程的创建、执行、撒销,以及完成进程各状态间的转换。对进程的控制一般包括进程的创建、进程的撒销、进程的阻塞以及进程的唤醒。
在进程的生命期内,一个进程至少有三个基本状态:就绪状态、执行状态和等待状态,它们之间的不断进行转换(见图3-4)。
·就绪状态:进程执行所需要的各种条件都已具备,只要等待系统分配中央处理器资源就可以
·运行状态:占用中央处理器,正在运行,等到所分配的处理器时间片用完,又进入就绪状态。
·等待状态:在执行过程中需要某种条件而不能满足时,进程执行不能继续进行,进入等待状态,等待某个条件(事件)的到来。进程在等待状态不需要占用处理器资源。
图3-4 进程的3个基本状态
实际中的进程控制还要更复杂一些,还会涉及进程之间的通信和配合。进程的执行往往不是孤立的,还会和其他的进程发生联系,也可能和其他进程发生资源的冲突。因此,操作系统还要为进程之间建立适当的通信机制,来解决资源使用上的冲突问题,以及进程之间的配合问题。
3.CPU调度
为了有效地执行多个进程,需要合理的调度CPU资源。CPU调度决定某个进程什么时候获得CPU资源,以及可以占用多长时间。为了合理调度CPU资源,需要有合理的CPU调度算法。常用的处理器调度算法有:先来先服务法、优先级调度算法、时间片轮转算法和分段调度算法等。
(1)先来先服务法,也称为简单排队法,它按照进程进入就绪队列的先后次序作为选择可占用CPU资源的进程的次序。
(2)优先级调度算法,优先级调度算法是为每一个进程确定一个优先级,就绪进程的队列按照优先级的高低进行排队。CPU调度选择优先级高的就绪进程先分配CPU资源,或者给优先级高的进程分配较多的使用CPU的时间。
优先级调度算法又可以分为两种。第一种是非抢占式调度。这种方式下,新进入就绪状态的高优先级进程并不抢占正在运行的进程的资源,只是在就绪队列中按照优先级进行排队;另一种是抢占式调度。这种方式下,新进入就绪队列的高优先级进程可以剥夺优先级较低的正在运行的进程的CPU资源,从而抢先占用CPU。在特别强调高优先级进程的时限式系统中(实时系统)可以考虑使用这种调度算法。
(3)时间片轮转算法,是将CPU资源按照单位时间划分为许多“时间片”。时间片的长度一般是固定的,如50ms。对于每个进程按时间片分配CPU资源,可以是每个进程分配相同的时间片,也可以不同的进程分配不同数量的时间片。待进程用完所分配的CPU时间,进程就退出运行状态,进入就绪状态,等待下一次的时间片。
(4)分级调度算法,是优先级调度和先来先服务调度的结合。该算法将就绪进程分为两个或几个优先级,但不是对每个进程划分不同的优先级。系统相应的建立两个或多个就绪进程队列。调度算法先从高级队列中选择进程,再处理低级队列中的进程。在同一个队列内按照先来先服务的方式排队。
实际使用的调度算法往往是几种算法的结合。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。