IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 进程地址空间 -> 正文阅读

[系统运维]进程地址空间

进程地址空间

虚拟地址

什么是虚拟地址呢?先不解释,看个神奇的代码

在这里插入图片描述

这是一个简单的代码,定义一个全局变量 g_val=100;
fork() 创建一个子进程(我们知道fork创建子进程时,完全是拷贝父进程的代码和数据),在子进程里将 g_val的值改变为200,这时在子进程和父进程里同时将g_val的值和地址打印出来,结果是否一样呢?
在这里插入图片描述
我们发现,父子进程,输出地址是一致的,但是变量内容不一样!能得出如下结论:

1、变量内容不一样,所以父子进程输出的变量绝对不是同一个变量。

2、但地址值是一样的,说明,该地址绝对不是物理地址!在Linux地址下,这种地址叫做 虚拟地址。

3、我们在用C/C++语言所看到的地址,全部都是虚拟地址!物理地址,用户一概看不到,由OS统一管理
OS必须负责将 虚拟地址 转化成 物理地址 。
在这里插入图片描述

进程地址空间

进程地址空间本质是内存中的一种内核数据结构 mm_struct=
在这里插入图片描述
在这里插入图片描述
fork函数创建的子进程,其数据和代码是和父进程共享的,两个进程相对应的虚拟地址是相同的,所以上面子进程中
g_val的地址和父进程中g_val==的地址是相同的。

但是虚拟地址会经过页表映射到物理地址中,这时对子进程中g_val的值进行改变,由于进程间互不影响的原则,子进程中的g_val改变了,不能影响父进程中的g_val,所以此时会发生写实拷贝,页表会重新映射一个物理空间存储改变的g_val,但是虚拟地址不会改变。

为什么要有进程地址空间:
1、进程地址空间+页表的本质是:保护内存
用户不可能直接访问内存,只能通过进程地址空间+页表去访问物理内存,而页表不会映射所要访问进程以外的地址。从而保护的物理内存。

2、每个进程都认为看到的是相同的空间范围(栈、堆、代码段…的构成顺序都是相同的),这样每个进程都会按部就班的将自己的代码中的数据放到相应的位置上。

3、每个进程都认为自己在独占内存,可以更好的完成进程独立性和合理使用空间。

写实拷贝

通常,父子进程代码共享,父子进程在不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式拷贝一份副本,在副本中进行修改或写入,不影响原来的物理空间的数据。具体见下图:

在这里插入图片描述
为什么要写实拷贝?

因为进程之间具有独立性,子进程的改变不能影响父进程。

为什么不在子进程创建的时候就给子进程拷贝一份父进程的代码,而是需要写入再进行写实拷贝?

因为子进程不一定会使用父进程的所有数据,只有需要的时候再拷贝,按需索取,不会存在空间浪费。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 17:15:45  更:2021-10-01 17:16:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:19:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码