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

网站竞价难做优化免费微网站

网站竞价难做优化,免费微网站,公众号与网站,网站建设单位是什么文章目录 前言一、进程地址空间总结前言 本篇文章接着上一篇文章继续讲解进程#xff0c;主要讲述了进程在运行过程中是如何在内存中被读取的以及为什么要有虚拟地址的存在#xff0c;CPU在运行过程中是拿到程序的虚拟地址还是真实的物理内存。 一、进程地址空间 下面我们先…   文章目录 前言一、进程地址空间总结前言 本篇文章接着上一篇文章继续讲解进程主要讲述了进程在运行过程中是如何在内存中被读取的以及为什么要有虚拟地址的存在CPU在运行过程中是拿到程序的虚拟地址还是真实的物理内存。 一、进程地址空间 下面我们先写一个程序用来引出问题 先写一个.c程序和makefile文件 我们通过创建一个子进程的方式让子进程中的全局变量val改变而父进程不会改变这样的结果在我们的预期中应该是子进程修改了全局变量导致父进程中的这个全局变量的值也发生改变那么我们运行起来看看结果 我们发现全局变量val的地址是一样的但是值却不一样了子进程修改了全局变量但是在父进程中为什么全局变量没有被改变呢这是因为进程具有独立性进程  内核数据结构代码数据 也就是说每个进程的内核数据结构和代码数据也是独立的。那么val经过写时拷贝应该有两个不一样的地址才对为什么打印出来的地址是一样呢我们假设这是物理地址有没有可能读取同一个变量的地址竟然会读到不同的数值呢这是不可能的既然是物理地址那就是唯一的所以这一定不是物理地址这就引入了我们今天所学习的虚拟地址也叫线性地址。 进程地址空间本质就是一个内核数据结构struct mm_struct{},下面我们画图描述一下 如上图首先一个进程中存放的是虚拟地址在虚拟地址中又分为内核空间和用户空间在用户空间中从低地址到高地址分别有正文代码初始化数据未初始化数据堆共享区栈命令行参数环境变量而这些区域是如何划分的呢其实很简单只需要一个结构体即可 就比如正文代码和初始化数据的划分只需要修改结构体中的start和end即可像栈区的扩大堆区的缩小原理都是修改相对应区域的区间即可。那么地址空间又如何存储数据的呢CPU和内存是用总线连接的比如32位系统就用32根线连接而这些线只能用0和1表示代表二进制一共有2的32次方种排列方法。 如上图所示进程地址空间就是一个线性范围每个数字都是一个地址而地址空间本质就是线性的。那么我们既然用的是虚拟地址又如何将数据保存到真实的物理内存呢 虚拟地址通过页表MMU映射到物理地址MMU就是内存管理单元。也就是说进程先通过虚拟地址再由页表和MMU将虚拟地址映射找到其物理地址这样我们就能解释为什么相同的地址却有不同的值如下图 父进程中大部分数据被子进程继承后两个进程都是一样虚拟地址既然虚拟地址一样那么通过页表肯定也映射到相同的物理内存中了当子进程要修改val 的时候是不能直接修改的因为进程具有独立性如果子进程修改成功就会影响父进程所以在子进程要修改的时候发生了写时拷贝如下图 由于发生写时拷贝只改变页表中的V值不改变K值所以虚拟地址是一样的而val不一样。 那么如果没有虚拟地址空间操作系统是如何工作的呢 如果没有虚拟地址那么直接访问物理内存这样的方式是不安全的一旦我们写的代码有问题或者出现野指针的情况不小心将其他进程的数据修改了那么就会出现很大的问题虚拟地址可以保证在出现野指针等情况时直接拒绝映射到物理内存这样你就访问不到物理内存也就不会随意访问到其他进程的数据。所以虚拟地址空间的第一个作用是防止地址随意访问保护物理内存与其他进程。就比如这样的代码char* p hello world这样的代码我们是不能以p[0] H这样的方式修改的因为hello world是保存在常量区的对应的页表中的权限为r也就是只读权限所以我们不可以去修改。 那么当我们向操作系统申请内存操作系统立马把内存给我们还是等我们用的时候再给呢由于操作系统不允许任何的资源浪费所以一定是在需要的时候才给空间。当然在我们申请内存成功后和使用之前会有一段小小的时间窗口在这个时间内即使空间没有被使用别人也用不了这块空间这叫做空间的闲置状态。由于页表的存在所以我们并不关心我们的代码放在物理内存的哪个位置只要存放在物理内存就可以了这样就有了虚拟地址的第二个优点将进程管理和内存管理进行解耦合。 也就是说我们不用再像没有虚拟地址的时候那样直接存放在物理内存导致进程管理和内存管理在一起相互管理有了虚拟地址就可以分开管理进程和内存。 当我们的程序再被编译的时候没有被加载到内存那么我们的程序内部有没有地址呢答案是有地址。因为在编译的时候就有了相应的代码段和数据段所以源代码在被编译的时候就是按照虚拟地址空间的方式进行对代码和数据早就已经编好了对应的编制。那么CPU中读到的数据中涵盖的这个地址是虚拟的地址还是物理的地址呢答案是虚拟的因为程序在编译的时候就包含了虚拟地址虚拟地址加载到内存后就具备了物理地址然后通过映射就可以找到物理地址而当程序加载到CPU中的时候CPU是看不到物理地址的因为物理地址是由页表映射而来的所以CPU只能看到虚拟地址。 这就引出了虚拟地址的第三个优点可以让进程以统一的视角看待自己的代码和数据。 总结 本篇文章的重点是如何理解虚拟内存我们通过画图的方式展示了进程地址空间并且提到了虚拟内存的三个优点:1.将进程管理和内存管理进行解耦合 2.防止地址随意访问保护物理内存与其他进程 3.可以让进程以统一的视角看待自己的代码和数据
http://www.w-s-a.com/news/835090/

相关文章:

  • 长春火车站和高铁站是一个站吗公司名称注册查询系统
  • 便利的集团网站建设网页的依托网站
  • 茶叶网站建设题库制作助手app
  • 网站建设栏目层级北京网站搭建公司电话
  • 网站开发运营经理打开百度竞价页面是网站是什么
  • 国内最专业的设计网站建设现在用什么语言做网站
  • 湖南网站开发 岚鸿象山县建设工程招投标网站
  • 长沙免费网站排名wordpress 教学
  • 专门做app的网站html代码是什么
  • 临沂网站制作建设欧米茄表官网
  • 北京模板网站开发全包网站建设的第三方平台
  • 在凡科做的网站怎么推广网页模板下载 免费 html
  • 有关网站建设的标题仿亿欧网wordpress
  • 网站建设公司销售招聘常用的搜索引擎有哪些?
  • wordpress中.htaccess新上线的网站怎么做优化
  • 家教网站怎么做网站建设品牌推荐
  • 青岛做外贸网站建设茶叶公司网站建设策划书
  • 个人电脑做网站主机三合一网站
  • 用html框架做网站怎么在.Net中做团购网站
  • 怎样建一个自己公司的网站制作网站需要钱吗
  • 联盟网站制作wap网站制作公司
  • 美丽乡村建设发展论坛网站wordpress 仿站 教程网
  • 浙江省建设注册管理中心网站首页优设设计网站导航
  • 台州小型网站建设国内免费的建网站平台
  • 自己做网站不推广网站建设工作室发展
  • 有女人和马做网站吗宁波seo优势
  • 网站做用户记录表电商运营推广计划方案
  • 网站备案认领杭州网页设计公司招聘
  • 易签到网站开发设计做网站运营有前途吗
  • 南通网站建设心得2023必考十大时政热点