Linux笔记记录2 do_fork
来源:互联网 发布:网络优化工程师好学不 编辑:程序博客网 时间:2024/06/06 07:45
(´・ω・`)给自己的小小提醒:刚才看了一个大大写的关于fork的博文超级棒 加收藏了,要记得看啊
----------------------------------------------------------------------------------------------------------------------------------
首先来看三个系统调用:
sys_fork
sys_clone
sys_vfork
第一个先复制pcb再复制进程实体(写时拷贝),父子进程执行顺序不确定
第二个用来做线程(内核级线程),
第三个只复制pcb没有复制进程实体,避免调用exec产生无用功,在调用exec前与父进程共享数据(也就是共享地址空间),子进程先运行父进程阻塞,直到子进程执行exec或exit(但是现在fork功能升级啦所以vfork的作用大打折扣)。
以上三个系统调用最终都是通过do_fork实现的。
好啦,说了这么多废话终于讲到重点了,咳咳。
首先,打开我们的source insight,进入fork.c找到我们的do_fork()。
--------------------------------------------------------
long do_fork(unsigned long clone_flags,
unsigned long stack_start,
struct pt_regs *regs,
unsigned long stack_size,
int __user *parent_tidptr,
int __user *child_tidptr)
--------------------------------------------------------
原来神秘的do_fork()长这个样子,,首先看参数:
--------------------------------------------------------
clone_flags与clone的flag参数相同
stack_start与clone的child_stack相同
regs指向通用寄存器的值。是在从用户态切换到内核态时被保存到内核态栈中的。
stack_size未使用时为0
parents_tidptr,child_tidptr-clone中对应参数ptid,ctid相同
--------------------------------------------------------
以上内容复制自fork.c
由于do_fork涉及的内容很多,这里就简略的说说他的大致过程
----------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------
- Linux笔记记录2 do_fork
- linux do_fork()源代码分析
- linux kernel function do_fork
- Linux内核-进程-do_fork()
- Linux源码-do_fork()
- do_fork
- do_fork
- 深入理解Linux之do_fork()
- linux内核源码do_fork分析
- 《深入理解Linux内核》do_fork函数
- Linux内核 do_fork 函数源代码浅析
- linux内核之进程创建do_fork
- linux内核 do_fork 函数源代码浅析
- Linux进程创建二——do_fork
- Linux内核进程管理-do_fork()执行过程分析
- Linux笔记(2):常用命令简单记录
- linux 学习记录笔记
- Linux学习笔记记录
- jdk1.5 jdk1.6 jdk1.7 jdk1.8 特性
- CodeForces-77E(计算几何+笛卡尔定理)
- solr最小集群的搭建
- vue vue-cli请求后台服务地址要注意点
- obs之libx264编码
- Linux笔记记录2 do_fork
- c# 反射和特性
- spring源码学习(五)Bean的加载(上)
- 关于访问自己电脑做服务器的相关IP知识
- 网络基本知识
- 全球国家的名称简体中文js对象 数组
- HDU 6128 Inverse of sum(推公式)
- -mysql-锁机制分为表级锁和行级锁
- java 计算两个字符串,或者Date相差的天数