2.4父子进程虚拟地址空间情况

内核区中,父进程和子进程的pid是不同的。

定义的局部变量pid在栈空间中,父子进程中栈空间中的pid不同,在父进程中为子进程的进程号,在子进程中为0

实际上,更准确来说,linux的fork()是通过写时拷贝(copy on write)实现的。

写时拷贝是一种可以推迟甚至避免拷贝数据的技术。

内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间。

只用在需要写入时才会复制地址空间,从而使各个进程拥有各自的地址空间。

也就是说,资源的复制是在需要写入的时候才会进行,在此之前,只有以只读方式共享。

注意:fork之后父子进程共享文件。文件描述符指向相同的文件表,引用计数增加,共享文件偏移指针。


参考:牛客网 C++高薪求职项目《Linux高并发服务器开发》2.4父子进程虚拟地址空间情况

 

专属优惠链接:

https://www.nowcoder.com/courses/cover/live/504?coupon=AvTPnSG

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值