操作系统 - 进程描述

  进程活动是通过在cpu上执行一系列程序和相对应数据进行操作来实现的,程序和进程操作的数据是进程存在的实体,但程序和数据都是静态的代码段和文本,不能反映进程的动态性。为此,需要一个数据结构来描述进程当前的状态和特性等,这种数据结构就称为进程控制块(pcb)(在linux称为task-struct,下文将会介绍)。

进程控制块pcb

  pcb包含一个进程描述的信息、控制信息和资源信息,有些系统中还有进程调度等待所使用的现场保护区。进程并发执行时,由于资源需要共享,各进程之间相互制约,为了反应这些制约关系和资源共享关系,在创建一个进程时,应当创建其pcb,然后再根据pcb中的信息对进程实施有效的管理和控制。当一个进程完成其功能后,系统会释放该pcb,标志进程消亡。

  pcb记录的进程控制信息按照功能大致可以分成四个部分:进程标识符、处理机状态、进程调度信息、进程控制信息。

1、进程标识符:

  进程标识符用于唯一地标识一个进程,一个进程通常有以下两种标识符

  (1)进程内部标识符。在所有的操作系统中,为每一个进程赋予一个唯一的数字标识符,通常是一个进程的序号。内部标识符主要是为了方便操作系统使用

  (2)进程外部标识符。它有创建者提供,通常是由字母、数字组成。往往由用户在访问进程时候使用。为了描述其家族关系,还应设置父进程标识符和子进程标识符。

2、处理机状态:

  处理机状态信息由处理机的各种寄存器中的内容组成,处理机在运行时,许多信息都放在寄存器中。当处理机被中断时,这些信息都必须保存在pcb中,以便进程在重新执行时能从断点处继续执行。

  pcb中设有专门的cpu现场保护结构,以存储退出执行时的现场数据。

3、进程调度信息

  (1)进程状态。指明进程当前的状态,作为进程调度和对换的依据

  (2)进程优先级。用于描述进程使用处理机的优先级别,优先级别高的进程应优先获得cpu。

扫描二维码关注公众号,回复: 7744612 查看本文章

  (3)进程调度所需要的其他信息。这与所采用的进程调度算法有关,如进程已等待cpu时间、进程已运行时间等

  (4)事件或阻塞原因。指进程由执行状态转变为阻塞状态所等待发生的事件。

4、进程控制信息  

  进程控制信息包括:

  (1)程序和数据的地址。指进程的程序和数据所在的内存或者外存地址,以便再调度到该执行进程时,能从pcb找到其他程序和数据

  (2)进程同步和通信机制。指实现进程同步和进程通信时必须的机制,如消息队列指针、信号量等。

  (3)资源清单。一张列出了除cpu外、进程所需的全部资源以及以及分配到该进程的资源清单。

  (4)链接指针。给出了本进程pcb所在队列的下一个进程pcb的首地址。

进程控制块组织方式:

  为了对进程进行有效管理,常将各进程的pcb用适当的方式组织起来。一般pcb组织方式有线性方式、链接方式和索引方式。

 1、线性方式

  最简单、最容易实现的方式。操作系统先确认整个系统同时存在的进程最大数目和静态分配空间。把所有进程pcb都放在这个表中。这种方式的主要问题是限定了系统中同时存在的进程最大数目,当进程数目达到上限时便无法创建新进程,更严重的缺点是在执行cpu调度时候,经常需要对整个表进行扫描,严重影响调度效率。

 

  

2、链接方式

  链接方式的原理是按照进程的不同状态分别将其放在不同的队列。在但cpu的状态下,处于运行状态的进程只有一个,可以用一个指针指向它的pcb。处于就绪状态的进程有若干个,它们排成一个或多个队列,通过pcb结构内部的链接指针把同一队列的pcb链接起来。该队列的第一个pcb由就绪队列指针指向,最后一个pcb链接指针为0,表示结束。cpu调度程序把第一个pcb由该队列中摘下,令其投入运行,新加入就绪队列的pcb按照某一调度算法插入。阻塞队列可以有多个,各自对应不同的阻塞原因。当某个等待条件满足的时候,则可以把对应阻塞队列上的pcb送到就绪队列中,正在运行的进程如果出现缺少某些资源而未能满足的情况,将变为阻塞态,加入相应阻塞队列。linux操作系统就是应用这种进程控制块组织方式

3、索引方式

  系统根据进程的状态建立索引表,如就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个pcb在pcb表中的地址。

 

linux进程的pcb

  linux系统中进程称为任务。该系统的进程控制块pcb用一个称为task-struct的结构体描述。Linux 系统的pcb包含以下信息。

1、进程描述信息

  通过进程描述信息,linux系统可以唯一确定一个进程的基本情况。了解该进程所属用户及用户组等信息,同时能确定该进程与其他进程的关系,这些描述信息包括进程号,用户和组标识以及描述进程家族的链接信息

2、进程控制信息

  (1)进程当前状态

  (2)调度信息。记录进程优先级

  (3)记时信息

  (4)通信信息。linux支持典型的unix进程间通信机制--信号、管道,也支持systemV通信机制--共享内存、信号量和消息队列。

3、进程资源信息

  进程资源信息记录了与进程有关的存储器的各种地址、文件系统以及打开文件信息等

4、cpu现场信息

  通过对task-struct的操作,系统为进程分配资源进行调度最终完成进程的创建和撤销

猜你喜欢

转载自www.cnblogs.com/LEEYATWAH/p/11791664.html