linux下的进程(process)相关概念(定义、组成、状态、PCB、分类(僵尸、孤儿、守护进程)、进程的监控(查看命令))及软件开发相关面试问题

进程(process)相关概念

  • 进程(process)
    • 1、进程定义
    • 2、进程的分类
    • 3、进程状态
    • 4、进程的组成
      • 4.1、正文段(text)和用户数据段
      • 4.2、PCB进程控制块
    • 5、特殊进程
      • 5.1 僵尸进程(Zombie )(面试重点)
        • 5.1.1、定义
        • 5.1.2、产生背景
        • 5.1.3、危害场景
        • 5.1.4、僵尸进程测试程序
        • 5.1.5、僵尸进程解决办法
          • (1)通过信号机制
          • (2)fork两次
      • 5.2 孤儿进程(不会有什么危害)
        • 5.2.1、定义
        • 5.2.2、孤儿进程的回收(init进程)
        • 5.2.3、孤儿进程测试程序
      • 5.3 守护进程(daemon)(面试要点)
        • 5.3.1、定义
        • 5.3.2、作用
        • 5.3.3、分类(部分)
        • 5.3.3、创建
        • 5.3.4、守护进程样例
    • 6、进程监控(linux指令)(面试要点)
      • 6.1 使用ps命令监控系统进程(重要)
      • 6.2 使用top命令监控系统进程(重要)
      • 6.3 使用lsof命令监控系统进程
      • 6.4 kill
  • 参考

进程(process)

1、进程定义

  • 进程是 Unix 和 Linux 系统中对正在运行中的应用程序的抽象,通过它可以管理和监视程序对内存、处理器时间和 I / O资源的使用。程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中,操 作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。
    面试热点
    -1、 进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位 或者linux操作系统最小的资源管理单元
  • 2、进程与程序对比
    linux下的进程(process)相关概念(定义、组成、状态、PCB、分类(僵尸、孤儿、守护进程)、进程的监控(查看命令))及软件开发相关面试问题
    一般操作系统将进程分为五个状态:
    • 1、新建:新建表示进程正在被创建。
    • 2、运行:运行是进程正在运行。
    • 3、阻塞:阻塞是进程正在等待某一个事件发生。
    • 4、就绪:就绪是表示系统正在等待CPU来执行命令。
    • 5、结束:完成表示进程已经结束了系统正在回收资源。

    Linux上进程有5种状态,这5中状态可以与一般操作系统的状态对应起来:

    • 1、运行:正在运行或在运行队列中等待。
    • 2、中断:休眠中, 受阻, 在等待某个条件的形成或接受到信号。
    • 3、不可中断:收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
    • 4、僵死:进程已终止, 但进程描述符存在,直到父进程调用wait4()系统调用后释放。
    • 5、停止:进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。

    4、进程的组成

    • 1.正文段(text):存放程序代码。正文段具有只读的属性。
    • 2.用户数据段(user segment):是进程在运行过程中处理数据的集合,它们是 进程直接进行操作的所有数据(包括全部变量在内),以及进程使用的进程堆栈
    • 3.系统数据段(system segment):存放着进程的控制信息,即进程控制块(PCB ,Processing Control Block),名字为task_struct的数据结构。

    说明:
    PCB(进程控制块) 结构体 task struct,负责管理进程的所有资源,它的成员 mm_struct 指向这个进程相关的内存资源,mm_struct指向一个结构体,包括:

    栈 :给局部变量(自动变量)分配空间的地方
    堆 :使用malloc、new… 分配的空间(也叫自由区)
    BSS段
    数据段
    代码段:代码区是只读的,程序代码会被读入此区,程序执行期间执行的就是代码区中的代码。

    进程空间管理图片

    linux下的进程(process)相关概念(定义、组成、状态、PCB、分类(僵尸、孤儿、守护进程)、进程的监控(查看命令))及软件开发相关面试问题
    • 1、用户数据段

    Linux系统把进程的数据段又划分成三部分:

    • 1、用户栈区(供用户程序使用的信息区);
    • 2、用户数据区(包括用户工作数据和非可重入的程序段);
    • 3、系统数据区(包括系统变量和对换信息)

    ————————————————————————————————

    • 2、正文段
      程序段是可重入的程序,能被若干进程共享。为了管理可共享的正文段,Linux设置了一张正文表,每个正文段都占用一个表目,用来指出该正文段在内存和磁盘上的位置、段的大小以及调用该段的进程数等情况。

    4.2、PCB进程控制块

    在Linux成功fork进程后,会在系统中创建一个task_struct(也称PCB, process control block),用来描述当前进程的状态、进程间关系、优先级和资源等信息。

    linux下的进程(process)相关概念(定义、组成、状态、PCB、分类(僵尸、孤儿、守护进程)、进程的监控(查看命令))及软件开发相关面试问题

    gcc zombie.c -o test1
    ./test1

    linux下的进程(process)相关概念(定义、组成、状态、PCB、分类(僵尸、孤儿、守护进程)、进程的监控(查看命令))及软件开发相关面试问题

    linux下的进程(process)相关概念(定义、组成、状态、PCB、分类(僵尸、孤儿、守护进程)、进程的监控(查看命令))及软件开发相关面试问题

    来源:JMW1407

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月22日
下一篇 2020年5月23日

相关推荐