挑战408——操作系统(5)——PCB与进程控制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/redRnt/article/details/83119799

进程的活动是通过在CPU上执行一系列程序和对数据进行相应操作的完成来体现的,因此程序和数据是组成进程的实体,为了反映进程的动态特征,需要一个数据结构来描述进程本身的特性状态,调度信息以及对资源的占有等等。这个数据结构我们称之为进程控制块(PCB)

PCB的内容

PCB主要包含下面几部分的内容:

  1. 进程的描述信息,比如进程的名称,标识符,
  2. 处理机的状态信息,当程序中断是保留此时的信息,以便CPU返回时能从断点执行
  3. 进程调度信息,比如阻塞原因,状态,优先级等等
  4. 进程控制和资源占用,同步通信机制,链接指针(指向队列中下一个进程的PCB地址)

PCB的作用:

  • PCB是进程实体的一部分,是操作系统中最重要的数据结构
  • 由于它的存在,使得多道程序环境下,不能独立运行的程序成为一个能独立运行的基本单位,使得程序可以并发执行
  • 系统通过PCB来感知进程的存在。(换句话说,PCB是进程存在的唯一标识)
  • PCB应该常驻内存

进程的组成可以用下图来表示:
在这里插入图片描述
而进程之间可以通过PCB中的链接指针找到下一个进程,他们彼此之间组成一个链队列:
在这里插入图片描述

进程控制

进程控制主要表现在对一个进程进行创建,撤销以及进程状态之间进行转换控制这些操作都是通过前面的原语操作执行的

进程的创建与撤销

进程允许创建和控制另一个进程,前者称为父进程,后者称为子进程,子进程又可以创建孙进程,如此下去进而形成一个进程的家族树,这样子进程就可以从父进程那里继承所有的资源,当子进程撤销时,便将从父进程处获得的所有资源归还,此外,撤销父进程,则必须撤销所有的子进程。(撤销的过程实际上就是对这棵家族树进行后序遍历的过程
在应用中创建一个子进程的过程如下:

  1. 申请空白的PCB
  2. 初始化进程描述信息
  3. 为进程分配资源以及地址空间
  4. 将其插入就绪队列中

当进程完成后,系统会回收占用的资源,撤销进程,而引发进程撤销的情况有:进程正常结束或者异常结束,外界的干预(比如我们在任务管理器中强制停止某个进程的运行)。

  • 查找需要撤销的进程的PCB
  • 如果进程处于运行状态,终止进程并进行调度
  • 终止子孙进程
  • 归还资源
  • 将它从所在的队列中移除

进程的阻塞和唤醒

. 前面我们说过,进程的阻塞是进程的一种主动的行为,但是没有解释为什么,现在我们解释一下,进程执行过程中常常会因为等待I/O或者某个事件的出现而进入阻塞状态。当处于阻塞状态的进程所等待的操作完成或者事件出现时,进程就会从阻塞状态唤醒而进入就绪状态。因此进程的阻塞是进程自身的一种主动行为,是进程自己通过阻塞原语自己阻塞。
阻塞原语如下:

  1. 停止进程执行
  2. 进程插入阻塞队列
  3. 重新调度

唤醒原语如下:

  • 将进程从阻塞队列卸下
  • 插入就绪队列
  • 修改进程在PCB中的状态

注意,进程的阻塞和唤醒原语是一对功能相反的原语,若某个进程调用了阻塞原语,则必有一个与之对应的唤醒原语。

猜你喜欢

转载自blog.csdn.net/redRnt/article/details/83119799