进程管理

什么是进程?

  首先我们先来介绍下进程,在网上有个很形象的比喻,如果说把CPU比作是一个工厂,承担所有的计算任务,时刻在运行中;那么进程就好比是工厂的车间,而程序可以理解为当该工厂接到一个订单时,所制定的一个工作流程,里面包括每一间车间的任务,所需要的工具等,也就是用适当形式描述的算法;由于工厂的电力有限,一次只能供给一个车间使用,也就是说每一次只能存在一个车间工作而其他车间都在停工中,这就是单个CPU一个只能运行一个任务。进程就是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。

进程与程序的区别

  • 程序是一组有序的指令集合,是一种静态的概念;进程是程序的一次执行过程,是一个动态的概念。
  • 进程是一个程序及其数据在CPU上执行时所发生的活动,具有一定的生命周期;而程序则是一组代码的集合,是可以永久存在的。
  • 一个进程可以执行一个或者多个程序,一个程序也可以构成多个进程,进程可以创建进程,而程序不可以形成新的程序。 

进程的状态

车间当有任务执行时就会处于执行中的状态,当由于原料或者其他条件不满足时就会处于等待的状态,当开工条件满足后要等工厂电力可以为其供给才能再次开始运行,因此进程的状态也有三种:

运行状态:当前进程分配到CPU时,它的程序正在处理机上执行时的状态;

就绪状态:已经具备运行条件,但是因为其他进程正占用CPU,所有暂时不能允许而处于等待分配CPU状态;

阻塞状态:进程因等待某些事件发生而暂时不能运行的状态。

进程的状态之间的转换可以见下图所示:

                      进程管理

进程间的相互关系

1.互斥:进程间的互斥是由于竞争同一资源而发生的相互制约关系,就如工厂里的某一资源由于数量有限,但是却有多个车间要使用该资源进行工作,故这些车间之间形成了竞争的关系。

2.同步:进程之间为共同完成一项任务而互相协作的关系,就像几个车间之间要完成一个任务,只有当上一车间的任务完成之后,下一个车间才可以开始开工,这些车间一起合作完成某个任务而形成同步关系。

3.通信:各个进程之间进行信息交换,各车间为了共同做好任务,在执行过程中相互交流自己车间的任务信息已经工作情况。

线程

引入线程的目的是为了减小程序在并发执行过程时所付出的时空开销,提高系统的并发性能。

线程可以比喻作是车间里的工人,一个进程可以包含多个线程。车间里的空间象征着一个进程里的内存空间,车间工人可以共享该空间就表示这每个线程都可以使用这些共享内存。但是每间房间大小不同,有些甚至只能容纳一人,这代表一个线程使用某些共享内存的时候,其他线程必须等它结束,才能使用这一块内存。

进程与线程

  • 一个进程可以有多个线程,但至少有一个线程;而一个线程只能在一个进程的地址空间内活动
  • 资源分配给进程,同一进程的所有线程共享该进程的所有资源
  • 处理机分配给线程,即真正运行在处理机上的是线程