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

网站公众号建设工具广西壮族自治区人口

网站公众号建设工具,广西壮族自治区人口,网站用动态图片做背景怎么写,营销展示型网站建设价格Linux|内存地址空间 现象基本概念理解如何理解地址空间什么是划分区域#xff1f;地址空间的理解为什么要有地址空间#xff1f;如何进一步理解页表和写时拷贝如何理解虚拟地址 Linux真正的进程调度方案 现象 #include stdio.h #include string.h #include … Linux|内存地址空间 现象基本概念理解如何理解地址空间什么是划分区域地址空间的理解为什么要有地址空间如何进一步理解页表和写时拷贝如何理解虚拟地址 Linux真正的进程调度方案 现象 #include stdio.h #include string.h #include unistd.h #include stdlib.h #includesys/types.h int g_val 100;int main() {printf(father is running, pid: %d, ppid: %d\n, getpid(), getppid());pid_t id fork();if(id 0){//childint cnt 0;while(1){printf(I am child process, pid: %d, ppid: %d. g_val: %d, g_val: %p\n, getpid(), getppid(), g_val, g_val);sleep(1);cnt;if(cnt 5){g_val 300;printf(I am child process, change %d - %d\n, 100, 300);}}}else{//fatherwhile(1){printf(I am father process, pid: %d, ppid: %d. g_val: %d, g_val: %p\n, getpid(), getppid(), g_val, g_val);sleep(1);}} } 同一个地址但是值却不一样这是为什么呢我们可以得出一个最基本的结论就是我们看到的地址不是真实的物理地址 基本概念 操作系统为我们划分了4G的虚拟进程地址空间针对32位的机器 虚拟进程空间和真实的进程空间通过页表的映射联系起来 每一个进程都有自己的一份虚拟进程空间子进程会基础父进程的内核数据结构 内存空间是用来描述代码和数据的本质是操作内核中的一个数据结构 因为操作系统设计进程的时候要保证独立性子进程的数据是独立的子进程修改val的值的时候会发生写时拷贝 这也解释了为什么我们看到的地址一样值却不一样因为发生了写时拷贝虽然虚拟地址是一样的但是物理地址则不一样。 写实拷贝本质是一种按需申请如果把父进程内存空间的数据全部拷贝一份会浪费很多。比如命令行参数和环境变量几乎是不修改的。 理解 如何理解地址空间 什么是划分区域 上小学的的时候我们都会遇到这种情况就是和同桌划分三八线本来各占桌子的百分之五十但是一天你突发奇想想要把区域划分大一点。这怎么用计算机描述呢 我们可以定义一个区域的结构体来描述自己的区域大小。 另外一个结构体用来描述来个区域的信息。 struct area {int startint end; }typedef areastruct desk {area left;area right; }typedef deskdesk.left.end 20; desk.right.start - 20;进程地址空间本质上也是一个结构体很多属性表示end 和start的范围。 地址空间的理解 操作系统给进程画的大饼 操作系统告诉每个进程你们可以使用整个的内存哦 为什么要有地址空间 实际中的物理内存中代码区数据区堆区栈区共享区命令行参数环境变量是杂乱存放的。页表和进程地址空间可以将无序变为有序。对进程管理模块和内存管理模块进行解耦。我们申请开辟空间只是在进程地址空间中调end的大小当使用时才真正的在内存中分配。这样做能提高内存的利用率拦截非法请求当我们访问内存时操作系统和硬件会在页表中寻找物理内存的位置但是当我们越界访问时就在页表中找不到对应的物理内存的位置操作系统就把这次访问内存的请求拦截了下来避免往内存中写入废旧的数据从而影响其他内存。 如何进一步理解页表和写时拷贝 页表里面有很多标记位比如能否读写的标记位是否在物理内存中的标记位 理解进程挂起就是把进程是否在物理内存中置为false了 解释 char *str “hello word” *str ‘H’ 在字符常量区为什么不能被修改呢 因为页表在映射时有权限管理 OS通过识别到错误比如父子进程对全局变量的权限都是r和w 父进程一旦创建了子进程对全局变量的权限都变为w 此时修改就会判断为错误来引发写时拷贝 先判断数据是不是在物理内存中看标记为是否ture如果不在发生缺页中断在内存中分配一个空间。这属于正常情况是不是需要写实拷贝怎么判断是否需要写实拷贝呢?通过引用计数的方式如果都不是才进行异常处理比如我们越界了地址就不页表的虚拟地址中 如何理解虚拟地址 最开始的时候页表里的数据从那里来的 我们知道程序里面本身就有地址 这个地址就是逻辑地址虚拟地址 当程序加载到物理内存的时候就得到物理地址 根据这个虚拟到物理建立映射关系 int main() {pid_t id fork();if(id 0){// childwhile(1){printf(I am child, %d, %p\n, id, id);sleep(1);}}else if(id 0){while(1){printf(I am father, %d, %p\n, id, id);sleep(1);}}return 0; }解释这个id怎么能同时0又!0呢return 的本质就是对ID进行写时拷贝 Linux真正的进程调度方案 runqueue里的queue虽然有140个空间 但是前100个空间不用。 和我们nice -20到19 对应优先级 60~99 queue里面的每一个元素又是一个队列把task_struct 按优先级放入对应下标的队列中因为前面有很多空间没用我们又使用了大小为5个长整型的位图 32位 32位的查找 使用的下标。实际当中有两个这样的结构 通过一个active指针和expired指针指向active指向的队列 只出不进expired指向的队列只进不出。active指向的队列为空时交换两个指针。
http://www.zqtcl.cn/news/561085/

相关文章:

  • 门户网站内容wordpress上下页
  • 长安做英文网站营销型网站搭建
  • 网站开发交接清单seo排名优化方法
  • 各学院二级网站建设通报wordpress注册评论
  • 南通公司做网站无人在线完整免费高清观看
  • 廊坊网站推广局域网网站建设的步骤过程
  • 如何在工信部网站注册简易网页设计代码
  • 做石油系统的公司网站做艺术品展览的网站
  • 枣庄公司网站建设珠海蓝迪装饰设计工程有限公司
  • 广州企业网站营销电话成都网站建设制作设计
  • 求个网站带图片素材域名及密码登录域名管理网站
  • 文交所网站开发wordpress页面编辑插件
  • 丹徒网站建设价格做矿产公司的网站
  • 北京的制作网站的公司在哪里软件程序员
  • 企业网站怎么扣费的网站建设合同的性质
  • 聚美优品一个专注于做特价的网站如何制作个人网页兼职
  • 滨州做网站的公司最好wordpress主题
  • 福州网站设计软件公司dw网站开发流程
  • 合肥网站搭建公司哪家好深圳二维码网站建设
  • 东莞微信网站开发免费html模板素材网站
  • 海淀专业企业网站建设青岛平面设计公司
  • 北京正规网站建设比较wordpress cookies因预料之外的输出被阻止
  • 自助微信网站设计什么叫一级域名二级域名
  • 上海 顶尖 网站设计wordpress多站点不同主题
  • asp c 网站开发wordpress 动静分离
  • 服装网站建设规定wordpress禁止自动升级
  • 如何在网站上做社交的链接毕设给学校做网站
  • 网页设计与网站建设指标点您身边的网站建设顾问
  • 个人网站的制作广州网站优化招聘
  • 做网站产生的流量费怎么算软件开发前景和收入