CSI-S3:虚拟存储器(二)-再谈hello程序

本文从hello程序出发,探讨虚拟存储器和Windows虚拟内存的关系,解释加载流程、内存分配及保护机制。虚拟内存作为物理内存的拓展,缓解内存紧张问题。在加载程序时,操作系统创建进程的虚拟地址空间,通过映射实现动态加载。malloc分配内存时,实际物理存储器的分配发生在首次引用时。文章还介绍了虚拟存储器的保护机制,如地址翻译中的权限控制,以及NULL指针的处理。
摘要由CSDN通过智能技术生成
         在CSI-IX一篇中,我们详细的介绍了虚拟存储器的相关概念和技术。但了解这些往往不能揭开我们心中的很多疑团。比如,程序的加载执行过程是怎么样,磁盘的可执行文件怎么虚拟存储器机制关联起来并运行于整个生命周期,虚拟存储机制如是如何组织虚拟页面?或许,学习完操作系统我们还并未完全理解虚拟存储器,或者,我们只记住了一大堆诸如页表,段式,页式存储的概念和一些页面置换的算法等等。不过,这些并不能完全归责于我们自身,国内的许多教材往往死板且偏向于理论,从而使很多人失去好奇想法。

         好了闲话暂且不说,我们本篇的内容不会很多,我会再次从hello程序谈起,结合链接、进程和虚拟存储器的整个工作过程,希望这些会让你有新的收获。最后,我还会谈起一些可能的迷惑。

虚拟存储器和windows虚拟内存

          在介绍加载之前,我们首先介绍下这两个概念,windows虚拟内存同Unix下的交换分区(swap space)概念类似,它是用少量的磁盘空间作为内存的拓展,是为了缓解机器的内存紧张而引入的东西。对于物理存储器较小的机器,如果设定了虚拟内存,在内存紧张的情况下将其中暂时不用的页面置换出来,暂时存放在虚拟内存中,待到需要的时候再从虚拟内存调入存储器中。可能我们遇到我类似的情况,在打开的多个程序中,如果长时间不用某一个程序,而在某一个瞬间忽然打开,就能够听到磁盘的转动声音,这个可能就是内存将页面从虚拟内存重新载入引起的。

          虚拟内存在windows下对应有一个pagefile.sys系统分页文件,我们可以在计算机属性卡下对进行设置,如果对于内存空间比较充裕的,可以考虑删除分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值