前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统 进程线程模型 进程控制块及进程控制

操作系统 进程线程模型 进程控制块及进程控制

作者头像
Meng小羽
修改2019-12-23 15:27:11
1.3K0
修改2019-12-23 15:27:11
举报
文章被收录于专栏:Debug客栈

进程控制块PCB

在操作系统中,为进程定义了一个专门的数据结构,称为进程控制块PCB。

PCB内容

PCB内容可以分为调度信息现场信息两大部分。

调度信息供进程使用时使用,描述了进程当前所处的状况,他包括进程名、存储信息、进程号、优先级、当前状态、资源清单、“家族”关系、消息队列指针、进程队列指针和当前打开的文件等。

现场信息刻画了进程的运行情况,由于每个进程都有自己专用的工作存储区,其他进程运行时不会改变它的内容。

进程的组成

PCB组织

  1. 线性方式:将所有的PCB部分状态组织在一个连续表(称为PCB表)中。
    • 优点:简单,且不需要额外的开销,适用于进程数且不多的系统。
    • 缺点:需要扫描整个PCB表。
  2. 索引方式:对于具有相同状态的进程,分别设置各自的PCB索引表,表目为PCB在PCB表(线性表)中的地址。就构成了就绪索引表和等待索引表。
  3. 链接方式:对于具有相同状态的进程PCB,通过PCB中的链接字构成一个队列。按“先进先出”的原则出对,若队列指针为0,表示该队列为空。

进程的队列

  1. 就绪队列:进程入队和出队的次序与处理机调度算法有关。
  2. 等待队列:每一个等待事件一个队列。
  3. 运行队列:在单CPU系统中整个系统有一个运行队列。

进程控制

作用:就是对进程在这个生命周期中各种状态之间的转换进行有效的控制。

原语:通常由若干的指令组成,用来实现某个指定的操作。通过一段不可分割的或不可中断的程序实现其功能。原语的执行过程必须是连续的,一旦开始执行就不能间断,直到执行结束。原语是操作系统的可行,在管态下执行,并且常驻内存。

进程控制原语

用于进程控制的原语一般有:创建进程、撤销进程、挂起进程、激活进程、阻塞进程、唤醒进程以及改变进程优先级等。

  1.  创建原语:一个进程可以使用创建原语创建一个新的进程,前者称为父进程,后者称为子进程,子进程又可以创建新的子进程,构成新的子进程,构成新的父子关系。建立进程控制快PCB:先申请一个空闲的PCB区域,将有关信息填入PCB,置该进程为就绪状态,最后将它插入到就绪状态队列中去。
  2. 撤销原语:找到要被撤销的进程PCB,将它从所在队列中消去。
  3. 阻塞原语:把进程运行状态转换为阻塞状态。首先应中断CPU执行,把CPU的当前状态保存到PCB的现场信息中,把它插入到该事件的等待队列中去。
  4. 唤醒原语:京城因为等待时间的发生而处于等待状态,当等待事件完成后,就用唤醒原语将其转换为就绪状态。具体操作过程:在等待队列中找到该进程,置该进程的当前状态为就绪状态,然后将它从等待队列中撤去并插入到就绪队列中排队,等待调度执行。

UNIX类操作系统的进程控制操作

父进程调用fork()函数。

  1. 为子进程分配一个空闲的proc结构(进程描述符)。
  2. 赋予子进程唯一标识pid。
  3. 以一次一页的方式复制父进程用户地址空间。
  4. 获得子进程继承的共享资源的指针。
  5. 子进程就绪,加入调度队列。
  6. 对紫禁城返回标识符0;向父进程返回子进程的pid。

父进程和新建子进程的区别在于它们有着不同的pid。

fork()函数的执行的特点就像是只被调用一次,却会返回两次:一次是在调用进程(父进程)中,一次是在新创建的子进程中。

本文链接:https://cloud.tencent.com/developer/article/1557681

本文采用CC BY-NC-SA 3.0 Unported协议进行许可,转载请保留此文章链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PCB内容
  • 进程的组成
    • PCB组织
      • 进程的队列
      • 进程控制
      • 进程控制原语
      • UNIX类操作系统的进程控制操作
      相关产品与服务
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档