多道批处理系统的出现,使得多个作业可以并行的运行在CPU上,提高了资源利用率,和系统吞吐量。但是又带来了系统中各种资源的调度问题。在多道环境下,允许多个程序并发执行,此时他们将失去封闭性,并具有间断性和不可再现性,为此引入进程的概念。下面来介绍进程与进程的管理。
1. 进程的定义
为了使参与并发执行的程序能够独立运行,必须为此配置一个专门的数据结构,称为进程控制块(PCB)。系统利用PCB来描述进程的基本情况与运行态,进而控制和管理进程。相应的,由程序段,数据段和PCB三部分构成了进程实体。PCB是进程存在的唯一标志。
进程是具有独立功能的程序在一个数据集合上的运行过程,它是系统进行资源分配和调度的一个独立单位。
进程从创建到消亡整个生命周期,状态会不断发生变化。通常有以下五种状态
- 运行态:进程正在处理机上运行。
- 就绪态:进程已处于准备运行的状态。即进程获得了除处理机以外的所有需要的资源。
- 阻塞态:进程等待某一事件而暂停运行。如等待某资源为可用(不包括处理机)。
- 创建态:进程正在被创建,未进入就绪态。
- 结束态:进程正在从系统中消失,可以是正常结束,也可能是其他原因中断退出运行。
进程是一个独立的运行单位,也是操作系统分配资源和调度的基本单位,进程一般由PCB,程序段和数据段组成。
- PCB
创建一个进程时,操作系统为该进程创建一个PCB,进程执行时,操作系统通过PCB了解进程的状态信息,进程结束时,操作系统回收其PCB,进程随之消亡。 - 程序段
程序段是能被进程调度程序调度到CPU执行的代码段。程序可以被多个进程共享,多个进程可以运行同一个程序。 - 数据段
一个进程的数据段,可以是进程对应程序加工处理的原始数据,也可以是程序运行产生的中间或最终结果。
2.进程的通信
-
共享存储
在通信的进程之间存在一块可直接访问的共享空间,通过对这一块空间进行读写操作实现进程之间的信息交换。在对共享空间进行读写时需要使用同步互斥工具。共享存储分为两类,一类是基于数据结构的共享,一类是基于存储区的共享。
-
消息传递
这种方式的数据交换是以格式化的消息为单位的,通过系统提供的发送消息和接收消息两个原语进行。
-
管道通信
管道是指用于连接一个读进程和一个写进程的共享文件(pipe), 管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
3. 线程
引入进程的目的是为了提高资源利用率和系统吞吐量,而线程则减小了程序在并发执行是所付出的时空开销,提高了并发性能。
线程是一个基本的CPU执行单位,由线程ID,程序计数器,寄存器和堆栈等组成。一个线程可以创建和撤销另一个线程,同一进程中的多个线程并发执行。
线程与进程的区别
-
调度
进程是拥有资源(资源分配)的最小单位,线程是独立调度的基本单位。
-
资源
进程拥有资源,线程不拥有系统资源,但线程可以访问所属进程的资源。
-
系统开销
进程创建、切换、销毁所付出的开销远大于线程时的开销。
网友评论