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

news/2024/6/16 21:52:51 标签: 父子进程虚拟地址空间, linux

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

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

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

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

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

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

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

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


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

 

专属优惠链接:

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


http://www.niftyadmin.cn/n/1032349.html

相关文章

2.5父子进程关系及GDB多进程调试

1.父子进程之间的关系 父子进程之间的关系:区别:1.fork函数的返回值不同父进程中:>0,返回的是子进程的ID子进程中:02.pcb中的一些数据当前的进程的id pid当前的进程的父进程的id ppid信号集共同点:某些…

C#中list和数组对元素进行排序

直接看代码,都是用lamda表达式写的,比较简洁,其他方法也可以,不多赘述。 数组降序: Array.Sort(arr, (a, b) >{int temp b.id - a.id;if (temp > 0){return temp;}else {return -1;}});list降序: l…

makefile ‘/oracle/app/sysman/lib/ins_emagent.mk‘ 的目标 ‘agent nmhs‘ 时出错

安装Oracle11g数据库时,提示如下错误 调用 makefile ‘/oracle/app/sysman/lib/ins_emagent.mk’ 的目标 ‘agent nmhs’ 时出错。有关详细信息, 请参阅 ‘/tmp/logs/installActions2022-04-08_01-09-27PM.log’。 解决办法: 打开提示有问题的文件&#…

oracle中to_timestamp函数对时间的加减操作

操作Oracle时,经常需要对时间进行加减操作,这个直接看SQL: select to_timestamp( 2022-02-22 14:13:29,yyyy-mm-dd hh24:mi:ss) 30/60/24 from dual重要的是后边那个“ 30/60/24 ” 表示 此时间加上30分钟, 看结果&#xff…

springboot项目解决CORS跨域请求

话不多说,直接上代码 第一步:加一个配置类 Configuration public class CorsConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry){//设置允许跨域的路径registry.addMapping ("/**")//设置允许…

iframe获取父窗口的元素

var iframeWindow parent.document.getElementById("iframe_work"); $(iframeWindow).attr("src","openFenXi");我的需求是在当前页面的iframe子窗口上重新加载一个页面, 就先获取到父窗口,再定位到父窗口的"iframe…

Tomcat解决跨域问题(Access-Control-Allow-Origin,403,404)

我出现这个问题的时候,觉得是个小问题,也看过很多解决办法,但照做之后,居然不行,就很疑惑,就认真排查了一下问题,发现有些人是 Ta Ma 完全照抄的,就没有自己试过,经过自己…

echarts中画垂直的标识线

话不多说,先看效果: 代码如下: option {xAxis: {type: category,data: [v, a, y, b, g, p, c,l, j, d, m, e, f, n]},yAxis: {type: value,min : 0,max : 12},series: [{data: [0, 0, 10, 0, 0, 0, 0,0, 0, 10, 0, 0, 0, 0],type: line,//这里就是添加…