进程描述与创建

进程控制块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结构

posted on 2016-04-02 21:46  20135222  阅读(310)  评论(0编辑  收藏

导航