当前位置: 首页 > news >正文

【进程地址空间】

目录:

  • 前言
  • 一、进程地址空间
    • (一)进程地址空间是什么
    • (二)为什么要有进程地址空间
    • (三)重新理解进程地址空间

前言

打怪升级:第52天
在这里插入图片描述

一、进程地址空间

打怪升级之路开始!!

(一)进程地址空间是什么

在了解进程地址空间是什么之前我们先来见一见下方的程序运行结果:

示例:

#include<stdio.h>
#include<unistd.h>     //  sleep();  //  getpid(); getppid();
#include<assert.h>   //  assert();  断言void Test02(){int num = 5;pid_t ret = fork();assert(ret != -1);printf("创建了子进程\n");if(ret == 0){while(1){// 子进程printf("这是子进程,pid = %d, ppid = %d, num = %d, &num = %p\n", getpid(), getppid(), num, &num);sleep(1);num = 100;   //  修改num}}else {while(1){// 父进程printf("这是父进程,pid = %d, ppid = %d, num = %d, &num = %p\n", getpid(), getppid(), num, &num);sleep(1);}}                                                                                                                                                      }                                                                                                      int main(){Test02();return 0;}

运行实例:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

“好,那我现在明白了:进程地址空间就是虚拟地址/线性地址 (地址从00到FF呈线性增长),但是,
我们为什么不直接使用内存地址,为什么要使用虚拟地址,为什么要通过页表转换来间接的找到内存地址呢,”
那么让我们继续往下探讨。。


(二)为什么要有进程地址空间

首先呢,让我们来想一想如果让进程直接使用内存地址会是什么样的:在这里插入图片描述
在这里插入图片描述

由此我们得出地址空间的第一个作用 – 防止内存的随意访问,保护了物理地址和其他进程;

其次:
在这里插入图片描述

由此我们得出地址空间的第二个作用:进程管理和内存管理进行解耦合;

再次:
>
**

由此我们得出地址空间的第三个作用:可以让进程统一视角看待自己的代码和数据。


(三)重新理解进程地址空间

进程地址空间并不仅仅只影响OS的管理策略,还要让我们的编译器遵守这样的规则!

在这里插入图片描述在这里插入图片描述
通过这样的对应转化就可以将虚拟地址和内存地址很好的对应起来。


http://www.lryc.cn/news/45208.html

相关文章:

  • 递归dfs入门
  • 华为OD机试用java实现 -【吃火锅】
  • AI创作优美文章的秘密大揭秘!
  • SpringMVC的拦截器
  • dolphinscheduler-3.1.4
  • 大前端05-用vue轻量级第三方组件库快速创建个画板,可以支持画板、直线、圆形等输入,可以撤回,改变颜色
  • ChatGPT使用案例之生成PPT
  • ChatGPT基础知识系列之模型介绍
  • ChatGPT助力软件开发
  • 这些关于高压放大器的常识,你知道多少?(二)
  • 使用神经网络中的卷积核生成语谱图
  • 文章五:Python 网络爬虫实战:使用 Beautiful Soup 和 Requests 抓取网页数据
  • 【大数据之Hadoop】八、MapReduce之序列化
  • Python网络爬虫之Selenium详解
  • 中睿天下受邀出席电促会第五次会员代表大会
  • Chat GPT:软件测试人员的危机?
  • 【Redis】高可用:Redis的主从复制是怎么实现的?
  • WLAN速度突然变慢
  • GDAL python教程基础篇(12)GDAL和 Pillow 的互操作
  • 快速学习java路线建议
  • 【MySQL】深入浅出主从复制数据同步原理
  • Redis持久化和高可用
  • 【数据结构】第六站:栈和队列
  • python matplotlib 绘制训练曲线 综合示例——平滑处理、图题设置、图例设置、字体大小、线条样式、颜色设置
  • vue-element-plus-admin整合后端实战——实现系统登录、缓存用户数据、实现动态路由
  • Shader Graph2-PBR介绍之表面属性(图解)
  • Java多线程编程,Thread类的基本用法讲解
  • TIA博途Wincc_多路复用变量的使用方法示例(实现多台相同设备参数的画面精简)
  • 关于console你不知道的那些事
  • Java设计模式-责任链模式