0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCB进程的创建和终止过程

麦辣鸡腿堡 来源:盼盼编程 作者:晨梦思雨 2023-10-08 15:36 次阅读

PCB进程控制块

独立运行基本单位的标志:创建进程时创建PCB,进程结束时回PCB,进程随之消亡。系统是通过PCB,感知进程的存在。PCB已成为,进程存在于系统中的唯一标志。

实现间断性运行方式:进程暂停运行时,必须保留,运行时的CPU等相关信息。进程被再次运行时,需恢复CPU等相关信息。

提供进程管理需要的信息:当进程开始运行时,根据该进程PCB中,记录的程序和数据,在内存或外存中起始地址指针,找到相应的程序和数据。

提供进程调度需要的信息:只有处于就绪状态的进程,才能被调度。而进程的状态就记录在PCB中、以及优先级、等待时间、已执行时间等其他信息。

实现与其他进程的同步与通信:进程同步机制,用于实现多进程协调运行。在PCB中,具有实现进程通信的区域或通信队列指针等。

PCB进程控制块中的信息:PCB中的信息大致上可分为4类,分别是:进程标识符、CPU状态、调度信息、控制信息。

进程标识符:分外部标识符和内部标识符,外部标识符即进程名称,可由父进程指定,通常包括字符和数字的组成。内部标识符,由操作系统提供的,具有唯一性的进程ID。

CPU状态:主要由各种寄存器中内容组成,如通用寄存器、指令计数器(下一条指令的地址)、程序状态(状态信息、条件码、执行方式、屏蔽中断等标志)和栈指针(指向用于存放过程和系统调用参数及调用地址的系统栈的栈顶)构成。

调度信息:包含进程状态、进程优先级、其他信息、事件(阻塞原因)。

进程状态,是进程调度和对换时的依据,优先级高的进程,应优先获得CPU执行。

控制进程所必须的信息,包括程序和数据的存储地址,以便调度该进程执行时,能从PCB中找到其程序和数据,进程同步和通信机制,如消息队列、信号量等。

进程的创建和终止过程

创建进程过程:向操作系统申请空白PCB及进程ID、分配运行所需的资源、初始化PCB、等待插入进程调度就绪队列。

相关资源或从操作系统或从父进程获得,资源需求需提前告知,操作系统或父进程好为其分配资源。

PCB至少有2种信息需要初始化

1.标识信息,即将本进程ID和父进程ID填入PCB控制块中

2.状态信息,指令计数器指向程序的入口地址、栈指针指向栈顶控制信息。

进程的终止分为:读取进程状态、终止进程、终止子孙进程、释放资源、移出PCB队列。

操作系统通过进程ID从PCB集合中检索出该进程的PCB,从中读出该进程的状态。

如果该进程状态为执行态,则终止进程的执行,并重置调度标志位真。

如果该进程拥有子孙进程,则一并将所有子孙进程终止,防止子孙进程成为僵尸进程等不可控的进程。

接着释放资源,将资源归还给操作系统或父进程。最后就是移出PCB队列了,等待其他进程搜集信息。

进程阻塞和唤醒的事件

1.请求系统服务而得不到满足时,如问系统请求打印。

2.启动的操作需同步时:如该操作和请求该操作的进程需同步运行。

3.新数据尚未到达:如进程A写,进程B读,则A未写,完B不能读。

4.无新工作可做。

进程的挂起和激活

1.进程的挂起过程,由进程自己,或其父进程suspend原语完成。将该进程PCB移到指定区域,注意状态的改变,有可能要重新调度。

2.进程的激活过程,激活active原语激活进程。激活原语将进程从外存调入内存,检查该进程的现行状态并进行相应操作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6288

    浏览量

    121886
  • 进程
    +关注

    关注

    0

    文章

    193

    浏览量

    13876
  • 系统
    +关注

    关注

    1

    文章

    981

    浏览量

    21036
  • PCB
    PCB
    +关注

    关注

    1

    文章

    1579

    浏览量

    13204
收藏 人收藏

    评论

    相关推荐

    【Linux学习杂谈】之创建单例进程

    本帖最后由 michael_llh 于 2016-9-30 17:53 编辑 之前我们创建的守护进程当中成功实现了进程在系统后台运行,没有收到控制台的约束,但是也同时引发一个问题就是当我
    发表于 09-30 17:51

    在Linux系统中PCB如何创建进程

    PCB包含了一个进程的重要运行信息,所以我们将围绕在创建一个新进程时,如何来建立一个新的PCB的这一个
    发表于 08-05 07:58

    Linux内核创建进程过程分析

    PCB包含了一个进程的重要运行信息,所以我们将围绕在创建一个新进程时,如何来建立一个新的PCB的这一个
    发表于 08-08 08:42

    进行创建和添加PCB Layout文件及同步的操作过程

    (1)OrCAD Capture 17.4开始可以支持在原理图中创建和添加PCB Layout文件,并进行双向的同步和布局调整。接下来我们一起来学习使用新功能为原理图创建新的PCB L
    发表于 07-06 15:04

    如何理解ARM中的进程

    标识,系统通过PCB的存在而感知进程的存在。    系统通过PCB进程进行管理和调度。PCB包括创建
    发表于 10-23 16:02

    迅为i.MX6ULL终结者进程基础-进程创建

    ,子进程返回0,失败返回-1。如以下代码:for.c:打印结果:程序执行过程中第一次调用fork()进程2531创建进程2532;第二次f
    发表于 03-03 14:11

    进程是何时被创建的?如何去使用线程?

    进程是何时被创建的?进程何时终止进程的状态分为哪几种?如何去使用线程?线程是如何是如何实现的?
    发表于 07-23 08:57

    使用DigiPCBA创建和复用PCB封装

    知道,是可以与 Altium Designer 电子设计工具和流行的机械设计工具集成的电子数据管理和元器件管理平台。在 DigiPCBA 中,PCB 封装的创建和复用非常容易。大多数设计工具都没办法使
    发表于 06-17 15:48

    altium-designer使用PCB向导来创建PCB详细过程

    altium-designer使用PCB向导来创建PCB详细过程,感兴趣的可以看看。
    发表于 07-22 16:08 0次下载

    如何为密集的高约束PCB设计创建和管理约束

    本视频将会概述基本的约束管理概念,并演示如何为密集的高约束 PCB 设计创建和管理约束。
    的头像 发表于 05-17 06:01 1687次阅读
    如何为密集的高约束<b class='flag-5'>PCB</b>设计<b class='flag-5'>创建和</b>管理约束

    如何创建和管理约束密集型、高度约束的PCB设计

    这个视频概述基本约束管理的概念和演示了如何创建和管理约束密集、高度受限的PCB设计。
    的头像 发表于 11-07 07:08 2512次阅读

    Linux下进程创建、执行和终止

     许多操作系统提供的都是产生进程的机制,也就是说,首先在新的地址空间里创建进程、读入可执行文件,后再开始执行。Linux中进程创建很特别,
    发表于 06-11 09:21 540次阅读

    如何创建和使用LabVIEW中的LLB文件

    如何创建和使用LabVIEW中的LLB文件
    发表于 11-22 16:12 0次下载

    探讨一下进程创建终止

    在启动进程时(好像会创建一个空转进程),通常会创建若干进程,其中包括前台进程(负责与用户交互)和
    的头像 发表于 08-17 17:59 2164次阅读
    探讨一下<b class='flag-5'>进程</b>的<b class='flag-5'>创建</b>与<b class='flag-5'>终止</b>

    linux操作系统中的进程创建和销毁函数解析

    第一次遇见创建进程是在Linux启动流程中,reset_init函数调用kernel_thread函数创建了2个内核进程:kernel_init和kthreadd。
    发表于 06-26 09:12 413次阅读
    linux操作系统中的<b class='flag-5'>进程</b><b class='flag-5'>创建和</b>销毁函数解析