精华内容
下载资源
问答
  • 进程控制块的主要内容
    千次阅读
    2018-12-29 21:01:08

    前提

    系统中需要有描述进程存在和能够反映其变化的物理实体,即进程的静态描述

    进程的静态描述由3部分组成:进程控制块(Process Control Block,PCB),有关程序段和该程序段操作的数据结构集

    PCB是系统感知进程的唯一实体用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构

    程序段以及数据结构集是进程完成所需功能的物质基础

    一个进程的PCB全部或部分常驻内存,而程序段和数据结构集存放在外存

     

     

    进程控制块的内容

    PCB集中反映一个进程的动态特征,创建一个进程时,应首先创建其PCB,然后根据PCB中的信息对进程实施有效的管理和控制。当一个进程完成其功能时,系统会通过释放PCB来释放进程所占有的各种资源,进程也随之消亡。

     

    1)进程标识符

    内部标识符:对于系统而言,每个进程都有唯一的进程名或进程标识号,用于识别每个进程;

    外部标识符:由用户提供的标识符,有利于资源共享和保护;为了描述家族关系的标识符,表示进程之间的关系。

     

    2)处理机状态

    通用寄存器:用于暂存信息;

    指令计数器:存放下一个指令的地址;

    程序状态字PSW:包含状态信息;

    用户栈指针:指向与进程相关的系统栈,系统栈用于存放过程和系统调用参数及调用地址。

     

    3)进程调度信息

    进程状态;

    进程优先级;

    与进程调度算法相关的其他信息:如进程已等待CPU的时间、预计执行时间等等;

    事件:进程由执行状态转变为阻塞状态后等待的事件,即阻塞原因。(可回顾进程状态转换

     

    4)进程控制信息

    进程的程序段数据结构集的地址;

    进程同步通信机制;

    进程运行所需要的资源清单:包括有关存储器的信息、使用输入输出设备的信息和有关文件系统的信息等。

    链接指针:指向下一个进程的PCB的首地址。

     

    5)CPU现场保护区

    若进程因等待某个事件而进入阻塞状态或因某个事件发生而被中止在处理机上的执行,为了以后该进程能在被打断出恢复执行,需要设置专门的CPU现场保护区,以存储退出执行时的进程现场数据

     

    由于PCB中包含较多信息,往往要占据较大的存储空间(一般占几百到几千个字节),所以在某些系统中为了减少PCB对内存的占用量,只允许 PCB中最常用的部分保存在内存中,其他部分则存放于外存,待该进程将要执行时,与其他数据一起装入内存。

     

    更多相关内容
  • 主要讲解进程控制块(pcb)的定义和描述,适合想了解操作系统的PCB
  • PCB(进程控制块)讲解

    万次阅读 多人点赞 2019-05-04 22:34:45
    PCB:进程控制块,实际是一个结构体,放在sched.h文件中,Linux下可以通过whereis sched.h命令查看具体路径 该结构体主要包含: 1.进程id 2.进程的状态:就绪、运行、挂起、停止 3.进程切换时需要保存和恢复的一些...

    PCB:进程控制块,实际是一个结构体,放在sched.h文件中,Linux下可以通过whereis sched.h命令查看具体路径
    该结构体主要包含:
    1.进程id
    用于区别进程
    2.进程的状态:就绪、运行、挂起、停止
    在这里插入图片描述
    3.进程切换时需要保存和恢复的一些CPU寄存器
    寄存器放在CUP中,A程序和B程序分时执行的时候,A占用CPU执行一定时间,CPU便被B占用了,然后又轮到A执行,A的资源如寄存器如何恢复到挂起时的状态,这时候就需要PCB来记住A停止运行时的寄存器状态,恢复后继续执行。
    4.描述虚拟地址空间的信息
    虚拟地址和物理地址的对于关系
    5.描述控制终端的信息
    如xshell打开两个终端连接同一个linux主机,在两个终端中执行同一个程序,这个终端的信息都分别存在PCB中
    6.当前工作目录
    如分别在/home和/etc目录下分别执行pwd命令,shell进程输出的结果是不一样的,这个工作目录就记录在PCB中
    7.umask掩码
    保护文件创建和修改的权限
    如输入umask命令,默认输出是0022,表示创建一个文件的时候,默认去掉组用户和其他用户对该文件的写权限,如果把umask改为0000,则用户创建的文件可以被文件的所属用户,所属组,其他用户具有可写可读可执行权限。
    8.文件描述符
    9.和信号相关的信息
    10.用户id和组id
    11.会话和进程组
    12.进程可以使用的资源上限
    如输入命令ulimit -a
    在这里插入图片描述

    展开全文
  • 进程控制块 PCB 概述 出现的原因:为了使参与并发执行的每个程序(含数据)都能独立地运行,在操作系统中必须为之配置一个专门的数据结构,称之为进程控制块(PCB)。 作用:PCB是描述进程基本情况和运行状态,控制...

    程序执行

    程序的执行方式有顺序执行和并发执行两种方式。

    程序顺序执行

    程序顺序执行时特征:

    1. 顺序性:处理机严格按照程序所规定的顺序执行。
    2. 封闭性:程序在封闭环境下运行,即程序运行时独占全机资源,资源的状态只有本程序才能改变它。程序一旦开始执行,其执行结果不受外界因素影响。
    3. 可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,不论从头到尾是否有停顿,都可获得相同的结果。
      在这里插入图片描述
      缺点:虽然实现方便,但系统资源的利用率很低。

    程序并发执行

    前提:只有不存在前趋关系的程序之间才有可能并发执行。

    程序并发执行的特征:

    1. 间断性:程序并发执行后,程序间共享系统资源。为了完成同一项任务相互合作,致使这些并发执行的程序之间形成了相互制约的关系。例如在执行程序B的程序段2之前,必须先执行程序A的程序段2,此时若程序A的程序段2还未执行,要暂停等待。因此并发程序具有“执行——暂停——执行”的间断性的活动规律。
      在这里插入图片描述
    2. 失去封闭性:因为多个程序并发执行,因此系统资源并不是独享的,致使其中任一程序在执行时,其环境都必然会受到其它程序的影响。
    3. 不可再现性:无法确定程序的执行顺序,失去了封闭性,因此会导致失去可再现性。即使多次执行时的环境和初始条件相同,得到的结果也可能不一致。

    进程的定义

    为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,人们引入“进程”的概念。

    1. 进程是程序的一次执行。
    2. 进程是一个程序及其数据在处理机上顺序执行时所发生的的活动。
    3. 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

    进程的特征

    1. 动态性:进程的实质是进程实体的执行过程。进程实体有一定的生命周期,它由创建而产生,由调度而执行,由撤销而消亡。程序只是一组有序的集合,不具有活动的含义,是静态的。
    2. 并发性:多个进程实体同存于内存中,且能在一段时间内同时运行。
    3. 独立性:传统OS中,独立性是指进程实体是一个能独立运行、独立获得资源和独立接收调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。
    4. 异步性:进程按异步方式运行,按各自独立的、不可预知的速度向前推进(具体取决于CPU调度)。

    进程基本状态及状态转换

    进程三状态

    • 就绪状态:进程其他所需资源都准备好了,只要获取CPU就可以立即运行。等待CPU调度的状态。
    • 运行状态:进程已获得CPU,处于正在执行的状态。
    • 阻塞状态:当进程运行中遇到I/O请求、申请缓冲区失败等无法继续运行,会转为阻塞态。此时会发生进程调度,将当前CPU资源让出给另一个进程。
      在这里插入图片描述

    进程五状态

    • 新建状态:进程创建的时候涉及很多复杂的过程,如首先进程申请一个空白PCB,然后向PCB中填写用于控制和管理进程的信息,然后为该进程分配运行时除CPU外的资源。只有完成后才会将进程转为就绪状态(将进程插入就绪队列中)。
    • 终止状态:进程终止也涉及一系列处理过程。进入终止态的进程以后不能再执行,但在操作系统中依然保留一个记录(状态码、计时统计数据等),供其他进程收集。一旦其他进程完成了对其信息的提取之后,操作系统将删除该进程,即将PCB清零,然后将PCB空间返回系统。在这里插入图片描述

    进程七状态

    处于挂起状态的进程:都位于外存,且暂不接受调度。

    • 就绪挂起状态:考虑到系统当前资源状况和性能的要求,不分配给新建进程所需资源,主要是主存,相应的系统将进程状态转为就绪挂起状态,安置在外存,不参与进程调度,此时进程的创建工作尚未完成。当阻塞挂起状态的进程,期待的事情发生后就会变为就绪挂起状态。
    • 阻塞挂起状态: 为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上。
      在这里插入图片描述

    进程控制块 PCB

    概述

    • 出现的原因:为了使参与并发执行的每个程序(含数据)都能独立地运行,在操作系统中必须为之配置一个专门的数据结构,称之为进程控制块(PCB)。
    • 作用:PCB是描述进程基本情况和运行状态,控制和管理进程。
    • PCB是进程存在的唯一标志。
    • 创建进程 => 创建进程映像中的PCB
      撤销进程 => 撤销进程映像中的PCB

    作用

    1. 作为独立运行基本单位的标志:系统是通过PCB感知进程的存在,PCB是进程存在的唯一标志。
    2. 能实现间断性运行方式:有了PCB,系统就可以将CPU现场信息保存在被中断进程的PCB中,供该进程再次被调度执行时恢复CPU现场时使用。
    3. 提供进程管理所需要的信息:在PCB中记录程序和数据在内存或外存中的起始指针,能够找到相应的程序和数据。通过PCB的资源清单能够了解到该进程所需的全部资源,例如文件等。由此可见,OS总是根据PCB实施对进程的控制和管理。
    4. 提高进程调度所需要的信息:在PCB中记录可进程处于何种状态,在进行调度的时候,需要查询处于就绪状态的进程才能被调度。此外进程的调度可能还需要知道进程的优先级等信息。
    5. 实现与其它进程的同步与通信:在采用信号量机制实现进程同步时,要求在每个进程中都设置有相应的用于同步的信号量。在PCB中还具有用于实现进程通信的区域或通信队列指针等。

    进程控制块中的信息

    1. 进程标识符:用于唯一地表示一个进程。通常有两种标识符:
      ① 外部标识符:由创建者提供,由数字、字母组成。
      ② 内部标识符:OS为进程设置的唯一的数字标识符,通常是进程的序号。
    2. 处理机状态:即处理机的上下文信息,主要由处理机的各种寄存器的内容组成。
      处理机处于执行状态时,正在处理的很多信息都是存放在寄存器中。
      当进程被切换时,处理机状态信息都必须保存在相应的PCB中,以便在该进程重新执行时能再从断点继续执行。
      ① 通用寄存器(用户可视寄存器):用户程序可以访问,用于暂存信息。
      ② 指令计数器:存放了要访问的下一条指令地址。
      ③ 程序状态字PSW:含有状态信息,如条件码、执行方式、中断屏蔽标志等。
      ④用户栈指针:每个用户进程都有一个或多个与之相关的系统栈,用于存放过程和系统调用参数及调用地址。栈指针指向栈顶。
    3. 进程调度信息:如进程状态、进程优先级、事件(阻塞原因…)、其他信息(已执行时间、已执行时间总和)
    4. 进程控制信息:程序和数据的地址(首地址);进程同步和通信机制(如消息指针、信号量等);资源清单(列出运行期间进程除CPU外所需全部资源);链接指针(下一进程PCB首地址)。

    进程控制块的组织方式

    1. 线性方式:将系统中所有PCB都组织在一张线性表中,将该表的首地址存放在内存的一个专用区域。实现简单,开销小,但每次查找都要扫描整张表。使用进程数目不多的系统。
    2. 链接方式:把具有相同状态的进程的PCB分别通过PCB的链接字段连接成一个队列。可以形成如就绪队列、阻塞队列、空白队列等。就绪队列按优先级排序,阻塞队列也可以根据不同的阻塞原因分成多个队列。
    3. 索引方式:将前两种结合。系统根据所有进程状态的不同,建立几张索引表,如就绪索引表、阻塞索引表。把索引表的首地址记录在内存的专用单元,在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。

    本文为《计算机操作系统》第四版 学习笔记+个人总结。

    展开全文
  • 为了便于系统控制和描述进程的活动过程,在操作系统核心中定义了一个专门的数据结构,称为进程控制块( 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

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

    万次阅读 2017-02-13 12:17:05
    进程控制块包含三类信息  1.标识信息。 用于唯一地标识一个进程,常常分由用户使用的外部标识符和被系统使用的内部标识号。几乎所有操作系统中进程都被赋予一个唯一的、内部使用的数值型的进程号,操作系统的其他...
  • 进程控制块PCB(Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB 中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。进程控制块的作用是使一个在...
  • 我们在介绍list.h文件时说道,linux是把所有的进程组织成双向链表来管理的,这个双向链表中的每个节点就是一个叫task_struct的数据结构,这个数据结构被叫做进程控制块(PCB),也叫进程描述符。该结构定义在文件中...
  • PCB(进程管理)_百度百科

    千次阅读 2021-07-23 03:27:06
    PCB(进程管理块)语音编辑锁定上传视频为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。...
  • 进程控制块、进程上下文

    千次阅读 2018-08-14 07:58:24
    进程控制块 为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块(PCB)。 它是进程重要的组成部分,它记录了操作系统所需的、用于描述进程的当前状态和控制进程的全部信息。 操作系统...
  • 【OS笔记 7】进程控制块PCB详解

    千次阅读 2020-08-16 20:40:12
    处理机状态信息也称为处理机的上下文(Context),主要是由处理机的各种寄存器中的内容组成的。 也就是中断现场的保留区,当进程被切换时,处理机状态信息必须都保存在相应的PCB中,以便该进程在重新执行时能再从...
  • Linux:进程控制块PCB

    千次阅读 2018-04-20 13:10:42
    PCB:进程控制块 0.PCB是干什么的? 学了操作系统后,我们都知道操作系统要想管理一个对象,它不是直接进行管理的,而是通过得到被管理者的一些有效信息加以管理的,因此在这里我们也可以这样理解,操作系统...
  • PCB(进程控制块)中所储存的信息

    千次阅读 2019-04-20 17:21:31
    1.进程id。系统中每个进程有唯一的id,在c语言中用pid_t类型表示...5,描述控制终端的信息。 6.当前工作目录(Current Working Directory) 7.umask掩码 8.文件描述符表,包含很多指向结构体的指针 9.和信号相关...
  • 3、进程控制块及其作用、组织方式

    万次阅读 2017-11-03 21:37:25
    进程控制块中的信息1) 进程标识符(1) 内部标识符 操作系统为每一个进程赋予的唯一数字标识符,系统使用 (2) 外部标识符 有创建者提供,通常有字母与数字组成,往往是由用户(进程)在访问该进程时使用。描述进程的...
  • 进程控制块PCB

    千次阅读 2013-04-24 00:30:10
    PCB(process control block),进程控制块,是我们学习操作系统后遇到的第一个数据结构描述,它是对系统的进程进行管理的重要依据,和进程管理相关的操作无一不用到PCB中的内容。一般情况下,PCB中包含以下内容: ...
  • 进程控制块(PCB)的结构

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

    千次阅读 2018-05-30 16:30:03
    进程控制块中的信息1) 进程标识符(1) 内部标识符 操作系统为每一个进程赋予的唯一数字标识符,系统使用 (2) 外部标识符 有创建者提供,通常有字母与数字组成,往往是由用户(进程)在访问该进程时使用。描述进程的...
  • 进程控制块PCB结构 task_struct 描述

    千次阅读 2016-06-02 20:56:48
    本分类下文章大多整理自《深入分析linux内核源代码》一书。...Linux中的每个进程由一个task_struct数据结构来描述,在Linux中,任务(task)、和进程(process)是两个相同的术语,task_struct其实就是
  • 进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内核栈的切换当进程因为中断或者...
  • linux进程控制块

    千次阅读 2013-05-03 11:25:28
    这个户口操作系统被称为PCB(进程控制块),在linux中具体实现是 task_struct数据结构,它记录了一下几个类型的信息: 1.状态信息,例如这个进程处于可执行状态,休眠,挂起等。 2.性质,由于unix有很多变种,进程有...
  • 操作系统实验——进程控制

    千次阅读 2020-10-30 11:23:50
    进程控制块 ⑵进程上下文 ⑶进程上下文切换 ⑷进程空间与大小 3. 进程状态及其转换 ⑴进程状态 ⑵进程状态转换 4.进程控制 ⑴进程创建与撤销 ⑵进程的阻塞与唤醒 实验目的与要求(及主要实验仪器、设备): 1、...
  • 进程控制块中的信息: 1.进程标识符:进程标识符是惟一地标识一个进程。一个进程通常有两种标识符  (1).内部表示符:在所有的操作系统中,都为每一个进程赋予了一个惟一的数字标识符,它通常是一个进程的序号。...
  • 实验二:进程控制 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 ...
  • 【操作系统】第五话·进程的切换与进程控制

    千次阅读 多人点赞 2022-04-02 10:01:30
    进程控制主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简而言之,进程控制就是为了实现进程状态转换。 2.如何实现进程控制? 我们使用“原语”来实现...
  • 操作系统3 ————PCB和进程控制

    万次阅读 多人点赞 2019-02-02 17:27:28
    操作系统3 ————进程控制块(PCB)详解 一.目录 操作系统3 ————进程控制块(PCB)详解 一.目录 二. 进程控制块 1.概述 2.进程控制块中的信息 3.进程控制块的作用 4.进程控制块的组织...
  • ZUCC操作系统原理习题 进程概念

    千次阅读 热门讨论 2020-03-25 01:25:25
    1.在操作系统中用户进程本身启动的唯一状态转换是()。 编号 选项 A 调度 B 阻塞 C 时间片到 D 唤醒 2.在分时系统中,导致创建进程的典型事件是()。 编号 选项 A 用户查询 B 用户输入 C ...
  • 进程的描述与控制 进程的描述 程序的顺序执行和并发执行 顺序执行的特点 顺序性:每一操作都在下一操作开始前结束,严格按照顺序; 封闭性:程序在封闭环境下执行,程序运行时占全机资源,资源的状态只有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 184,985
精华内容 73,994
关键字:

进程控制块的主要内容