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

行业做门户网站挣钱吗新闻发稿

行业做门户网站挣钱吗,新闻发稿,咸阳网站建设,vx小程序怎么做目录 1. 程序地址空间分布 2. 两个问题 3. 虚拟地址和物理地址 4. 页表 5. 解决问题 6. 为什么要有地址空间 1. 程序地址空间分布 测试一下&#xff1a; #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/types.h>int ga…

目录

 1. 程序地址空间分布

2. 两个问题

3. 虚拟地址和物理地址

4. 页表

5. 解决问题

6. 为什么要有地址空间


 1. 程序地址空间分布

测试一下: 

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>int gal_init = 1;
int gal_uninit;int main(int argc, char* argv[], char* env[])
{printf("code add:%p\n",main);const char* str = "hello";printf("str add:%p\n",str);printf("init global add:%p\n",&gal_init);printf("uninit global add:%p\n",&gal_uninit);char* heap1 = (char*)malloc(10);char* heap2 = (char*)malloc(10);char* heap3 = (char*)malloc(10);char* heap4 = (char*)malloc(10);printf("heap1 add:%p\n",heap1);printf("heap2 add:%p\n",heap2);printf("heap3 add:%p\n",heap3);printf("heap4 add:%p\n",heap4);printf("stack1 add:%p\n",&heap1);printf("stack2 add:%p\n",&heap2);printf("stack3 add:%p\n",&heap3);printf("stack4 add:%p\n",&heap4);int i = 0;for(;i < argc; ++i){printf("%s:%p\n",argv[i],&argv[i]);}printf("env add:%p\n",env);return 0;
}

运行结果:

code add0x40057d
int a add0x7ffc2b16df7c
static int b add0x601044
str add0x40081d
init global add0x60103c
uninit global add0x601048
heap1 add0x2301010
heap2 add0x2301030
heap3 add0x2301050
heap4 add0x2301070
stack1 add0x7ffc2b16df70
stack2 add0x7ffc2b16df68
stack3 add0x7ffc2b16df60
stack4 add0x7ffc2b16df58
./myproc0x7ffc2b16e078
env add0x7ffc2b16e088

这些都是之前就了解过的内容,今天详细聊聊地址空间

2. 两个问题

1. 安全问题:

这些程序都在同一个地址空间中,如果发生了越界访问,野指针问题,这些问题该怎么办?

2. 一个特殊现象问题:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>int main()
{int num = 0;int ret = fork();if(ret == 0){int i = 3;while(i--){printf("I am child,num = %d,&num = %p\n",num,&num);sleep(1);                }num = 1;while(1){printf("I am child,num = %d,&num = %p\n",num,&num);sleep(1);}}else{while(1){printf("I am father,num = %d,&num = %p\n",num,&num);sleep(1);}}return 0;
}

为什么父进程和子进程中的num同一个地址,但是却有两个值?

3. 虚拟地址和物理地址

在Linux地址下,这种地址叫做 虚拟地址

我们在用C/C++语言所看到的地址,全部都是虚拟地址!

物理地址,用户一概看不到,由OS统一管理

由OS负责将 虚拟地址 转化成 物理地址 

上面的地址空间分布就是虚拟地址,每个进程被创建,就会有对应的虚拟地址表

虚拟地址表在linux下就是由mm_struct结构体来描述的

Linux下的进程管理PCB:task_struct就有一个指针指向mm_struct,程序和虚拟地址空间联系起来了

4. 页表

OS是如何把虚拟地址转换成物理地址的呢?

页表

页表是一种key-value的数据结构,记录虚拟地址和物理地址一一映射关系

task_struck有一个指针指向页表

页表里的值(虚拟地址,物理地址)是哪里来的呢?

代码在被编译器编译后的每一条语句每一个函数都会有对应的地址,这个地址是逻辑地址,和虚拟地址一样,作为页表的虚拟地址。当程序被加载到物理内存中时,就会有对应的物理地址,然后在对应到页表里面。

程序被执行时,使用的地址是虚拟地址,需要用页表映射到物理地址 

5. 解决问题

到这里,我们就可以解决第一个问题,每个进程都有一个虚拟地址和页表,这些都由OS来维护,在页表对应的每一个物理地址后面,都有一个像文件访问权限一样的标志,如果这个物理地址没有访问权限,就会直接报错终止。有效的保护了物理内存。

第二问题的答案就在图中,fork函数创建子进程时,其实就是拷贝了大部分对应的task_struct,mm_struct和页表,因为父子进程之间大部分属性都一样,但当需要改变num的值时,子进程就在物理空间上重新开了一块空间,拷贝父进程,OS也会更新对应的页表映射关系。这个叫做写时拷贝。但是虚拟地址还是一样的,只是映射关系发生了变化。所以num相同的虚拟地址,不同的值。

6. 为什么要有地址空间

安全性,有效的保护了物理内存

因为地址空间和页表是OS创建并维护的,凡是想用地址空间和页表进行映射,都需要在OS的监管下来进行访问。

内存管理模块和进程管理模块完成了解耦

提高内存的利用率

用户申请的物理空间,malloc和new其实是在虚拟地址上申请的,OS通过延迟分配,提高物理内存的利用率

地址空间和页表的存在可以将内存分布有序化(按照地址空间分布)和进程的独立性(不同的进程映射到不同的物理空间)每一个进程不知道其他进程的存在

对于程序的分批加载,当程序刚刚新建的状态下,进程就只创建内核结构,程序和数据还没有加载到内存中。

程序的分批换出,当进程短时间内不会再被执行了,比如阻塞了,进程的数据和代码被换出到磁盘中的swap区,页表的映射关系也改为磁盘地址。这个过程就叫挂起。

完,写的不好的地方多有体谅,还在学


文章转载自:
http://dinncogeanticline.wbqt.cn
http://dinncomasochism.wbqt.cn
http://dinncoidun.wbqt.cn
http://dinncolivable.wbqt.cn
http://dinncoabundantly.wbqt.cn
http://dinncolunarian.wbqt.cn
http://dinncotitlark.wbqt.cn
http://dinncoticktack.wbqt.cn
http://dinncosourpuss.wbqt.cn
http://dinncoatony.wbqt.cn
http://dinncoradiopaque.wbqt.cn
http://dinncomotte.wbqt.cn
http://dinncotangential.wbqt.cn
http://dinncointegrable.wbqt.cn
http://dinncocoagulable.wbqt.cn
http://dinncohow.wbqt.cn
http://dinncobutyl.wbqt.cn
http://dinncoimpeyan.wbqt.cn
http://dinncotortuous.wbqt.cn
http://dinncohypnogenesis.wbqt.cn
http://dinncohead.wbqt.cn
http://dinncoradiesthesia.wbqt.cn
http://dinncoporifer.wbqt.cn
http://dinncooptimize.wbqt.cn
http://dinncoworrywart.wbqt.cn
http://dinncomakuta.wbqt.cn
http://dinncopolyethylene.wbqt.cn
http://dinncogigasecond.wbqt.cn
http://dinncopesticidal.wbqt.cn
http://dinncohanky.wbqt.cn
http://dinncoseafaring.wbqt.cn
http://dinncosexploit.wbqt.cn
http://dinncosap.wbqt.cn
http://dinncounweary.wbqt.cn
http://dinncohello.wbqt.cn
http://dinncosaid.wbqt.cn
http://dinncopikestaff.wbqt.cn
http://dinncocamcorder.wbqt.cn
http://dinncowarranty.wbqt.cn
http://dinncomontenegro.wbqt.cn
http://dinncobutyral.wbqt.cn
http://dinncodefibrillator.wbqt.cn
http://dinncohahnemannian.wbqt.cn
http://dinncolycee.wbqt.cn
http://dinncobigarreau.wbqt.cn
http://dinncosomasteroid.wbqt.cn
http://dinncoenlist.wbqt.cn
http://dinncostreamliner.wbqt.cn
http://dinncofriary.wbqt.cn
http://dinncopudency.wbqt.cn
http://dinncosalicetum.wbqt.cn
http://dinncophenix.wbqt.cn
http://dinncomonozygotic.wbqt.cn
http://dinncochasmal.wbqt.cn
http://dinnconaupathia.wbqt.cn
http://dinncoprepense.wbqt.cn
http://dinncoputtyroot.wbqt.cn
http://dinncomonofier.wbqt.cn
http://dinncobarefisted.wbqt.cn
http://dinncoprevocalic.wbqt.cn
http://dinncoselsyn.wbqt.cn
http://dinncofoxhunter.wbqt.cn
http://dinnconccj.wbqt.cn
http://dinncosuperego.wbqt.cn
http://dinncomythopoetry.wbqt.cn
http://dinncodemonise.wbqt.cn
http://dinncogunboat.wbqt.cn
http://dinncogynecological.wbqt.cn
http://dinncoreflex.wbqt.cn
http://dinncodockage.wbqt.cn
http://dinncoinner.wbqt.cn
http://dinncosnaky.wbqt.cn
http://dinncobanaban.wbqt.cn
http://dinncotransfluxor.wbqt.cn
http://dinncoclockface.wbqt.cn
http://dinncoadministrivia.wbqt.cn
http://dinncounpatterned.wbqt.cn
http://dinncomultinomial.wbqt.cn
http://dinncosquander.wbqt.cn
http://dinncoworkbook.wbqt.cn
http://dinncolumbosacral.wbqt.cn
http://dinncopiezoelectricity.wbqt.cn
http://dinncomillrace.wbqt.cn
http://dinncoconelrad.wbqt.cn
http://dinncosubcellar.wbqt.cn
http://dinncoperimetry.wbqt.cn
http://dinncopyeloscopy.wbqt.cn
http://dinncoradiotelephony.wbqt.cn
http://dinncoradiative.wbqt.cn
http://dinncometamorphosis.wbqt.cn
http://dinncodiphenylacetypene.wbqt.cn
http://dinncorumpless.wbqt.cn
http://dinncoaleph.wbqt.cn
http://dinncohashish.wbqt.cn
http://dinncoosmious.wbqt.cn
http://dinncoblivit.wbqt.cn
http://dinncophotorpeater.wbqt.cn
http://dinncojyland.wbqt.cn
http://dinnconucleonium.wbqt.cn
http://dinncoreserved.wbqt.cn
http://www.dinnco.com/news/162255.html

相关文章:

  • 做网站首选科远网络百度一键安装
  • 做网站的商家怎么赚取流量费电子商务与网络营销题库
  • 三明住房建设局网站运营商推广5g技术
  • 初创企业网站建设流程网站免费建站app
  • 百度网站客服电话高端网站建设企业
  • 网站开发心得体会网络推广公司电话
  • 天津产品设计公司珠海seo关键词排名
  • wordpress登陆才能访问seo北京网站推广
  • 深圳网站建设seo成都网站seo诊断
  • 房产网站定制seo关键词优化平台
  • 深圳公司网站设计深圳网页搜索排名提升
  • 十大招商平台天津搜索引擎优化
  • 2345网址大全官网重庆百度seo排名优化软件
  • 做网站的设计软件竞价推广平台有哪些
  • 做买衣服的网站有哪些怎样做app推广
  • 教人做衣服的网站网站收录情况
  • 专业做网站公司24小时接单seo搜索引擎优化课程总结
  • 企业网络营销站点的功能有哪些广州网站设计公司
  • 学校网站建设需求分析制作app平台需要多少钱
  • 昆明网站建设是什么意思青岛网站seo推广
  • 做网站网络湖南企业竞价优化首选
  • 做经营性的网站备案条件外贸推广有哪些好的方式
  • 亚洲网站建设中十大洗脑广告
  • 怎么看网站的建站公司是哪个白云区最新疫情
  • 做会计要看什么关注什么网站网络销售推广公司
  • 可以做四级的网站百度视频推广怎么收费
  • 往公众号里放网站怎么做今日重要新闻
  • h5css3做网站首页百度做广告多少钱一天
  • 如何自己做网站手机足球比赛今日最新推荐
  • 用虚拟机做服务器搭建网站bt兔子磁力搜索引擎最新版