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

沈阳网络平台推广公司廊坊视频优化价格

沈阳网络平台推广公司,廊坊视频优化价格,做个商城网站怎么做便宜吗,wordpress 禁用标进程地址空间 例子引入#xff1a; 我们在讲C语言的时候#xff0c;老师给大家画过这样的空间布局图#xff0c;但是我们对它不了解 我们写一个代码来验证Linux进程地址空间 #includestdio.h #includeassert.h #includeunistd.h int g_value100; …进程地址空间 例子引入 我们在讲C语言的时候老师给大家画过这样的空间布局图但是我们对它不了解 我们写一个代码来验证Linux进程地址空间 #includestdio.h #includeassert.h #includeunistd.h int g_value100; int main() {pid_t idfork();assert(id0);if(id0){//childwhile(1){printf(我是子进程我的id是%d我的父进程是%d g_value:%d,g_value:%p\n,getpid(),getppid(),g_value,g_value);sleep(1);}} else{//fatherwhile(1){printf(我是父进程我的id是%d我的父进程是%dg_value:%d,g_value:%p\n,getpid(),getppid(),g_value,g_value);sleep(2);} } return 0; } 这里没什么问题就是他们的g_valule 和其地址都是一样的 我们将代码调整一下让子进程的g_value #includestdio.h #includeassert.h #includeunistd.h int g_value100; int main() {pid_t idfork();assert(id0);if(id0){//childwhile(1){printf(我是子进程我的id是%d我的父进程是%dg_value:%d,g_value:%p\n,getpid(),getppid(),g_value,g_value);sleep(1);g_value;//只有子进程会进行修改}} else{//fatherwhile(1){printf(我是父进程我的id是%d我的父进程是%dg_value:%d,g_value:%p\n,getpid(),getppid(),g_value,g_value);sleep(2);} } return 0; } 我们可以发现子进程的g_value变了但是父进程没有变两个的地址还是一样的 ❓为什么他们两个地址相同但是读出来的数据不同呢下文会解答 子进程对全局数据修改并不影响父进程——进程具有独立性 ❓这个地址会是物理地址不会 显然这个地址绝对不是物理地址所以我们平常在语言层面用的地址绝对不是物理地址所以以前用的指针绝对不是地址其实这个地址叫做虚拟地址or线性地址 故事引入 香港某个老板非常滴有钱有10亿美金他有 4个私生子每个私生子都并不知道对方的存在他们都以为自己是独生子。因为他们彼此不知道对方的存在所以他们在生活和工作上也没有交集不会有任何互相的影响这就是独立性的体现。财阀老板为了维护自己的独立性 他就对大儿子说“儿子你好好学习以后老爹钱都是你的。”大儿子一听卧槽真好高枕无忧就好好学习一想到自己以后有钱就更想学习了。 然后又对二儿子说“儿子好好工作等以后我就把公司给你。”二儿子一听热泪盈眶于是就好好工作等着将来有一天可以继承公司。 后来又对三儿子说“儿子你好好干活等你长大老爹的家产交给你”三儿子知道自己以后会继承老爹的所有财产开心坏了就努力的干活。 后来又对四儿子说“儿子你好好干活等你长大老爹的家产交给你”四儿子知道自己以后会继承老爹的所有财产开心坏了就努力的干活。 只要在财阀爹的可承受范围内孩子要多少钱他都给多少钱所以三个儿子自然都认为自己有很多钱。财阀老板给他的三个儿子画了一张虚拟的、不存在的大饼让他们都能努力学习工作干活这个步骤就是给他们分别建立了进程地址空间。 画的饼进程地址空间10亿美金内存老板操作系统四个私生子是进程 ❓大富翁要不要把“饼”管理起来呢 显然需要的遵循先描述再组织的原则 所以进程地址空间就是就是给进程画的大饼 进程地址空间 → 逻辑上抽象的概念 → 让每个进程都认为自己独占系统的所有资源 **概念**操作系统通过软件的方式给进程提供一个软件视角认为自己是独占系统的所有资源内存。 区域和页表 什么叫做区域我们来拿一张桌子来理解初中的时候小花和小胖分过 “38线” 三八线的本质就是区域划分 地址空间本身就是一个线性区域地址空间是线性结构的 struct mm_struct {long code_start;long code_end;long init_start;long init_end;long uninit_start;long uninit_end;long heap_start;long heap_end;long stack_start;long stack_end;... }如果限定了区域那么区域之间的数据是什么 是虚拟地址or线性地址 程序加载到内存由程序变成进程后由操作系统给每个进程构建的一个页表结构就是 页表。 数据和代码真正只能在内存中 找到地址不是目的而是手段 回到之前那个问题 ❓为什么他们两个地址相同但是读出来的数据不同呢 如果子进程对数据进行了修改因为进程具有独立性子进程的修改不能影响父进程 子进程这里的 物理地址改了但是虚拟地址没有改 写时拷贝发生在物理地址虚拟地址没有变 因为进程具有独立性比如如果此时子进程把变量改了写入就会导致父进程识别的问题就出现了父进程和子进程不一的情况因为进程是具有独立性的所以我们就要做到互不影响。我们的子进程要进行修改了影响到父进程怎么办没关系操作系统会出手当我们识别到子进程要修改时操作系统会重新给子进程开辟一段空间并且把 100 拷贝下来重新给进程建立映射关系所以子进程的页表就不再指向父进程所对应的 100 了而直接指向新的 100。你在做修改时又把它的值从 100 改成 200 时我们就出现了 “改的时候永远改的是页表的右侧左侧不变” 的情况所以最后你看到了父子进程的虚拟地址一样但是经过页表映射到了不同的物理内存所以了你看到了一个是 100 一个是 200父子进程的数据不同的结果。 我们的操作系统当我们的父子对数据进行修改时操作系统会给修改的一方重新开辟一块空间并且把原始数据拷贝到新空间当中这种行为就是 写时拷贝 当父子有任何一个进程尝试修改对应变量时有一个人想修改就会触发写时拷贝让他去拷贝新的物理内存这只需要重新构建也表的映射关系虚拟地址是不发生任何变化的所以最终你看的结果是虚拟地址不变而内容不同。 这个结构也体现了进程具有独立性 pid_t idfork() if(){} else {}❓fork在返回的时候父子都有return两次id是不是pid_T类型定义的变量呢 是的返回的本质就是写入谁先返回谁就让OS发生写时拷贝 如果是父进程就返回pid如果是子进程就返回0 为什么进程地址空间要存在 ❓如果没有地址空间我们OS是如何工作呢 这里就是害怕野指针的情况要寻找一个地址因为你的代码错误找到了一个越界地址时写入时会使别人的进程错了而且很不安全因此有了页表和虚拟空间 这两个存在的意义1.防止地址随意访问保护物理内存与其他进程 ❓常量字符串不能修改这是为什么呢因为页表访问的时候是有权限的权限不能修改 char*str“hello world” *str‘H’先来将另外一个扩充malloc的本质—— ❓向OS申请内存操作系统立马给你还是说在你需要的时候给你 1.在你需要的时候给你OS一般不允许任何的浪费或者不高效 2.申请内存立马使用呢不一定等于立马使用 3.在你申请成功之后和你使用之前就有一段小小的时间窗口这个空间没有被正常使用但是别人用不了—-闲置状态 如果有500进程这样的话这样操作系统就有大块的空间处于这种状态,这种情况叫做缺页中断 ❓因为有页表你关心不关心你申请的空间是在物理空间的哪一块呢不关心一样的
http://www.hkea.cn/news/14280503/

相关文章:

  • 开发个网站多少钱装修平台入驻
  • 网站建设 技术方案湖南网站开发 d岚鸿
  • 牡丹江3d网站开发自己怎么做外贸网站空间
  • 网站开发工资淄博网站备案主体授权书
  • 坐什么网站能用到html5wordpress 文件夹改名
  • 长寿做网站的电话站长之家alexa排名
  • 做内贸哪个网站好wordpress数字商城
  • 用dw做的网站容易变形单片机和做网站
  • 南京公司网站建立万峰科技著.asp.net网站开发四酷全书电子工业出版社
  • 网络型网站分为网站发布方式 提高
  • 网站的推广费用东莞建设网住房保障专栏20批公示栏
  • 甘肃住房城乡建设厅网站集团网站建设特点互联网课堂
  • 怎样做有趣的视频网站免费网址大全
  • 昆明微网站制作wordpress显示全部标签
  • 国外网站设计欣赏分析六安市网站制作
  • 网站开发写好了怎么发布有机大米网站建设方案
  • 公司网站自己创建辽源市住房和城乡建设局网站
  • 移动网站开发与维护有专门做网站的吗
  • 制作营销网站模板汕头新闻
  • 前端搜索网站引擎怎么做7zwd一起做网店官网
  • 深圳企业网站建设公司排名友山建站优化
  • 数据统计网站设计网页要多少钱
  • 学校网站建设项目可行性分析报告企业新闻稿发布平台
  • 贵州省城乡与住房建设部网站商家做小程序怎么做
  • dw个人网站设计模板免费北京宣传片制作公司
  • 淄博网站关键词优化wordpress调用新版媒体库
  • 容桂网站设计制作重庆网站排名提升
  • 建设银行官方网站登录网址房地产网站建设需求说明书
  • 专做畜牧招聘网站的建设摩托车官网110
  • 专业做医院网站建设网站自己怎么建设