Linux教程

2021-2022-1 20212808 《Linux内核原理与分析》第七周作业

本文主要是介绍2021-2022-1 20212808 《Linux内核原理与分析》第七周作业,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

遇到的问题

进程的描述和进程的创建

进程的描述

  • 操作系统内核实现操作系统的三大管理功能:进程管理、内存管理、文件系统。

  • 在操作系统原理中,通过进程控制块PCB描述进程。在Linux内核中通过一个数据结构struct task_struct来描述进程,称其为进程描述符。

  • 在操作系统原理中,进程有就绪态、运行态和阻塞态3种基本状态。

  • Linux内核状态转换图:在这里插入图片描述

  • 在Linux内核中,当时用fork()系统调用来创建一个进程时,新进程的状态是TASK_RUNNING(就绪态但没有运行)。就绪态和运行态在Linux内核中都是TASK_RUNNING状态,此状态下进程是可运行的,也就是就绪态,是否在运行取决于它有没有获得CPU的控制权,即这个进程有没有在CPU中实际执行。如果在CPU中实际执行了,进程状态就是运行态;如果被内核调度出去了,在等待队列里就是就绪态。

  • 对于一个正在运行的进程,调用用户态库函数exit()会陷入内核执行该内核函数do_exit(),进程会进入TASK_ZOMBIE状态,即进程的终止状态。TASK_ZOMBIE状态的进程一般叫做僵尸进程,Linux内核会在适当的时候把僵尸进程处理掉,然后释放进程描述符。

  • 一个正在运行的进程在等待特定事件或资源时会进入阻塞态,阻塞态分为两种:
    TASK_INTERRUPTIBLE
    TASK_UNINTERRUPTIBLE。
    前者可以被信号和wake_up()唤醒,后者只能被wake_up()唤醒。

  • pid ,tgid用来标识进程。

  • 用数据结构struct task_struct 来描述进程
    SMP条件编译,on_rq运行队列。
    所有进程通过双向循环链表链起来。

  • 进程描述符的结构示意图
    在这里插入图片描述

  • 程序创建的进程具有父子关系。

这篇关于2021-2022-1 20212808 《Linux内核原理与分析》第七周作业的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!