进程控制块pcb——task_struct

操作系统三大功能:

  • 进程管理(核心)
  • 内存管理
  • 文件系统

为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息:

  • 进程状态
  • 进程打开的文件
  • 进程优先级信息

进程状态切换图

进程描述与创建

需要注意的是进程的运行态和就绪态使用同种名称,区别仅在于是否确实占用内存

运行新进程总是从ret_from_fork开始

 

进程的创建

fork创建进程:

  • fork系统调用在父进程和子进程各返回一次
  • 子进程中返回的是0,父进程中返回值是子进程的pid

fork、vfork和clone三个系统调用都可以创建一个新进程,而且都是通过调用do_fork来实现进程的创建

具体创建过程如下:

  • 复制当前进程作为子进程
    • 由do_fork实现
  • 复制父进程的pcb
  • 给子进程分配内核堆栈
  • 修改子进程的pid等相关信息

 

实验:分析linux内核创建一个新进程的过程

过程同上次类似,首先更新MenuOS

进程描述与创建

进程描述与创建

gdb调试fork

进程描述与创建

设置断点并调试

进程描述与创建

 

linux如何创建一个新进程:Linux通过复制父进程来创建一个新进程,通过调用do_ fork来实现并为每个新创建的进程动态地分配一个task_ struct结构

相关文章:

  • 2021-07-22
  • 2021-09-09
  • 2021-12-12
  • 2021-06-23
  • 2021-08-27
  • 2021-05-21
  • 2021-11-21
猜你喜欢
  • 2021-10-22
  • 2021-12-05
相关资源
相似解决方案