搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家自动化
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Java Excel导出多个工作表(添加多个sheet)_模板导出excel多个sheet java.lang.illegalargumentexceptio
2
群晖Drive搭建云同步服务器结合内网穿透实现Obsidian笔记文件远程多端同步_群晖drive怎么用局域网
3
java中共享变量分析和volatile
4
网络安全产品之认识入侵检测系统
5
城域网IPv6过渡技术——MAP技术_ipv6过渡技术在城域网中的应用
6
基于YOLOv7官方开源的的关键点检测DEMO_yolov7关键点检测
7
Hbase 详细介绍以及简单的Hbase命令操作(入门必备)_hbase 概述及基本操作
8
TensorRT+CUDA加速优化版CenterNet旋转目标以及水平目标框的检测_centernet tensorrt
9
Android方案需求,Android 三种适配方案
10
学习jee遇到的问题~eclipse_jee中没有src
当前位置:
article
> 正文
Linux写实拷贝技术_什么叫做写实拷贝技术
作者:我家自动化 | 2024-03-08 14:44:24
赞
踩
什么叫做写实拷贝技术
何为写时拷贝技术?这就得先讲讲linux的分页加载机制。
分页加载机制就是linux把内存划分成很多的小块,进程中的数据按照某种对应关系(页表)放入内存中。
这么做的目的是为了提高内存的使用率。可以不必让一个进程中的所有东西都连着放在一起。
连着放在一起的弊端是。如果A进程释放后。假如A进程使用的内存非常少。其他进程都无法使用A进程占的这块内存,因为它太小了放不下。这样就存在内存利用率低下,每过段时间都要检测这种进程间的碎片空间。因此才有了分页加载,每个被划分的小块非常小,进程里的数据将被分割开来放进去,哪怕到时候释放了,下个进程可以通样将自己分割成小块放入刚被释放的内存中。
学习过fork我们都知道是父进程创建出一个子进程,子进程作为父进程的副本, 是父进程的拷贝。
可是每次fork出的子进程难道还要把父进程的各种数据拷贝一份?有人会说不是父子进程不共享各种数据段吗?如全局变量区 ,栈区 , 堆区 。如果不拷贝那不就成共享的吗?其实有关子进程拷贝父进程的数据是这样的。
如果子进程只是对父进程的数据进行读取操作,那么子进程用的就是父进程的数据。如果子进程需要对某数据进行修改,那么在修改前,子进程才会拷贝出需要修改的这份数据,对这份备份进行修改。这就满足了父子进程的数据相互独立,互不影响的要求。这么做的初衷也是为了节省内存。
举个栗子如果一份代码中,定义了10个数据。父进程执行的部分对这10个数据全部进行修改,而子进程执行的部分只修改了一个数据,子进程明明用不到其他9个数据,那还何必让子进程拷贝全部数据,多占用9个永远使用不到的数据内存?
因此创建子进程只是将原父进程的pcb拷贝了一份。父子进程的pcb全部指向的是父进程原本就有的数据,如果子进程里对数据进行了修改,那么子进程的pcb里指向 被修改的数据的指针会指向一个自己新开辟的内存,新开辟的内存里将父进程的数据拷贝过来,然后再进行修改。这就是写时拷贝技术,顾名思义,只在写的时候才拷贝的技术。厉害厉害
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家自动化/article/detail/210752
推荐阅读
article
linux
c
嵌入式
工程师
笔试题,
嵌入式
软件
工程师
/
linux
c
程序员 笔试题...
一、什么叫可重入?可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数...
赞
踩
article
linux
编译
mqtt
静态库,无法为
arm
-
none
-
linux
-
gnueabi
-g ++编译器找...
I have the
arm
-
none
-
linux
-
gnueabi
-g++ compiler in the below ...
赞
踩
article
linux
下解决
qt
项目
error
while
loading
shared
libraries: ...
linux
下运行
qt
项目,能编译通过,但不能运行出应用程序_./
qt
-
unified
-
linux
-x64-4.6.1-o...
赞
踩
article
ubuntu
在线安装qt碰到的问题及解决_./qt-
unified
-
linux
-
x64
-4.6.1-...
ubuntu
中在线安装qt碰到的问题。_./qt-
unified
-
linux
-
x64
-4.6.1-
online
.
run
:...
赞
踩
article
Ubuntu安装QT:
error
whi
le
loading
shared
libraries: l...
【代码】Ubuntu安装QT:
error
whi
le
loading
shared
libraries:
libxcb
-...
赞
踩
article
解决
dbus
-
1
.
so.3
: no
version
information available 造成...
删除错误的lib
dbus
-
1
.
so.3
快捷方式,并将正确的lib
dbus
-
1
.
so.3
.XX.X拷贝到usr/lib64...
赞
踩
article
解决问题:
libbz2
.so.1: cannot open
shared
object
file
:...
解决缺少
libbz2
.so.1文件的问题。
err
or
while
loading
shared
libraries: l...
赞
踩
article
ubuntu
Linux
安装QT_qt-
unified
-
linux
-x64-4.6.1-
online
...
ubuntu
Linux
安装QT下载开源QT
Linux
安装包地址https://www.qt.io/download-o...
赞
踩
article
Linux
Qt6
安装
教程及错误解决_
ubuntu
安装
qt6
...
在
Linux
环境,通常为Ubuntu,
安装
Qt开发环境,
安装
教程以及遇到的错误解决_
ubuntu
安装
qt6
ubuntu
...
赞
踩
article
Ubuntu
安装Qt出现
bash
: ./
qt
-
unified
-
linux
-x64-
4.6
.1-onl...
Ubuntu
安装Qt出现
bash
: ./
qt
-
unified
-
linux
-x64-
4.6
.1-
online
.
run
: 权...
赞
踩
article
linux
ubuntu安装
qt
creater,配置
qt
环境到可运行
qt
项目_./
qt
-unifie...
一、安装
qt
creater1、搜索清华源,打开路径到
qt
位置,选择第二个文件,下载下来2、打开下载路径,执行chmod ...
赞
踩
article
linux
下
C++
#
include
的
搜索
路径
问题_
linux
include
搜索
路径
...
Linux c++_
linux
include
搜索
路径
linux
include
搜索
路径
...
赞
踩
article
linux
c
之g
c
c
编译出现error:
lvalue
required
as
unary
‘&‘ ...
1、问题 今天搞epoll实现io复用的时候g
c
c
编译出现这个错误
lvalue
required
as
unary
'&...
赞
踩
article
linux
使用
gcc
提示
后缀
无效
,
linux
– Gcc
编译
“无法计算对象文件的
后缀
:无法
编译
”.....
我实际上正在阅读LFS书(7.1版)
,
我在第53页被阻止.尝试
编译
gcc
,
我尝试了以下命令:./configure --...
赞
踩
article
arm
-
linux
-
gnueabihf
-gcc 5.2编译qt4.8.5_
dialogs
/qprin...
arm
-
linux
-
gnueabihf
-gcc 5.2编译qt4.8.5_
dialogs
/
qprintdialog
_un...
赞
踩
article
linux
signal
编译
不过,
Linux
编译
中
的各种
error
处理...
LDD3
中
的第一个例程就是scull,但是在新内核上
编译
的过程那叫一个坎坷。。。在此做出总结,希望可以帮到同路人。。。一...
赞
踩
article
【
FastDFS
】小伙伴们说按照我写的方式在
CentOS
8
服务器
上搭建
FastDFS
环境总报错?_...
这下在
CentOS
8
服务器
上
安装
FastDFS
不会报错了吧!_
c
entos
安装
fastdfs4.0
.6
c
ommon
...
赞
踩
article
Linux
学习
笔记(
12
)...
acpid 否 监听精灵进程 此进程监听并分配内核中的 acpi 事件adsl 否 内部 ADSL 开关控制 只...
赞
踩
article
Linux
:修改
文件
权限...
在
Linux
系统中,权限管理是
文件
和目录安全性的核心。
文件
权限是非常重要的,它们决定了哪些用户可以读取、写入或执行
文件
。...
赞
踩
article
linux
中文
语音
合成
软件,分享|
eSpeak
:
Linux
文本
转
语音
工具
...
eSpeak
是一款
Linux
命令行
工具
,能把
文本
转换成
语音
。它是一款简洁的
语音
合成
器,用C语言编写而成,它支持英语和...
赞
踩
相关标签
linux c嵌入式工程师笔试题
linux 编译mqtt静态库
linux
qt
ubuntu
运维
开发语言
qtcreator
qt5
installer
UOS
bash
权限