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

进程的活动是通过在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中的状态

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.目的: 自行编制模拟程序,通过形象化的状态显示,深入理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。 2. 内容及要求: 1) 设计并实现一个模拟进程状态转换及其相应PCB内容、组织结构变化的程序。 2) 独立编写、调试程序。进程的数目、进程的状态模型(三状态、五状态、七状态或其它)以及PCB的组织形式可自行选择。 3) 合理设计与进程PCB相对应的数据结构。PCB内容要涵盖进程的基本信息、控制信息、资源需求及现场信息。 4) 设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。 5) 代码书写要规范,要适当地加入注释。 6) 认真进行预习,完成预习报告。 7) 实验完成后,要认真总结,完成实验报告。 3.使用的数据结构及说明: 在本实验中,主要用到的数据结构是PCB的结构,其中PCB的数据结构如下: struct PCB { int P_Id; //PCB的ID号 char P_Name[10]; //PCB的名称 char P_State[10]; //PCB状态 int P_Runtime; //PCB的所需要的运行时间 int P_Requiry; //PCB所需要的资源要求 struct PCB * next ; //PCB块的下一个指针 } ; 其中,P_Id,和P_Name用来标示一个进程,而P_State用来标示进程的五种状态:Create_state,Ready_state,Block_state,Run_state,Exit_state。P_Runtime标示要完成一个进程所需要的时间。P_Requiry标示一个进程的执行所需要的其他条件,当其他的条件满足,则P_Requiry置1,否则置0。Struct PCB * next 用来指向同一队列中的下一个PCB块。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值