2019-2020-1 20199321《Linux内核原理与分析》第七周作业

第六章 进程的描述和进程的创建

  • 操作系统内核实现操作系统的三大管理功能,对应了3个抽象概念:
    • 进程管理——进程
    • 内存管理——虚拟内存
    • 文件系统——文件
  • 使用PCB描述进程。描述进程的机构,在Linux中使用数据结构struct task_struct描述进程,包含state进程状态,stack堆栈,fs文件系统等的描述。
    struct list_head tasks;//所有的进程用双向链表链起来
    struct mm_struct *mm,*active_mm;//mm和active_mm是和进程地址空间、内存管理相关的数据结构指针

    +进程之间的父子、兄弟关系

    struct list_head __rcu *real_parent;//当前进程的父进程
    struct list_head __rcu *parent;
    struct list_head children;//当前进程的子进程
    struct list_head sibling;//当前进程的兄弟进程
    struct list_head *group_leader;//每一个进程是一些进程组的成员之一,进程组组都有一个进程组长(group leader)。进程组的所有 IO 输入输出都会引导到进程组长进程那里去。当一个进程被创建时,父进程的进程组长也看作是子进程的进程组长。系统初始化的时候,init 进程既是它自己的进程组长,同时也是其他所有进程的进程组长。
  • 在Linux系统中,TASK_RUNNING包括两种状态:进程就绪和进程运行。这两种状态的区分取决于进程是否获得CPU的分配权
  • 阻塞态: TASK_INTERRUPTIBLE 可以被信号或wake_up()唤醒。TASK_UNINTERRUPTIBLE:只能被wake_up()唤醒。
  • 0号进程的初始化
set_task_stack_end_magic(&init_task);
  • 内核的第一个进程0号进程iinit_task的进程描述符结构体变量的初始化是通过硬编码方式确定下来的,所有其他的进程都是通过do_fork的方式复制父进程来初始化的。

猜你喜欢

转载自www.cnblogs.com/20199321zjy/p/11761755.html