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

网站建设商务合同范本/seo运营人士揭秘

网站建设商务合同范本,seo运营人士揭秘,企业官网是什么,wordpress隐藏源码程序地址空间 首先引入地址空间的作用什么是地址空间为什么要有地址空间 首先引入地址空间的作用 1 #include <stdio.h>2 #include <unistd.h>3 #include <stdlib.h>4 int g_val 100;6 int main()7 {8 pid_t id fork();9 if(id 0)10 {11 int cn…

程序地址空间

      • 首先引入地址空间的作用
      • 什么是地址空间
      • 为什么要有地址空间

首先引入地址空间的作用

  1 #include <stdio.h>2 #include <unistd.h>3 #include <stdlib.h>4 int g_val = 100;6 int main()7 {8   pid_t id = fork();9   if(id == 0)10   {11     int cnt = 0;12     while(1)13     {14       printf("I am child,pid : %d,ppid : %d,g_val : %d,&g_val : %p\n",getpid(),getppid(),g_val,&g_val);15       cnt++;16       sleep(1);17       if(cnt == 5)18       {19         g_val = 200;20         printf("child chage g_val 100 -> 200 success\n");21       }22     }23   }24   else 25   {26     //father27     while(1)28     {                                                                                                                                                29 30       printf("I am father,pid : %d,ppid : %d,g_val : %d,&g_val : %p\n",getpid(),getppid(),g_val,&g_val);31       sleep(1);32     }33   }34   return 0;35 }

我们发现,但我们子进程修改全局变量g_val的时候,父进程的g_val没有受到影响,但是他们的地址都是一样的,这是为什么呢?

在这里插入图片描述

由此我们知道,这里的地址绝对不是物理内存的地址,而是虚拟地址(线性地址);并且几乎所有语言,如果有地址的概念,这个地址一定不是物理地址,而是虚拟地址。物理地址是由操作系统保管的。以下我们就开始介绍虚拟内存的作用

什么是地址空间

首先基本了解一下地址空间的排布情况

目前我们先不考虑解析这里的共享区在这里插入图片描述

代码实现验证地址空间的排布

  1 #include <stdio.h>2 #include <unistd.h>3 #include <stdlib.h>4 int g_val = 100;5 int g_unval;6 int main(int argc,char *argv[],char *env[])7 {8   //代码区9   printf("code addr:%p\n",main);10   //初始化数据11   printf("init global addr:%p\n",&g_val);12   //未初始化数据13   printf("uninit global addr:%p\n",&g_unval);14   //堆区15   char* heap_mem = (char*)malloc(10);16   char* heap_mem1 = (char*)malloc(10);17   char* heap_mem2 = (char*)malloc(10);18   char* heap_mem3 = (char*)malloc(10);19   printf("heap_mem addr:%p\n",heap_mem);20   printf("heap_mem1 addr:%p\n",heap_mem1);21   printf("heap_mem2 addr:%p\n",heap_mem2);22   printf("heap_mem3 addr:%p\n",heap_mem3);23 24   //栈区25   printf("stack addr:%p\n",&heap_mem);26   printf("stack addr:%p\n",&heap_mem1);27   printf("stack addr:%p\n",&heap_mem2);28   printf("stack addr:%p\n",&heap_mem3);29 //字面常量30   const char *str = "helloworld";31   printf("read only string addr: %p\n", str);32   33   int i,j;34   //命令区                                                                                                35    for(i = 0 ;i < argc; i++)                                                                                                                                             36     {              37         printf("argv[%d]: %p\n", i, argv[i]);38     }        39   40  //环境区41  for(j = 0;env[j];++j)42  {43    printf("env[%d] addr:%p\n",j,&env[j]);44  }45 46   47   48   return 0;49 }

在这里插入图片描述

由此可见我们发现我们输入命令后,命令的地址在我们所执行的代码之后,这说明刚创建好这些变量就有了它自己本身的地址,地址程序结束后才打印,要分清前后

接下来我们来认识什么是地址空间
>

这时我们可以利用虚拟地址加映射机制(页表)来正确的讲地址存入物理内存
虚拟地址:不管哪个编译器,只要看到的地址都是虚拟地址,物理地址是操作系统保管的。
每一行代码都进行了编址。故,程序在编译的时候,每一个字段早已经具有了一个虚拟地址
=什么是映射机制?
映射机制可以将虚拟地址转换到物理地址,如果发现虚拟地址会越界或者错误,则就不会抛出,他起到了关键作用
那么映射机制是怎么判断的呢?
在这里插入图片描述
以上就是所描述的社么是地址空间,简单来说它是存储虚拟地址的。

在这里插入图片描述

地址空间和页表(用户级)是每一个进程都单独有一份的。
只要每一个进程的页表映射的是物理内存的不同区域,就可以做到进程之间不会互相干扰保证进程的独立性。

为什么要有地址空间

  1. 凡是非法的访问或者映射,os都会识别到,并终止你这个进程,有效的保护了物理内存。
    因为地址空间和页表是os创建并维护的,所以凡是使用地址空间和页表的都会在os的监控下来进行范文,这样就间接的保护了物理内存中的所有合法数据和各个进程,以及内核的相关有效数据
  2. 物理内存和进程的管理可以做到解耦合(没关联)。
    当我们申请了物理空间,但是我们不立即使用的时候,就会造成内存空间的浪费;
    针对这一现象,os做出了延迟分配的策略,来提高整机的效率。
    因为地址空间的存在,所有申请的空间都是在地址空间上申请的,物理内存不是被申请到一个字节,当我们真正访问物理地址的时候,才执行内存相关的算法。帮助申请内存,构建页表之间的映射关系,这些都是由os自主完成的
  3. 因为在物理内存中理论上随意加载,也是随意存放的,但是通过地址空间的虚拟地址和页表之间的映射,从进程视角来看所有的内存分布就成有序的了。
    因为有地址空间的存在,每一个进程都认为自己单独有一块4GB(32)空间,并且各个区域是有序的。进而通过页表映射到不同区域,来实现进程的独立性,各个进程是不知道其他进程的存在的

回答问题,为什么地址相同值不同
在这里插入图片描述

发生了写时拷贝!,所以父子进程各自其实在物理内存中,有属于自己的变量空间!只不过在用户层用同一个变量(虚拟地址!)来标识了

http://www.jmfq.cn/news/5334481.html

相关文章:

  • 邯郸网站建设哪儿好/网络营销的职能有哪些
  • 钛钢饰品移动网站建设/seo外包资讯
  • 建设网站都要什么/seo商学院
  • 联雅网站建设公司/合肥网站seo推广
  • 广东省交通建设监理检测协会网站/关键词排名优化是什么意思
  • 西安做网站建设的/百度大数据
  • 英文 日文网站建设申请/软文推广的好处
  • 网站建设 选择题/在百度上怎么打广告
  • 基于cms系统网站的建设/如何免费推广自己的产品
  • 消除wordpress/个人网站seo入门
  • 晋中建设集团网站/百度医生
  • 协会建设网站的必要性/友情链接交换平台有哪些
  • 王老吉网站建设水平优点/百度新闻官网
  • 连云港城乡建设局网站/国际新闻直播
  • 云南省建设教育协会网站/友情链接平台哪个好
  • 菏泽市建设银行网站/高级seo培训
  • 最好的汽车科技网站建设/宁波关键词网站排名
  • 连云港网站建设 连云港网站制作/新闻稿撰写
  • 现在建设一个基础的网站多少钱/百度培训
  • 网站pc端网址和手机端网址建设/百度快速提交入口
  • 香港服务器建设网站教程/单页关键词优化费用
  • 如何建设幼儿园网站/2022世界足球排行榜
  • 云南城乡建设网站/东莞网络推广公司
  • 传统网站建设 成本/电商关键词一般用哪些工具
  • 沧州网站建设哪家好/小红书seo排名
  • 户外媒体网站建设免费/微营销推广方案
  • 免费网站建设信息/百度搜索引擎
  • 的网站建设/网站内搜索
  • 大旺建设局网站/网站排名优化教程
  • 网站建设配图/电商平台网站