进程详解

  • Post author:
  • Post category:其他



一、进程的概念



二、进程的状态及状态转换



三、进程控制块



四、进程的组成与上下文



五、进程的队列(PCB链)



六、进程的类型和特性



七、进程间的相互联系与相互作用



八、进程的创建、撤销与汇聚



九、进程与程序的联系和差别



一、进程的概念

进程的概念起源于20世纪60年代初期,不过关于什么是进程,目前尚无统一的定义。确切的说,关于进程有许多的解释,这些解释并不是完全等价的。

(1)进程是程序的一次执行

(2)进程是可以参与并发执行的程序。

(3)进程是程序与数据一道通过处理器执行时发生的活动。

(4)所谓进程,就是一个程序在给定的空间和初始环境下,在一个处理器上执行的过程。


定义

:进程是具有一定独立功能的程序关于一个数据集合的

一次

运行活动。



二、进程的状态及状态转换

1、进程的状态

进程在其生存周期内可能处于以下3种基本状态之一:

(1)

运行态

(run):进程占有处理器资源,正在运行。在单处理器系统中任一时刻只能有

一个

进程处于此种状态。

(2)

就绪态

(ready):进程本身

具备运行条件

,但是由于处理器的数量

少于

可运行进程的数量,暂未投入运行,即相当于

等待处理器资源



(3)

等待态

(wait):也称为挂起态(suspend)、阻塞态(block)、睡眠态(sleep)。进程本身

不具备运行条件

,即使分给其处理器也不能 运行。进程正在等待某一事件的发生,如等待某一资源被释放,等待与该进程相关的数据传输的完成信号等。


2、状态转换

在这里插入图片描述
(1)

没有直接从wait->run

:为了减少系统开销

(2)

没有ready->wait

:没有资源



三、进程控制块

1、

定义

:进程控制块是标志进程存在的

数据结构

,其中包含系统对进程进行管理所需要的的

全部信息

2、包含以下信息:


进程标识

(pid):通常为一个整数,称为进程号,用于区分不同进程。


用户标识

(uid):通常为一个整数,称为用户号,用于区分不同用户。

一个进程号与唯一的用户号相对应,而一个用户号可以与多个进程号相对应,即一个用户可以同时拥有多个进程 。


进程状态

(status):就绪、运行、等待。


调度参数

:用于确定下一个运行的进程。


现场信息

:用于保存进程暂停的断点信息,包括通用寄存器、地址映射寄存器、PSW、PC。


程序地址

:记载进程所对应程序的存储位置和所占存储空间大小,具体内容与存储管理方式有关。


当前打开文件

:用于记载进程正在使用的文件,通过它与内存文件管理表目建立联系,通过该表可以找到保存在外存中的文件。


消息队列指针

:指向本进程从其他进程接收到的消息所构成消息队列的链头。


资源使用情况

:记载该进程生存期间所使用的系统资源和使用时间,用于记账。


进程队列指针

:用于构建进程控制块队列,它是系统管理进程所需要的。



四、进程的组成与上下文

1、进程控制块

进程控制块是进程的灵魂。进程控制块存放在系统空间中,只有操作系统才能够对其进行存取。

2、程序

程序是进程的“躯体”,其中包括

代码



数据

两个部分。

数据一般包括静态变量、动态堆和动态栈。数据一般是程序私有的,当然也有的系统可以提供进程间共享数据的功能,以实现进程间的信息交换。

进程有两种表示方法:

(1)

整体性
在这里插入图片描述

(2)代码可共享性

在这里插入图片描述

3、进程的程序(代码和数据)被称为进程映像。

4、系统开销一般是指运行操作系统程序、对系统进行管理所花费的时间和空间。



五、进程的队列(PCB链)

通常,系统中的进程队列分为以下3类:

1、

就绪队列

:一般整个系统中有

一个

就绪队列。所有处于就绪态的进程按照某种组织方式排在这一队列中,进程入队列和出队列的次序与处理器调度算法有关。

2、

等待队列

:每个等待事件有一个等待队列。当进程等待某一事件发生时,进入与该事件相关的等待队列中;当某事件发生时,与该事件有关的一个或多个进程离开响应的等待队列,进入就绪队列。

3、

运行队列

:在



处理器中只有



个运行队列,在



处理器中每个CPU

各有一个

运行队列,每个队列中只有一个进程。



六、进程的类型和特性

1、系统进程

这类进程属于操作系统的一部分,它们运行操作系统程序,完成操作系统的某些功能,也被称为守护进程。

2、用户进程

这类进程运行用户程序,直接为用户服务。

3、无论系统进程还是用户进程,都具有如下特性:

(1)并发性:可以与其他进程一到在宏观上同时向前推进。

(2)动态性:进程是执行中的程序。

(3)独立性:进程是调度的基本单位,它可以获得处理器并参与并发执行。

(4)交互性:进程在运行过程中可能会与其他进程发生直接或间接的相互作用。

(5)异步性:每个进程都以其相对独立、不可预知的速度向前推进。

(6)结构性:每个进程都有一个进程控制块。



七、进程间的相互联系与相互作用

(1)

相关进程

:在逻辑上具有某种联系的进程称为相关进程。例如:属于同一进程家族内的所有进程(父子进程、兄弟进程);

(2)

无关进程

:在逻辑上没有任何联系的进程称为无关进程。

(3)

直接相互作用

:进程之间不需要通过某种媒介而发生的相互作用,这种相互作用通常是有意识的。

(4)

间接相互作用

:进程之间需要通过某种媒介而发生的相互作用,这种相互作用通常是无意识的。



八、进程的创建、撤销与汇聚

1、进程创建

pid  = fork()

创建子进程所要完成的主要工作如下:

(1)建立一个进程控制块,并对其内容进行初始化;

(2)为该进程分配必要的存储空间,并加载所要执行的程序;

(3)将进程控制块送入就绪队列。

2、进程撤销

exit(status)

exit命令的执行将进入操作系统,操作系统将对进程进行善后处理(收集进程状态信息、通知父进程等),之后将收回进程所占用的所有资源(打开文件、内存等),最后撤销其进程控制块。

除正常终止外,地址越界、非法指令、来自用户或父进程的kill信号等原因也可能导致进程的非正常终止。非正常终止的进程也将进入操作系统进行善后处理。

3、进程汇聚

一个进程只能为一个程序服务,一个程序会产生多个进程



九、进程与程序的联系和差别

1、进程与程序的联系

程序是构成进程的组成部分之一,一个进程存在的目的就是执行其所对应的程序。如果没有程序,进程就失去了其存在的意义。

2、进程与程序的差别

(1)程序是

静态

的,而进程则是

动态

的。

(2)程序可以写在纸上或在某种存储介质上长期保存,而进程具有生存周期,创建后存在,撤销后消亡。

(3)一个程序可以对应多个进程,但是一个进程只能对应一个程序。



版权声明:本文为weixin_45907789原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。