linux中的fork内核实现分析

本文详细探讨了Linux内核中fork系统调用的工作原理,包括从父进程调用fork开始,如何进入内核空间,执行do_fork函数,复制父进程的执行状态,并创建子进程。在子进程中,fork返回0并跳转到特定清理工作,而父进程则返回子进程的PID。最后,通过流程图和源代码链接,帮助读者更好地理解fork系统调用的实现细节。
摘要由CSDN通过智能技术生成

张建帮 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

这一次我们来聊聊系统调用中的fork,以便更深入地理解 linux中的调用流程与具体的实现(以内核linux-3.18.6为例,源代码点这里)。

在 Linux 操作系统中,每个进程被创建的时候,内核会给这个进程分配一个进程描述符结构,即PCB ,进程控制块。它保存了这个进程的状态,标识符,打开的文件,等待的信号,文件系统等待的资源信息。每个进程描述符都表示一个独立的进程。在操作系统中,每个进程的进程描述都被加入到一个双向链表的任务队列中,由操作系统决定哪个进程可以占用 CPU ,哪个进程应该让出 CPU 。在 Linux 中,一个进程的进程描述符结构如下图所示:

task_struct结构图

可以看到,它是一个很复杂的数据

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值