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

服装生产厂商网站建设方案手机网站需要什么

服装生产厂商网站建设方案,手机网站需要什么,做外卖有哪些网站,电商需要投资吗地址空间 内存空间示意图虚拟地址空间虚拟地址进程地址空间生命周期图解为什么要有地址空间呢#xff1f; 小结 内存空间示意图 进程是在内存中运行的#xff0c;为了便于管理#xff0c;不同的数据会存储在不同的区域#xff0c;因此内存就被分为几部分#xff0c;如下图… 地址空间 内存空间示意图虚拟地址空间虚拟地址进程地址空间生命周期图解为什么要有地址空间呢 小结 内存空间示意图 进程是在内存中运行的为了便于管理不同的数据会存储在不同的区域因此内存就被分为几部分如下图所示 而这些区域都存什么东西呢我们有下面一段程序 #includestdio.h2 #includestdlib.h3 4 int un_g_val;5 int g_val 2;6 7 8 int main(int argc, char* argv[], char* env[])9 {10 printf(adress: %p\n,main);11 printf(init: %p\n,g_val);12 printf(uninit: %p\n,un_g_val);13 char *p1 (char*)malloc(10);14 char *p2 (char*)malloc(10);15 char *p3 (char*)malloc(10); 16 17 printf(heap_p1: %p\n,p1); // 堆地址18 printf(heap_p2: %p\n,p2);19 printf(heap_p3: %p\n,p3);20 printf(stack_p1: %p\n,p1); //栈地址21 printf(stack_p2: %p\n,p2);22 printf(stack_p3: %p\n,p3);23 24 int i 0;25 for(i0;iargc;i)26 {27 printf(argv[%d]:%p\n,i,argv[i]);28 }29 30 for(i0;env[i];i)31 { 32 printf(env[%d]:%p\n,i,env[i]);33 } 34 return 0; } 这个程序打印了各种变量的地址印证了地址空间是确实存在的 我们再看这个代码能编过吗 11 //常量 12 hello world; 13 50; 14 xxxx; 可以编译过并且该东西是字符常量它会硬编码进代码因为代码也不可更改所以字符常量会在代码区。 虚拟地址空间 看下面一段代码该程序创建了一个子线程共享父进程的全局变量子进程会更改全局变量。 1 #includestdio.h2 #includestdlib.h3 #includeunistd.h4 int g_val 2;5 6 7 int main()8 {9 pid_t id fork();10 11 if(id 0)12 {13 //child14 int cnt 0;15 while(1)16 {17 printf(I am a child, pid_id:%d, ppid_id:%d , g_val:%d, g_val:%p\n,getpid(),getppid(), g_val,g_val);18 19 sleep(1);20 cnt;21 if(cnt5)22 {23 g_val 200;24 printf(child chamge g_val 2 - 200 success\n);25 }26 }27 }28 else29 { 30 //father31 while(1)32 {33 sleep(1);34 printf(I am a father, pid_id:%d, ppid_id:%d , g_val:%d, g_val:%p\n,getpid(),getppid(), g_val,g_val);35 }36 } I am a child, pid_id:20414, ppid_id:20413 , g_val:2, g_val:0x60105c I am a father, pid_id:20413, ppid_id:18692 , g_val:2, g_val:0x60105c child chamge g_val 2 - 200 success I am a child, pid_id:20414, ppid_id:20413 , g_val:200, g_val:0x60105c I am a father, pid_id:20413, ppid_id:18692 , g_val:2, g_val:0x60105c 我们从运行的结果可以看出来子进程修改全局变量后子进程的值改变父进程的值没变但是全局变量的地址空间一样 为什么会产生这种情况呢 我们大胆猜测程序打印的地址一定不是物理地址因为同一地址不可能存储两个不一样的值 。因为打印出来的是虚拟地址 虚拟地址 每一个程序都有自己的虚拟地址空间就像PCB一样每一个程序都有一个属于自己的虚拟地址空间记录着各种数据的位置供操作系统使用。 如下图所示代码在准备执行时会编译成可执行程序此时程序里面即代码与代码是有地址的这个地址就是虚拟地址程序被加载到内存后 首先系统会创建PCBPCB会有一个指针指向程序虚拟内存根据虚拟内存的地址所对应的物理内存地址填充页表完成映射。 页表 页表的作用就是完成虚拟地址到物理地址的转换 下图是解释上面代码例子的虚拟空间问题子进程创建后获得父进程一模一样的地址空间当触发写时拷贝时才复制资源。这样会节省空间。 进程地址空间生命周期图解 程序被读进内存的过程 程序执行的流程 为什么要有地址空间呢 1.为了保护物理内存页表将各个进程隔离起来了。因为地址空间和页表是OS创建并且维护的意味着想要使用地址空间和页表映射必须在OS的监管之下进行访问。因此保证了进程之间的独立性互不影响。 因为有地址空间和页表的存在OS可以实现对未来的数据进行任意位置的加载只需根据页表即可找找到杂乱无章的数据。这样物理内存的分配和进程的管理就可以分开进行管理。内存管理模块和进程管理模块就完成了解耦合。 如果我申请了物理空间但是我不立马使用我会造成空间的浪费但是如果我在虚拟空间上申请当我没使用时也没有为我开物理空间 。当我使用时OS才帮我开辟空间这样可以保证内存的使用率是100%。 物理内存上的数据理论上可以在任意位置加载这会导致物理内存上的所有数据都是乱序的。但是有VA页表的存在我们可以方便的直接找到各种数据在进程的视角数据是那么的竟然有序因此可以将内存分布有序化 小结 OS的系统是深而庞杂的此文章只是浅显的谈论了以下内存空间的概念及其分布。更详细的内容还请读者自行查阅。
http://wiki.neutronadmin.com/news/298590/

相关文章:

  • vue 做的网站系统开发软件
  • 越秀微网站建设光棍天堂手机2019版免费观看
  • 公司网站建设素材中细软做的网站
  • 怎样在手机上做自己的网站网店美工课程
  • wordpress 空间商seo是什么职业合法吗
  • 做网站购买备案域名网站 建设运行情况报告
  • 找人做海报在什么网站找免费的ui设计的网站
  • 做网站免费搭建温州网站建设制作
  • 如何规划设计一个网站ueditor编辑器wordpress
  • 网站开发小图标怎么设置seo优化中商品权重主要由什么决定
  • 网站建设柒首先金手指1有经验的常州网站建设
  • 查网站的建站系统商家管理系统
  • 门户网站建设先进性seo如何优化排名
  • 外贸网站排名贵州网站建设营销公司
  • 做网站程序先从哪一步开始一流的网站建设
  • 女孩子学做网站有前途吗河间网站建设价格
  • 内蒙做网站北京网站建设专家
  • 电子商务网站建设的基本步骤招聘网站怎么做介绍
  • 南浔区建设局 网站广告公司网站建设方案
  • 网站后缀com网站建设我要自学网
  • 巴中市城乡和住房建设局网站网站二级页面需不需要设置关键词
  • 助农网站策划书广告设计app
  • 网站建设方案书 广东织梦cms零基础做网站
  • 电影网站建设基本流程怎么建设网站数据库
  • 网站基础建设和管理暂行办法php网站开发是什么意思
  • 网站后端性能优化措施公司起名用字大全
  • 模版网站是什么意思kn95口罩
  • 处理营销型网站建设策划的几个误区网站建设一般是用哪个软件
  • 建设网站涉及哪些问题杭州建设网杭州造价平台
  • 网站空间租用费用做企业网站域名