莱州一中网站,给公司怎么做官方网站,番禺人才网招聘信息,全椒做网站目录#xff1a;前言一、进程地址空间#xff08;一#xff09;进程地址空间是什么#xff08;二#xff09;为什么要有进程地址空间#xff08;三#xff09;重新理解进程地址空间前言
打怪升级#xff1a;第52天一、进程地址空间
打怪升级之路开始#xff01;前言一、进程地址空间一进程地址空间是什么二为什么要有进程地址空间三重新理解进程地址空间前言
打怪升级第52天一、进程地址空间
打怪升级之路开始
一进程地址空间是什么
在了解进程地址空间是什么之前我们先来见一见下方的程序运行结果 示例 #includestdio.h
#includeunistd.h // sleep(); // getpid(); getppid();
#includeassert.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的管理策略还要让我们的编译器遵守这样的规则 通过这样的对应转化就可以将虚拟地址和内存地址很好的对应起来。