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

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

3天内不再提示

进程的三种基本状态及进程控制块(PCB)

PCB线路板打样 来源:博客园 作者:mickole 2021-01-15 10:36 次阅读

一,进程状态变迁

进程的三种基本状态

就绪(Ready)状态

当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

执行(Running)状态
当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

阻塞(Blocked)状态
正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

状态转换图:

一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。

(1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。

(2) 执行→就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完或更高优先级的进程抢占而不得不让出处理机,于是进程从执行状态转变成就绪状态。

(3) 执行→阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。

(4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。

(5) 运行→终止

程序执行完毕,撤销而终止

以上是最经典也是最基本的三种进程状态,但现在的操作系统都根据需要重新设计了一些新的状态。

linux

其和浅度睡眠基本类似,但有一点就是不可被其他进程信号或时钟中断唤醒。Linux 使用TASK_UNINTERRUPTIBLE 宏表示此状态。

  • 运行状态(TASK_RUNNING):是运行态和就绪态的合并,表示进程正在运行或准备运行,Linux 中使用TASK_RUNNING 宏表示此状态
  • 可中断睡眠状态(浅度睡眠)(TASK_INTERRUPTIBLE):进程正在睡眠(被阻塞),等待资源到来是唤醒,也可以通过其他进程信号或时钟中断唤醒,进入运行队列。Linux 使用TASK_INTERRUPTIBLE 宏表示此状态。
  • 不可中断睡眠状态(深度睡眠状态)(TASK_UNINTERRUPTIBLE):
  • 暂停状态(TASK_STOPPED):进程暂停执行接受某种处理。如正在接受调试的进程处于这种状态,Linux 使用TASK_STOPPED 宏表示此状态。
  • 僵死状态(TASK_ZOMBIE):进程已经结束但未释放PCB,Linux 使用TASK_ZOMBIE 宏表示此状态

状态转换图如下:

就绪态在支持虚拟内存的操作系统中可能分为:在内存中就绪和在交换空间就绪,因为支持虚拟内存的操作系统会将当前不太活跃的一些进程交换到交换空间,交换空间就绪进程要运行要先换人内存出入内存就绪态,在由cpu调度执行。

二,进程控制块(PCB)

进程控制块包括:

进程描述信息

  • 进程标识符用于唯一的标识一个进程(pid,ppid)。

进程控制信息:

  • 进程当前状态
  • 进程优先级
  • 程序开始地址
  • 各种计时信息
  • 通信信息

资源信息:

  • 占用内存大小及管理用数据结构指针
  • 交换区相关信息
  • I/O设备号、缓冲、设备相关的数结构
  • 文件系统相关指针

现场保护信息(cpu进行进程切换时):

进程标识:PID

  • 每个进程都会分配到一个独一无二的数字编号,我们称之为“进程标识”(process identifier),或者就直接叫它PID.
  • 是一个正整数,取值范围从2到32768

可以通过:cat /proc/sys/kernel/pid_max 查看系统支持多少进程

  • 当一个进程被启动时,它会顺序挑选下一个未使用的编号数字做为自己的PID
  • 数字1一般为特殊进程init保留的

init进程实际上是用户进程,它是一个程序,在/sbin/init,linux启动的第一个进程

实际上linux中还存在0号进程(内核进程),它是一个空闲进程,它进行空闲资源的统计及交换空间的换入换出,1(init)进程是由0号进程创建的。

三,进程创建

  • 不同的操作系统所提供的进程创建原语的名称和格式不尽相同,但执行创建进程原语后,操作系统所做的工作却大致相同,都包括以下几点:
  • 给新创建的进程分配一个内部标识(pcb),在内核中建立进程结构。
  • 复制父进程的环境
  • 为进程分配资源, 包括进程映像所需要的所有元素(程序、数据、用户栈等),
  • 复制父进程地址空间的内容到该进程地址空间中。
  • 置该进程的状态为就绪,插入就绪队列。

四,进程撤销

进程终止时操作系统做以下工作:

  • 关闭软中断:因为进程即将终止而不再处理任何软中断信号;
  • 回收资源:释放进程分配的所有资源,如关闭所有已打开文件,释放进程相应的数据结构等;
  • 写记帐信息:将进程在运行过程中所产生的记帐数据(其中包括进程运行时的各种统计信息)记录到一个全局记帐文件中;
  • 置该进程为僵死状态:向父进程发送子进程死的软中断信号,将终止信息status送到指定的存储单元中;
  • 转进程调度:因为此时CPU已经被释放,需要由进程调度进行CPU再分配。

五,终止进程的五种方法

  • 从main函数返回:从return返回,执行完毕退出
  • 调用exit:C函数库,实际上也是调用系统调用_exit完成的,在任何一个函数调用exit函数都可使得进程撤销
  • 调用_exit:系统调用
  • 调用abort:调用abort()函数使得进程终止,实际上该函数是产生一个SIGABRT信号,
  • 由信号终止:发送一些信号如SINGINT等信号
    编辑:hfy
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5020

    浏览量

    117630
  • Linux
    +关注

    关注

    87

    文章

    10981

    浏览量

    206687
  • 处理机
    +关注

    关注

    0

    文章

    12

    浏览量

    7810
  • 进程
    +关注

    关注

    0

    文章

    193

    浏览量

    13874
收藏 人收藏

    评论

    相关推荐

    浅析Windows多进程编程概念

    进程的内核对象:即我们通常所讲的PCB进程控制),该结构只能由该内核访问,他是操作系统用来管理进程的一个数据结构,操作系统通过该数据结构
    发表于 08-05 07:17

    浅析Linux进程

    进程是程序的一次执行,是运行在自己的虚拟地址空间的一个具有独立功能的程序.进程是分配和释放资源的基本单位,当程序执行时,系统创建进程,分配内存和 CPU 等资源;进程结束时,系统回收这
    发表于 08-07 06:53

    如何理解ARM中的进程

    进程控制都存储在task[]数组中。进程三种基本状态?   a> 就绪状态
    发表于 10-23 16:02

    进程类型及三种状态

    进程类型进程三种状态
    发表于 04-02 07:06

    开发必读,操作系统的进程和线程

    三种基本状态,即运行状态、就绪状态、阻塞状态进程三种
    发表于 07-01 06:30

    操作系统 : 进程与线程

    本文为《现代操作系统》的读书笔记目录程序顺序执行与并发执行进程的定义进程状态转换进程控制进程控制
    发表于 07-01 10:49

    进程与程序有何不同

    着文件、静态和可以复制。进程是暂时的,程序使长久的:进程是个状态变化的过程,程序可长久保存。进程与程序组成不同:进程的组成包括程序、数据和
    发表于 11-08 08:27

    进程有几种状态

    文章目录操作系统进程和线程什么是进程?什么是线程?进程和线程有什么区别?何时使用多进程,何时使用多线程?进程有几种
    发表于 12-24 07:16

    Linux进程控制编程

    7.2 Linux进程控制编程 1.fork() 在Linux中创建一个新进程的惟一方法是使用fork()函数。fork()函数是Linux中一个非常重要的函数,和读者以往遇到的函数有一些区别,因为
    发表于 10-18 14:16 0次下载

    你知道僵尸进程是个什么东西?

    在UNIX系统中,僵尸进程是指完成执行(通过exit系统调用,或运行时发生致命错误或收到终止信号所致)但在操作系统的进程表中仍然有一个表项(进程控制PCB),处于”终止
    发表于 04-22 17:50 1143次阅读

    Linux 进程状态浅析

    进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执
    发表于 04-02 14:40 219次阅读

    闲谈进程控制PCB的五大作用

    为了使参与并发执行的每个程序,包含数据都能独立地运行,在操作系统中必须为之配置一个专门的数据结构,称为进程控制块(PCB,Process Control Block)。进程PCB是一
    的头像 发表于 08-21 16:58 7436次阅读

    进程有哪些状态?细说进程状态

    进程有哪些状态?这个问题在面试的时候出现的概率也比较高。
    的头像 发表于 07-25 17:06 913次阅读
    <b class='flag-5'>进程</b>有哪些<b class='flag-5'>状态</b>?细说<b class='flag-5'>进程</b>的<b class='flag-5'>状态</b>

    为什么需要进程 特征和定义有哪些

    资源分配调度的独立单位。 结构特征:为了使程序能够独立运行,应配置一个进程控制PCB进程是由程序段,相关的数据段和PCB进程控制块)三
    的头像 发表于 10-08 15:29 360次阅读
    为什么需要<b class='flag-5'>进程</b> 特征和定义有哪些

    PCB进程的创建和终止过程

    PCB进程控制块 独立运行基本单位的标志:创建进程时创建PCB进程结束时回PCB
    的头像 发表于 10-08 15:36 769次阅读