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

网站自动更新时间代码梅州市住房和城乡建设局官网网站

网站自动更新时间代码,梅州市住房和城乡建设局官网网站,网站域名价格 优帮云,想系统学习wordpresswindows的内存管理很是严谨#xff0c;使用内存必须首先分配#xff0c;当然每个操作系统都是这样#xff0c;然而windows的严谨在于分配的过程#xff0c;分为保留和提交两个阶段#xff0c;其中保留的含义就是在进程的虚拟地址空间保留一块空间#xff0c;不能用作他用…      windows的内存管理很是严谨使用内存必须首先分配当然每个操作系统都是这样然而windows的严谨在于分配的过程分为保留和提交两个阶段其中保留的含义就是在进程的虚拟地址空间保留一块空间不能用作他用保留的概念是针对虚拟地址空间的而提交的含义是将刚才保留的虚拟地址空间的虚拟内存块映射到物理内存这里windows扩展了物理内存的含义包括内存条代表的物理内存和磁盘页文件以及任何可以和真正的物理内存进行换入换出操作的后备存储提交的概念其实就是一个映射为了将虚拟内存变得可用而做的一个到实际物理存储的一个映射就是将假的变真了。        windows的保留和提交两阶段方式涉及到几件事情一个就是页表什么时候确立我们可以设想一种合理的方式就是在内存块保留的时候不操作页表仅仅将虚拟内存段插入到一个便于查找和插入删除的数据结构中而在提交阶段操作页表当然此时内存不一定已经到了真正的物理内存很有可能只在页文件中为之分配了一个slot而已此情形下页表的相关位就可以用来描述这个slot的位置以及别的信息只要页表的存在位为0即可这一点和linux可以一样事实上提交内存只是在扩展物理内存含义的前提下才表示映射物理内存虚拟内存真正被映射到原始物理内存只有在该内存被访问的时候才会发生这是绝对懒惰的。事实上我们可以看到windows的方式不够懒惰linux没有保留和提交的概念当一个执行绪调用mmap或者malloc或者brk等等不同层次的函数时实际上就等于保留了内存区域而只有在该内存被访问的时候才会直接映射到物理内存而在这之前根本不会将虚拟内存和物理的事实有任何联系真对于假只有在不能再隐蔽事实的的时候才会显露linux的内存管理是一种绝对的懒惰访问内存其实就可以被看做内存提交。windows之所以采用这一种的方式来管理内存其实是为了用一种更加统一的方式去管理所有的内存只要内存提交了那么内存管理器就要跟踪这块内存不管它在物理存储器还是在磁盘页文件。linux的方式看来更加不规范linux使用页表来充当双面角色既可以查找物理存储器又可以查找交换分区内存的位置并且linux中没有一种机制来统一管理物理存储器和交换分区的空间靠强大的文件系统功能和高效的内存管理和文件管理数据结构就可以轻易做到内存的高效换入换出解除了物理存储器和交换分区的耦合相反在windows下统一华丽的外表下扭曲着混乱不堪的繁杂比如说如果想修改页文件的格式那么必须涉及内存提交时的逻辑而在linux中只需要换一个file_operations就可以了统一华丽的外表完全不是仅仅带来了观感上的舒服同样也付出了代价比如平衡进程间内存数量的任务就交给了用户其实用户只要可以在本进程内存分配和管理内存上保持高度灵活就可以了进程间的内存平衡这样的任务显然是操作系统应该担负起来的由于只要提交内存或者在物理存储器或者在磁盘页文件会占据一定的空间而这些空间是所有的进程共享的如果一个进程疯狂的提交了过多的内存那么别的进程就要忍饥挨饿这一点上操作系统作为一个协调者实际上帮不上什么忙顶多将贪婪者灭掉了事物理内存在各个进程间的分配比例完全取决于进程自己而失去了别的进程的监督以及内核机制的协调这一点看起来不如linux在linux中内存管理模块尽量使内存在进程间公平的分配即使一个进程自己分配了大量的内存只要它不访问这些内存这些内存连交换分区都不会占据更别说物理存储器了当然如果这个贪婪的进程要是访问了这些内存那结果就和windows一样了从程序的行为应该很容易辨别出这个进程不过不管怎样也比windows那种允许占着茅坑不拉屎的策略要好得多虽然内存已经很便宜但是对于同样增长的应用来讲内存仍然是稀缺资源因此完全懒惰式的分配方式应该就是最节省的方式。          作为以上讨论的直接结果我们来看一下两个系统中的堆栈。在windows中堆栈的分配是静态的也就是说在PE文件中确定了线程堆栈的大小并且一般不能在运行时动态改变在对堆栈进行管理的时候windows使用了一种稍微复杂一点但是考虑的很周到的方法windows尽力去保护自己的堆栈不会溢出怎么保护呢在《windows核心编程》上有详细的描述大致就是说首先为你的堆栈确定一个大小然后将这段如此大小的内存块的第一个和最后一个页面设置为保留其余的页面遵循以下原则假设堆栈向下增长windows将依次把正在被使用的下一个页面设置为保护提交当然正在被使用的页面肯定是提交的了每当保护提交页面被访问时系统会得到通知注意得到通知而不是出错信息并没有什么严重的错误因为保护提交页面可以被访问它已经提交了只不过由于具有保护属性所有要告知系统这一件事系统得知后可以将保护提交属性设置给后一个页面依次类推堆栈有着严格的顺序访问特性就是说首先是高地址被访问在略低的地址不被使用之前更低的地址不会被使用当然除非你使用汇编语言完全脱离堆栈的概念这样的话线程的堆栈空间页面将按照从高到底的顺序一个个被提交而紧接着被提交的页面将被设置为保护提交直到最后到达堆栈的末尾的时候windows会检测到此时不再将最后一个页面设置为保护提交而是引发一个栈溢出异常。windows的这种机制的结果就是有效地保护了堆栈后面的数据不被堆栈数据覆盖但是这种机制并不是每次都奏效的比如一个足以使栈溢出的大数组分配在栈上数组的起始其实已经出了堆栈如果我直接存取这第一个元素的话并且恰好该元素覆盖的内存已经被提交那就完蛋了如果你觉得上述实例会被编译器发现的话那么考虑下面的例子 char s[1]; s - 100000; *s 100;          看看linux是怎么做的很简单十分懒惰linux没有为堆栈分配静态的大小而是利用缺页中断使得堆栈在运行期动态增长当然没有了固定的大小也就不存在溢出的问题了只要虚拟内存足够动态增长的需求就有可能被满足那么linux有没有什么办法来保护非堆栈数据被堆栈数据损坏或者反过来的情况呢说实话没有主要是因为一来实现那个机制很复杂维护引入的额外数据结构肯定会影响效率二来这是用户空间的事情程序员如果不合格直接开掉他就是了内核不用为他擦屁股实际上内核如果真的用雕虫小技帮他擦了屁股没有会说内核很高明的因此开源的linux没有这种复杂而且单单对内核没有什么用的机制实际上如果程序员不合格那么他写的程序是防不胜防的机器能和人PK吗很显然不能再好的操作系统面对一般烂的程序员也是无力去爱谁啊                    最后讨论一下“如何分配内存以及在哪里分配到底要不要让用户看到”这个有点哲学味道的问题这个问题关键要看分配的内存做什么用以及这种作用和系统机制的联系的紧密程度比如说我需要一块内存保存一些我程序里面的结构比如大型数据库缓冲比如一个字符串这种情况下分配越透明越好因为程序没有必要和实现机制交流这样程序可以更加集中精力解决所谓的业务问题但是如果一块内存被一个管理机制需要那么就有必要导出给用户更多的信息因为这种需求往往都是关注实现本身的需求而不是接口需求比如线程栈的位置因为线程是操作系统的一种机制目的是优化程序执行它其实和业务逻辑没有什么太大的关系线程更多的被程序流程的管理机制使用而不是被业务流程使用。在这一点点上linux要比windows好得多看看clone系统调用的参数用户必须为线程分配栈空间而这在windows中却是被默默执行的实际上windows尽力去向用户隐藏底层的很多重要的信息然而类似线程栈的位置这样的信息很多用户空间的管理机制还是要用到的因此最好将这一切都交给用户系统不要管的太多。转载于:https://www.cnblogs.com/dartagnan/archive/2011/06/15/2126880.html
http://www.zqtcl.cn/news/349864/

相关文章:

  • 网站开发学徒工作如何设计师培训哪家好
  • 做网站多少钱西宁君博正规株洲在线论坛招聘求职
  • 抚州营销型网站建设殡葬类网站建设
  • 公司网站制作汇报会合肥品牌设计
  • 网站推广策划书怎么说网站建设公司中企动力强
  • php网站源码架构阿里巴巴运营技巧
  • 如何帮助网站吸引流量宁波市网站集约化建设通知
  • 从域名角度看网站建设注意事项河北邯郸seo网站建设网站优化
  • 网站推广策划评估工具7wordpress菜单新连接
  • 网站创建asp电影网站源码
  • 大朗网站建设培训淘宝客cms网站建设
  • 广西建设厅网站在线服务徐州设计网站
  • 重庆营销型网站建设价格网站网站做代理赚钱吗
  • 专门帮做ppt的网站吗网络营销推广的主要特点
  • 烟台做外贸网站店面装修设计图片
  • 广州o2o网站建设餐饮网站建设案例
  • 潜山网站建设抖音代运营报价单
  • 网站建设与推广话术邢台信息港聊天室
  • 获取网页 代码 做网站有哪些网站软件可以做网站的原型
  • 招聘去建设网站类网站东莞今天新增加的情况
  • 烟台网站制作软件互联网创业做什么好
  • 网站建设有名的公司办公室装修实景拍摄图
  • 专业做卖菜的网站网站备案不通过
  • 西安长安区建设局网站网站漂浮广告
  • 顺的网站建设信息东莞建筑建设网站建设
  • 电子商务营销师关键词排名优化网站建设公司
  • 韩国网页设计公司网站有经验的大良网站建设
  • 游戏币网站怎么做十堰电商网站建设
  • 旅游网站系统哪个好城市建设投资公司网站
  • 制作图片海报的软件关键词seo公司