精华内容
下载资源
问答
  • 进程控制块的作用
    千次阅读
    2021-07-23 03:27:06

    PCB

    (进程管理块)

    语音

    编辑

    锁定

    上传视频

    为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。

    中文名

    进程管理块

    外文名

    Process Control Block所属学科

    操作系统,编程

    主要功能

    描述系统的数据结构

    PCB简介

    语音

    PCB中记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行的全部信息。PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。例如,当OS要调度某进程执行时,要从该进程的PCB中查处其现行状态及优先级;在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据;进程在执行过程中,当需要和与之合作的进程实现同步,通信或者访问文件时,也都需要访问PCB;当进程由于某种原因而暂停执行时,又须将器断点的处理机环境保存在PCB中。可见,在进程的整个生命期中,系统总是通过PCB对进程进行控制的,即系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。所以说,PCB是进程存在的唯一标志。

    PCB组成

    语音

    PCB进程控制块是进程的静态描述,由PCB、有关程序段和该程序段对其进行操作的数据结构集三部分组成。

    在Unix或类Unix系统中,进程是由进程控制块,进程执行的程序,进程执行时所用数据,进程运行使用的工作区组成。其中进程控制块是最重要的一部分。

    进程控制块是用来描述进程的当前状态,本身特性的数据结构,是进程中组成的最关键部分,其中含有描述进程信息和控制信息,是进程的集中特性反映,是操作系统对进程具体进行识别和控制的依据。

    PCB一般包括:

    1.程序ID(PID、进程句柄):它是唯一的,一个进程都必须对应一个PID。PID一般是整形数字

    2.特征信息:一般分系统进程、用户进程、或者内核进程等

    3.进程状态:运行、就绪、阻塞,表示进程现的运行情况

    4.优先级:表示获得CPU控制权的优先级大小

    5.通信信息:进程之间的通信关系的反映,由于操作系统会提供通信信道

    6.现场保护区:保护阻塞的进程用

    7.资源需求、分配控制信息

    8.进程实体信息,指明程序路径和名称,进程数据在物理内存还是在交换分区(分页)中

    9.其他信息:工作单位,工作区,文件信息等[1]

    PCB作用

    语音

    1 进程控制块:进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(包含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。

    2 程序段:是进程中能被进程调度程序在CPU上执行的程序代码段。

    3 数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据[1]

    PCB包含信息

    语音

    在不同的操作系统中对进程的控制和管理机制不同,PCB中的信息多少也不一样,通常PCB应包含如下一些信息。

    1、进程标识符信息

    每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数字。UNIX系统中就是一个整型数。在进程创建时由系统赋予。进程标识符用于唯一的标识一个进程。一个进程通常有以下两种标识符。

    外部标识符。由创建者提供,通常是由字母、数字组成,往往是用户(进程)访问该进程使用。外部标识符便于记忆,如:计算进程、打印进程、发送进程、接收进程等。

    内部标识符:为了方便系统使用而设置的。在所有的OS中,都为每一个进程赋予一个唯一的整数,作为内部标识符。它通常就是一个进程的符号,为了描述进程的家族关系,还应该设置父进程标识符以及子进程标识符。还可以设置用户标识符,来指示该进程由哪个用户拥有。

    2、处理机状态信息

    说明进程当前所处的状态。为了管理的方便,系统设计时会将相同的状态的进程组成一个队列,如就绪进程队列,等待进程则要根据等待的事件组成多个等待队列,如等待打印机队列、等待等。处理机状态信息主要是由处理机各种寄存器中的内容所组成。

    通用寄存器。又称为用户可视寄存器,可被用户程 序访问,用于暂存信息。

    指令寄存器。存放要访问的下一条指令的地址。

    程序状态字PSW。其中含有状态信息。(条件码、 执行方式、中断屏蔽标志等)

    用户栈指针。每个用户进程有一个或若干个与之相 关的系统栈,用于存放过程和系统调用参数及调用地址。栈指针指向该栈的栈顶。

    3.进程调度信息

    在PCB中还存放了一些与进程调度和进程对换有关的信息。

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

    (2)进程优先级。用于描述进程使用处理机的优先级别的一个整数,优先级高的进程优先获得处理机。

    (3)进程调度所需要的其他信息。(进程已等待CPU的时间总和、进程已执行的时间总和)

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

    进程上下文:

    是进程执行活动全过程的静态描述。包括计算机系统中与执行该进程有关的各种寄存器的值、程序段在经过编译之后形成的机器指令代码集、数据集及各种堆栈值和PCB结构。可按一定的执行层次组合,如用户级上下文、系统级上下文等。

    进程存在的唯一标志:

    在进程的整个生命周期中,系统总是通过PCB对进程进行控制的,亦即,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志[1]

    PCB进程的特征

    语音

    1. 动态性

    2. 并发性

    3.独立性

    进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。没有建立进程的程序,不能作为一个独立的单位参加运行。

    4. 异步性

    5.结构特性

    从结构上看,进程由程序段、数据段及PCB三部分组成[1]

    PCB进程的状态及其转换

    语音

    1、进程的三种基本状态

    (1)就绪状态(Ready)

    当进程已经分配到除CPU以外的所有必要的资源后,只要能再获得处理机,就可以立即执行。

    (2)执行状态(Running)(运行状态)

    指进程已获得处理机而执行的状态。

    (3)阻塞状态(Block)(等待状态)

    进程因为发生某个事件而暂停执行时的状态(如:请求I/O、申请缓冲空间等)。有时也称“等待”状态或“睡眠”状态。

    2、进程状态转换

    ①就绪→执行:调度

    ②执行→等待:等待某个事件发生而睡眠

    ③等待→就绪:因等待的事件发生而唤醒

    ④执行→就绪:时间片用完或出现高优先

    就绪状态→执行状态

    处于就绪状态的进程,当进程调度程序为它分配了处理机后,该进程便由就绪状态变为执行状态,正在执行的进程也称为当前进程。

    执行状态→阻塞状态

    正在执行的进程因发生某件事件而无法执行。例如:进程请求访问临界资源,而该资源正被其它进程访问,则请求该资源的进程将由执行状态转变为阻塞状态。

    执行状态→就绪状态

    正在执行的进程,如果事件发生或中断而被暂停执行,该进程便由执行状态转变为就绪状态。(分时系统中,时间片用完;抢占调度方式中,优先权高抢占处理机)

    执行状态→终止状态

    当一个进程经完成或发生某事件,如程序中出现地址越界、非法指令等错误,而被异常结束时,进程将由执行状态转变为终止状态[1]

    参考资料

    1.

    第三章进程管理2(PCB)

    .百度文库[引用日期2015-01-22]

    更多相关内容
  • 操作系统:进程控制块PCB

    千次阅读 2020-12-07 15:27:06
    对于进程控制块PCB的作用、包含的信息以及组织方式进行了相应的介绍!

    一、进程控制块的作用:

    • 记录进程信息。
    • 操作系统是根据进程控制块PCB来对并发执行的进程进行控制和管理的。
    • PCB是进程存在的唯一标志。

     

    二、进程控制中的信息:

    进程标识符信息——进程标识符用于唯一地标识一个进程,通常有外部标识符和内部标识符

    • 外部标识符:由创建者提供,通常由字母、数字所组成,往往是由用户(进程)在访问该进程时使用。
    • 内部标识符:这是为了方便系统使用而设置的。在所有操作系统中都为每一个进程赋予一个惟一的整数作为内部标识符,它通常就是一个进程的序号。

    处理机状态信息——处理机状态信息主要是由处理机各种寄存器中的内容所组成 :通用寄存器、指令计数器、程序状态字PSW、用户栈指针,用于断点重新继续执行。

    • 通用寄存器:可以被用户程序进行访问,用于暂存信息。
    • 指令计数器:存放着要访问的下一条指令的地址。
    • 程序状态字PSW:含有状态信息,譬如:条件码、执行方式、中断屏蔽标志等。
    • 用户栈指针:每个用户有一个或者多个与之相关的系统栈,用于存放过程和系统调用参数及调用地址,栈指针指向该栈的栈顶。

    进程调度信息——存放了一些与进程调度和进程对换有关的信息:进程状态、进程优先级、进程调度所需的其他信息、事件。 

    • 进程状态:进程当前的状态。
    • 进程优先级:描述进程使用处理机优先级别,优先级高的进程先获得处理机。
    • 进程调度所需的其他信息:和相应的进程调度算法有关。譬如:进程等待CPU的事件总和、进程已经执行时间的总和。

    进程控制信息——程序和数据的地址、 进程同步和通信机制、资源清单、链接指针

    • 程序和数据的地址:进程程序和数据所在的内存和外存地址,以便调度进程时使用。
    • 进程同步和通信机制:实现进程同步和进程通信所必需的机制。
    • 资源清单:除了处理机之外的进程所需的全部资源以及已经分配到该进程的资源清单。
    • 链接指针:该进程所在队列的下一个进程的PCB首地址。

     

    三、进程控制块(PCB)的组织形式:

    • 链接方式——把具有相同状态的PCB链接成一个队列,这样可形成就绪队列、若干个阻塞队列和空队列等。

    • 索引方式——系统根据所有进程的状态建立几张索引表。

     

    Ending... ... 

    展开全文
  • 进程控制块

    2022-04-04 08:39:05
    进程:加载到内存的程序,就叫做进程,系统中会存在大量进程,操作系统要对进程进行管理,操作系统管理进程的方式:先描述再组织,因此任何进程在形成的时候,操作系统要为该进程创建PCB(进程控制块)。 查看进程 ...


    进程:加载到内存的程序,就叫做进程,系统中会存在大量进程,操作系统要对进程进行管理,操作系统管理进程的方式:先描述再组织,因此任何进程在形成的时候,操作系统要为该进程创建PCB(进程控制块)。

    查看进程

    ps axj | head -1 &&  ps axj | grep "test"
    

    该命令可以查看grep关键字的进程状态
    在这里插入图片描述

    PCB内部构成

    标识符

    标示符(pid): 描述本进程的唯一标示符,用来区别其他进程。
    查看标识符函数:getpid,他的返回值类型为pid_t可以认为是整形变量
    使用方法:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ppid

    ppid:父进程的标识符,获取父进程id函数为getppid()
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    正常在命令行上运行的程序的父进程都是0号进程bash

    状态

    PCB中会存储进程的状态信息,例如:任务状态,退出代码,退出信号等
    其中,程序中main函数的返回值可以被称为退出码,使用该命令可以查看最近执行进程的退出码
    在这里插入图片描述

    优先级

    cpu资源分配的先后顺序,就是指进程的优先权(priority)。 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
    还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

    查看优先级方式

    ps -l
    

    在这里插入图片描述
    其中:
    UID : 代表执行者的身份
    PID : 代表这个进程的代号
    PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
    PRI :代表这个进程可被执行的优先级,其值越小越早被执行
    NI :代表这个进程的nice值

    优先级确定原理

    PRI即进程的优先级,通俗点说就是程序被CPU执行的先后顺序,此值越小,进程的优先级别越高 。NI就是所要说的nice值了,其表示进程可被执行的优先级的修正数值 PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice 这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行。所以,调整进程优先级,在Linux下,就是调整进程nice值 。
    nice其取值范围是-20至19,一共40个级别。

    调整优先级

    使用top命令来调整优先级
    进入top后按“r”–>输入进程PID–>输入nice值
    在这里插入图片描述

    nice值范围

    nice其取值范围是-20至19,一共40个级别。为什么要设置一个范围主要是因为优先级再怎么设置,也只能是一种相对的优先级,不能出现绝对的优先级,否则会出现很严重的进程饥饿问题。

    程序计数器

    程序计数器: 程序计数器有点类似与指针的作用,他指向程序中即将被执行的下一条指令的地址。

    内存指针

    内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针

    上下文数据

    上下文数据: 进程执行时处理器的寄存器中的数据。

    时间片

    时间片是指每个进程单次运行的时间。

    上下文数据

    在单CPU情况下,用户可以感受到多个进程在同时进行,本质是通过cpu的快速切换完成的。
    进程在运行期间是有切换的,可能存在大量临时数据,暂时在寄存器中保存,但是cpu只有一套寄存器。
    在进行进程切换的时候,寄存器中的临时数据会被保存到PCB中,再次运行的时候会将上次保存的临时数据再给寄存器,这就是保护上下文数据。
    通过上下文的保护和恢复我们可以感受到进程是被切换的。

    I/O状态信息

    I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

    记账信息

    记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
    操作系统中有一个调度模块,用来较为均衡的调度每个进程,更为公平的获得cpu资源。记账信息用来被调度器用来作为分配资源的依据。

    查看进程信息

    ls /proc/进程标识号
    

    查看当前进程的信息
    在这里插入图片描述

    展开全文
  • 为了便于系统控制和描述进程的活动过程,在操作系统核心中定义了一个专门的数据结构,称为进程控制块( Process Control block,PCB)。 操作系统利用PCB来描述进程的基本情况以及进程的运行变化过程。PCB是进程存在的...

    为了便于系统控制和描述进程的活动过程,在操作系统核心中定义了一个专门的数据结构,称为进程控制块( Process Control block,PCB)。

    操作系统利用PCB来描述进程的基本情况以及进程的运行变化过程PCB是进程存在的唯一标志,当系统创建一个进程时,为进程设置一个PCB,再利用PCB对进程进行控制和管理。撤销进程时,系统收回它的PCB,进程也随之消亡

    1.PCB的内容

    进程控制块的内容可以分成调度信息现场信息两大部分。调度信息供进程调度时使用,描述了进程当前所处的状况,它包括进程名、进程号、地址空间信息、优先级、当前状态、资源清单、“家族”关系、消息队列指针、进程队列指针和当前打开文件等

    在调度信息中,进程名和进程号的作用是标识一个进程,一个进程的进程号必须是唯一的,用以说明进程的存在并区分各个进程

    系统为每个进程分配了一个地址空间,相关信息记录在地址空间信息内。

    优先级,确定了进程本身的优先级别,供调度时使用。

    当前状态,指明了该进程处于进程基本状态中的哪一种,是就绪的,还是等待的,还是正在运行。

    资源清单,列出了该进程运行所需的各种资源。

    "家族"关系,指明该进程是一个父进程,还是被别的进程所创建的子进程。

    消息队列指针,指明了进程所属的消息队列所在的地址,消息队列的作用是与其他进程进行通信。

    进程队列指针,指出进程在队列中的位置。

    当前打开文件,记录了进程正在使用的文件的情况。

    现场信息刻画了进程的运行情况,由于每个进程都有自己专用的工作存储区,其他进程运行时不会改变它的内容,所以,PCB中的现场信息只记录那些可能会被其他进程改变的

    寄存器,如程序状态字、时钟、界地址寄存器等。一旦中断进程的运行,必须把中断时刻的

    上述内容记入进程控制块的现场信息。

    需要指出的是,PCB的内容和大小随系统不同而异,它不仅和具体系统的管理及控制方法有关,也和系统规模的大小有关。

    2.进程的组成

    进程由程序、数据和进程控制块三部分组成。PCB是进程的“灵魂”,由于进程控制块中保存有进程的地址信息,通过PCB可以得到进程程序的存储位置,也可以找到整个进程。程序和数据是进程的“躯体”,程序部分描述了进程要实现的功能,而数据则是程序操作的对象。

    3.PCB组织

    为了便于管理,系统把所有的PCB用适当方式组织起来。一般说来,大致有以下三种组织方式。

    (1)线性方式

    将所有的PCB不分状态组织在一个连续表(称PCB表)中。该方式的优点是简单,且不需要额外的开销,适用于进程数目不多的系统;但缺点是往往需要扫描整个PCB表,才能找到需要的PCB。如图3-5a所示。

    (2)索引方式

    对于具有相同状态的进程,分别设置各自的PCB索引表,表目为每个PCB在该PCB表(线性表)中的地址。于是就构成了就绪索引表和等待索引表。另外,在内存固定单元设置三个指针,分别指示就绪索引表和等待索引表的起始地址以及执行态PCB在PCB表中的地址,如图35b所示。

    (3)链接方式

    对于具有相同状态进程的PCB,通过PCB中的链接字构成一个队列。链接字指出本队列下一PCB在PCB表中的编号(或地址),编号为0表示队尾,队首由内存固定单元中相应的队列指针指示,如此便形成就绪队列和等待队列。

    等待队列可以有多个,对应于不同的等待原因,如等待I/O操作完成,等待分配内存,等待接收消息等。就绪队列的排队原则跟调度策略有关,可以按优先数据排序,也可以按“先进先出”的原则出队等。另外,还可以将PCB表中的各空表目连接起来构成一个自由队列,若队列指针为0,表示该队列为空,如图35c所示。

    4.进程的队列

    为了实现对进程的管理,系统将所有进程的PCB排成若干个队列。通常,系统中进程队列分成如下三类。如图36所示。

    (1)就绪队列

    整个系统所有处于就绪状态的进程都按照某种原则排在该队列中。进程入队和出队的次序与处理器调度算法有关。在有些系统中,就绪队列可能有若干个。

    (2)等待队列

    每一个等待事件一个队列。当进程等待某一事件时,进入与该事件相应的等待队列。当某事件发生时,与该事件相关的一个或多个进程离开相应的等待队列。

    (3)运行队列

    在单处理器系统中整个系统有一个运行队列。实际上,一个运行队列中只有一个进程,可用一个指针指向该进程。

    5.进程队列的组成

    进程队列可以用进程控制块的链接来形成。常用链接的方式有两种:单向链接和双向链接

    在单向链接中,同一队列中的进程,通过进程控制块中的队列指针联系起来,前一进程的进程控制块中的指针值为它的下一个进程的进程控制块的地址,队列中最后一个进程的进程控制块中的指针值置为“0”。

    在双向链接中,设置两个指针,称为前向指针和后向指针,分别指出它的前一个或后个进程的进程控制块地址。另外,系统还为每个队列设置一个队首指针,指出该队列的第一个和最后一个进程的进程控制块地址,以便进行双向搜索。

    一个刚刚被创建的进程,它的初始状态是“就绪态”。因此,它应该置于就绪队列中。

    当一个就绪进程能被选中占用处理器时,就从就绪队列中退出成为“运行态”。进程在运行过程中,可能要求读磁盘上的信息而进入等待队列。可见,进程在执行过程中,随着状态的变化经常要从一个队列退出后再进入另一个队列,直至进程工作结束。

    一个进程从所在的队列中退出称为“出队”;一个进程排入到指定的队列中称“入队”;

    一个进程插入到某个进程队列中间的指定位置称“插队”;系统中负责进程入队和出队的工作称“队列管理”。

    现在以双向链接的队列讨论进程的“出队”和“入队”。假定某个指定进程要退出队列,则首先找到该队列的队首指针,沿链查找到要出队的进程,找到后只要修改与该进程相邻进程的前向或后向队列指针值就行了。

    下面列出进程出队的具体过程。根据要出队的进程原先在队列中的位置,可以分成三种情况。

    (1)队首进程出队

    队首进程出队时,只要把该进程的后继进程的前后指针值修改成“0”,把出队进程的后向指针值送入队首指针单元中。于是,原先在队列中的第二个进程成了队首,而原来的队首进程已与队列脱钩了。

    (2)非队首(或队尾)进程出队

    如果欲出队的进程既不是队首进程也不是队尾进程,则可以假定进程B要出队,进程B的前一个进程是进程A,而后一个是进程C。于是,进程B的出队过程是:把进程B的前向指针值送入进程C的前向指针位置;把进程B的后向指针值送入进程A的后向指针位置。于是,进程A的后向指针就指向进程C,进而程C的前向指针就指向进程A,进程B就从队列中退了出来。

    (3)队尾进程出队

    按照队尾进程的前向指针值找到它的前一个进程的进程控制块,把该进程的后向指针值修改成“0”成为当前的队尾进程,原先的队尾进程已经退出了队列。

    如果某进程要加入到一个队列中去,若队列原来是空的,则入队的进程就成为该队列的第一个进程。若原队列非空,则应先找到入队进程应插入的位置,再根据链接要求修改相邻进程的队列指针值。

    进程入队时,根据应插入的位置也可分成三种:从队首人队成为新的队首进程;从队尾入队成为新的队尾进程;插入到队列中某两个进程之间。这里简要地叙述进程插入到队列中某两个进程之间的过程。

    进程入队的位置既不是队首也不是队尾,假定进程B要插入队列,进程B的前一个进程是进程A,而后一个是进程C。插入进程的过程如下:在进程B的前向指针单元中记入进程C的前向指针位置,在进程B的后向指针单元记入进程A的后向指针位置,这样进程B的前后指针就分别指向了进程A和进程C。接着还要修改进程A的后向指针和进程C的前向指针,于是进程B进程控制块的地址送入进程A的后向指针位置,再把进程B进程控制块的地址送入进程C的前向指针位置。于是,进程A的后向指针就指向进程B,而进程C的前向指针就指向进程B,进程B就插入队列了。

    从队首入队和从队尾入队的过程请读者自行练习总结。

    四、进程控制

    我们已经知道,进程有一个从创建到消亡的生命周期,这就需要对进程在整个生命周期中各种状态之间的转换进行有效的控制,称为进程控制进程控制是通过进程控制原语来实现的

    所谓原语,是由若干条指令所组成的一个指令序列,用来实现某个特定的操作功能。这个指令序列的执行是连续的,具有不可分割性,在执行时也不可间断,直至该指令序列执行结束。原语又可称为原子操作。

    原语是操作系统核心(由一组程序模块所组成的、完成操作系统中基本功能)的一个组成部分。原语必须在管态下执行,并且常驻内存。

    原语和系统调用都可以被进程所调用,两者的差别在于原语有不可中断性,它是通过在其执行过程中关闭中断实现的,而且原语往往是被系统进程所调用。

    许多系统调用的功能都可用目态下运行的系统进程完成,而不一定要在管态下完成。例如文件的建立、打开、关闭、删除等系统调用,都是借助中断进入管态,然后转交给相应的进程,最终由进程实现其功能。下面介绍几个常用的原语。

    1.进程控制原语

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

    (1)创建原语 一个进程可以使用创建原语创建一个新的进程,前者称为父进程,后者称为子进程。子进程又可以创建新的子进程,构成新的父子关系,从而整个系统可以形成一个树形结构的进程家族。

    创建一个进程的主要任务是建立进程控制块PCB。

    创建进程的具体操作过程是:先申请一空闲PCB区域,然后将有关信息填入PCB,置该进程为就绪状态,最后把它插入就绪队列中。

    (2)撤销原语

    当一个进程完成任务后,就应当撤销它,以便及时释放它所占用的资源。撤销进程的实质是撤销PCB。一旦PCB撤销,进程就消亡了。

    撤销进程的具体操作过程是:找到要被撤销进程的PCB,将它从所在队列中消去,撤销属于该进程的一切“子孙进程”,释放被撤销进程所占用的全部资源,并消去被撤销进程的PCB。

    (3)阻塞原语

    若某个进程的执行过程中,需要执行I/O操作,则由该进程调用阻塞原语把进程从运行状态转换为阻塞状态。

    具体的操作过程是:由于进程正处于运行状态,因此首先应中断处理器的执行,把处理器的当前状态保存在PCB的现场信息中,然后把进程的当前状态置为等待状态,并把它插入到该事件的等待队列中去。

    (4)唤醒原语

    一个进程因为等待某事件的发生而处于等待状态,当该事件发生后,就用唤醒原语将其转换为就绪状态。

    具体操作过程是:在等待队列中找到该进程,将进程的当前状态置为就绪状态,然后将它从等待队列中撤出并插入到就绪队列中排队,等待调度执行。

    2.UNIX操作系统的进程创建操作fork

    在UNⅨX类操作系统中,父进程通过调用fork函数创建子进程。典型的步骤如下。

    1)为子进程分配一个空闲的proc结构(即进程描述符)。

    2)赋予子进程唯一的标识PID。

    3)以一次一页的方式复制父进程用户地址空间。

    4)获得子进程继承的共享资源的指针,如打开的文件和当前工作目录等。

    5)子进程就绪,加入调度队列。

    6)对子进程返回标识符0;向父进程返回子进程的PID

    以上步骤说明新创建的子进程基本与父进程相同:子进程得到与父进程用户地址空间相同的一份复制,包括文本、数据和bss段、堆以及用户栈;子进程还获得与父进程任何打开文件描述符相同的复制,这就意味着当父进程调用fork函数时,子进程可以读写父进程中打开的任何文件。父进程和新建子进程的区别在于它们有不同的PID。

    fork函数执行的特点是:只被调用一次,却会返回两次:一次是在调用进程(父进程)中,一次是在新创建的子进程中。在父进程中,fork函数返回子进程的PID。在子进程中,fork函数返回0。因为子进程的PID总是非零的,通过返回值就可以区分程序是在父进程还是在子进程中执行fork函数复制了一个自己,但是,创建了子进程并非要运行另一个与父进程一模一样的进程,绝大部分子进程需要运行不同于父进程的程序代码,这时我们需要调用exec函数来替换原父进程的代码。而exec函数为子进程运行不同于父进程的代码提供了一条途径。

    执行exec函数,其典型的步骤如下。

    1)在原进程空间装入新程序的代码、数据、堆和栈。

    2)保持进程ID和父进程ID等。

    3)继承控制终端。

    4)保留所有文件信息,如目录、文件模式和文件锁等。

    在UNⅨ中,父进程与子进程的执行是异步的,因此,父进程可能早于子进程结束,如此一来,子进程的资源,例如内存,就有可能无法归还给父进程,引起内存泄漏等问题。

    wait函数就是父进程用来获取子进程的结束状态并回收资源的,父进程调用wait函数自我阻塞,等候子进程结束发来信号,该信号唤醒父进程后由父进程回收子进程的各项资源、清理表格及回收内存等;若子进程先于父进程结束,此时,子进程会暂时变为“僵尸”状态,继续占有部分资源,直到父进程运行wait函数时资源才被回收(此时父进程不需要阻塞)。

    如果子进程不等父进程回收,而是在程序末尾直接调用exit函数退出,那么,在标准UNⅨ系统上,由于子进程调用了exit函数,会刷新关闭所有标准I/O流,包括标准输出。

    虽然这是由子进程执行的,但却是在父进程的地址空间中进行的,所以所有受到影响的标准I/O对象都是在父进程中的。当父进程再调用标准输出时,标准输出已被关闭了,于是出错返回-1。因此一般子进程不使用exit函数,而是用内核的exit函数,并等待父进程回收(注:改进后的 Linux操作系统与UNIX不同,有兴趣的读者可以自行查阅相关手册)。

    信号( Signal)函数是UNX处理异步事件的经典方法。信号可以说是进程控制的一部分。信号的产生如下。

    1)当用户按某些终端键时,产生信号。

    2)硬件异常产生信号:除数为0、无效的存储访问等。

    3)进程用kl函数可将信号发送给另一个进程或进程组。

    4)用户可用kl函数将信号发送给其他进程。

    5)当检测到某种软件条件已经发生,并将其通知有关进程。

    展开全文
  • 进程和进程控制块(PCB)

    千次阅读 2019-11-14 08:53:11
    进程控制块 进程概念 是程序的一次执行过程,是系统进行资源分配和处理机调度的一个独立单位。 是一个运行中程序的描述,通过描述信息中的内存指针可以找到内存中运行的程序代码及数据,并且通过上下文数据可以...
  • 进程控制块作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。(系统根据PCB感知进程的存在,即PCB是进程常驻于内存中...
  • 进程=程序段+数据段+进程控制块(PCB) PCB(进程控制块): 操作系统根据PCB对并发执行的进程进行控制和管理 通过PCB来感知进程的存在 一个进程仅有一个进程控制块 PCB组成: 标识符:与进程相关的唯一标识符...
  • 操作系统-进程概念与进程控制块

    千次阅读 2018-03-13 15:58:49
    进程 在学习操作系统时,对于进程我们经常能看到如下几个定义: 一个正在执行的程序。 一个正在计算机上执行的程序实例。 能分配给处理器并由处理器执行的实体 由一组执行的指令,一个当前状态和一组相关的系统...
  • 3、进程控制块及其作用、组织方式

    万次阅读 2017-11-03 21:37:25
    进程控制块中的信息1) 进程标识符(1) 内部标识符 操作系统为每一个进程赋予的唯一数字标识符,系统使用 (2) 外部标识符 有创建者提供,通常有字母与数字组成,往往是由用户(进程)在访问该进程时使用。描述进程的...
  • PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。作用是使一个在 多道程序环境下不能独立运行的程序,... Linux的进程控制块为一个由结构task_struct所定义的数据结构,其中包括管理进程所需的各种信息。
  • 进程控制块 PCB 概述 出现的原因:为了使参与并发执行的每个程序(含数据)都能独立地运行,在操作系统中必须为之配置一个专门的数据结构,称之为进程控制块(PCB)。 作用:PCB是描述进程基本情况和运行状态,控制...
  • 为了使程序能够并发执行,并且对程序加以描述及控制,引入了进程的概念。 2. 进程的定义 进程进程实体的运行过程,进程实体由程序段、相关的数据段和PCB三部分构成。在没有引入线程的操作系统中,进程是系统...
  • 进程控制块及其作用、组织方式

    千次阅读 2018-05-30 16:30:03
    进程控制块中的信息1) 进程标识符(1) 内部标识符 操作系统为每一个进程赋予的唯一数字标识符,系统使用 (2) 外部标识符 有创建者提供,通常有字母与数字组成,往往是由用户(进程)在访问该进程时使用。描述进程的...
  • 1、进程控制块作用 进程控制块PCB(Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB 中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。进程...
  • 进程控制块PCB

    万次阅读 2020-10-13 22:04:41
    进程控制块PCB是一个很重要的概念,下面看看他的作用 1:作为独立运行基本单位的标志 2:能实现间断性运行方式 3:提供进程通信管理所需要的信息 4:提供进程调度所需要的信息
  • 【OS笔记 7】进程控制块PCB详解

    千次阅读 2020-08-16 20:40:12
    作用: 用于唯一地标识一个进程进程本身:外标识、内部标识 • 家族信息:父进程、子进程信息 2. 处理机状态 处理机状态信息也称为处理机的上下文(Context),主要是由处理机的各种寄存器中的内容组成的。 也...
  • 操作系统之进程控制块PCB

    千次阅读 2020-03-21 13:02:35
    操作系统之进程控制块PCB PCB的作用: PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。 (1) 作为独立运行基本单位的标志。当一个...
  • 进程控制块(PCB)  每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。现在我们全面了解下其中都有哪些信息。  在Linux中,这个结构叫做task_struct。...
  • Linux C/C++编程之(十六)进程及进程控制

    千次阅读 多人点赞 2020-07-07 11:47:43
    6)进程控制块PCB 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负...
  • 进程控制块(PCB)的结构

    千次阅读 2013-02-19 10:32:52
    进程控制块(PCB)的结构 进程控制块 PCB (Process Control Block):  存放进程的管理和控制信息的数据结构称为进程控制块。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,...
  • linux进程控制块

    千次阅读 2013-05-03 11:25:28
    这个户口操作系统被称为PCB(进程控制块),在linux中具体实现是 task_struct数据结构,它记录了一下几个类型的信息: 1.状态信息,例如这个进程处于可执行状态,休眠,挂起等。 2.性质,由于unix有很多变种,进程有...
  • 链接方式实现进程队列 进程控制块能够标识进程的存在,并动态刻画进程的特性,所以进程队列可以用进程控制块的链接来形成。 链接方式有:单向链接和双向链接。 一个进程从所在的队列中退出称为“出队” 一个进程能...
  • 进程控制块PCB结构 task_struct 描述

    千次阅读 2016-06-02 20:56:48
    本分类下文章大多整理自《深入分析linux内核源代码》一书。...Linux中的每个进程由一个task_struct数据结构来描述,在Linux中,任务(task)、和进程(process)是两个相同的术语,task_struct其实就是
  • Linux进程控制(精讲)

    万次阅读 多人点赞 2021-09-23 21:55:48
    文章目录进程创建fork函数初始fork函数返回值写时拷贝fork常规用法fork调用失败的原因进程终止进程退出场景进程常见退出方法_exit函数exit函数return退出进程等待进程等待的必要性进程等待的方法wait方法waitpid方法...
  • Linux中的进程及进程控制

    万次阅读 多人点赞 2018-09-03 17:33:14
    进程控制块PCB 进程状态 环境变量: 常见环境变量 getenv函数 setenv函数 unsetenv函数 进程控制 fork函数 getpid函数 getppid函数 getuid函数 getgid函数 进程共享 gdb调试 exec函数族 execlp函数 ...
  • 进程存在的标识是进程控制块(PCB),进程控制块结构如下: Typeedef struct node { Char name[10]; /*进程标识符*/ Int prio; /*进程优先数*/ Int cputime /*进程占用CPU时间*/ Int neentime /*进程到完成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 189,008
精华内容 75,603
关键字:

进程控制块的作用