进程的概念、状态转换和进程控制块

来源:互联网 发布:红蜘蛛教学软件介绍 编辑:程序博客网 时间:2024/04/27 11:19
1. 为什么要引入进程
     通常的程序是不能并发执行的,因为并发执行会使它们具有间断性、失去封闭性,并且其结果不可再现。
     为了使程序能够并发执行,并且对程序加以描述及控制,引入了进程的概念。


2. 进程的定义
     进程是进程实体的运行过程,进程实体由程序段、相关的数据段和PCB三部分构成。在没有引入线程的操作系统中,进程是系统进行资源分配和调度的一个独立单位


3. 进程的状态
     (1)创建状态
          当一个新进程被创建时,系统为其创建PCB,并填写必要的管理信息。但由于该进程所需的资源尚未分配,进程还没有进入主存,进程还不能被调度运行。
     (2)就绪状态
          当进程已经被分配到除CPU以外的所有资源时,只要再获得CPU就可以执行,这种状态称为就绪状态。
     (3)执行状态
          进程获得了CPU,正在执行当中。
     (4)阻塞状态
          正在执行的进程由于发生一些事件暂时无法继续占有CPU时,进程进入阻塞状态。
     (5)挂起状态
          当有终端用户的请求,或父进程的请求,或系统负荷调节的需要,或操作系统的需要时,进程进入挂起状态。
     (6)终止状态
          当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统终结,或是被其它拥有终止权的进程终结,进程就进入终止状态。



进程状态转换图(无挂起状态)


4. 引起进程进入各种状态的事件
4.1 进入阻塞状态
     (1)请求的资源被其它进程占用。如:请求使用打印机资源,但打印机正在被其它进程使用。
     (2)启动某种操作。如:启动了某项I/O设备,只有在I/O设备完成了指定的I/O操作后进程才能继续执行。
     (3)新数据尚未到达。如:进程A用于输入数据,进程B用于对数据加工,如果进程A尚未输入完数据 ,则进程B阻塞。
     (4)无新工作可做。如:发送数据的进程已经发送完数据,且无新的发送请求,则该发送进程阻塞。

4.2 进入挂起状态
     (1)终端用户请求。如:终端用户在程序运行期间希望程序 暂停执行,进程进入挂起状态。
     (2)父进程的请求。如:父进程希望挂起自己的某个子进程,以便修改子进程或协调各子进程的活动。
     (3)进行负荷调节。如:当实时系统的负荷较重,系统可以把一些不重要的进程挂起。
     (4)操作系统的需要。如:操作系统挂起某些进程,以便检查运行资源的使用情况


5. 进程控制块(PCB)
5.1 进程控制块的作用
     进程控制块记录了操作系统所需的,用于描述进程的当前情况,以及控制进程运行的全部信息。操作系统是根据PCB来对并发执行的进程进行控制和管理的。
     例子:
     (1)当操作系统要调度某进程执行时,要从该进程的PCB中查看其现行状态和优先级。
     (2)当调度某进程后,要根据PCB中保存的CPU状态信息,设置进程恢复运行的现场,并根据PCB中程序和数据的内存地址找到程序和数据。
     (3)当进程阻塞或挂起时,要将其断点的CPU环境保存在PCB中。
     (3)进程之间实现同步、通信、访问文件时,需要访问PCB。

5.2 进程控制块的内容
     (1)进程标识符(PID)。进程标识符唯一地标识一个进程。
     (2)CPU状态信息。由CPU的各种寄存器的内容组成。
     (3)进程调度信息。包括进程状态、进程优先级、进程调度所需的其他信息、引起状态转换的事件。
     (4)进程控制信息。包括程序和数据的地址、进程同步和通信所需的内容、进程所需和已有的资源清单、所在队列中指向下一个进程的链接指针。
原创粉丝点击