进程创建&父子进程资源分配

本文通过示例探讨了Linux下创建子进程时,文件流缓冲区和PCB空间的处理方式。结论指出,子进程会额外创建PCB空间,尽管虚拟地址可能相同,但实际是独立的。同时,文件流缓冲区在创建子进程时会被复制,导致输出重复内容。示例展示了如何通过fork()创建多个进程并产生预期的输出结果。
摘要由CSDN通过智能技术生成
目录:
1.父子执行顺序问题。
2.子进程资源申请问题。
3.示例:父子进程是共享还是额外创建PCB空间
4.示例:创建子进程时,文件流中的缓冲区会拷贝一份

5.示例:创建子进程时,文件流缓冲区拷贝示例2


1.父子执行顺序问题。
父子进程在创建完子进程后互相不关联,以独立身份抢占 CPU 资源,具体谁先执行由调度算法决定,用户空间没有办法干预。子进程执行代码的位置是 fork/vfork 函数返回的位置。


2.子进程资源申请问题。
子进程重新申请新的物理内存空间,复制父亲进程地址空间所有的信息(当然,现在的操作系统实际采用写时复制等策略,真正的物理内存空间发生在需要写入时)。
子进程复制父亲进程的代码段,数据段,BSS 段,堆,栈所有用户空间的信息,在内核中操作系统为其重新申请了一个 PCB,并且使用父亲进程的 PCB 来初始化,除了 pid等特殊信息外,几乎所有的信息都是一样的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值