内存掩盖与内存交流

内存掩盖

晚期的盘算机零碎中,主存容量很小,固然主存中仅寄存一道用户程序,然则存储空间放不下用户过程的景象也常常发作,这一矛盾可以用掩盖技巧来处理。
掩盖的根本思惟是:因为程序运转时并非任何时分都要拜访程序及数据的各个局部(特别是大程序),因而可以把用户空间分红一个固定区和若干个掩盖区。将常常活泼的局部放在固定区,其他局部按挪用关系分段。起首将那些行将要拜访的段放入掩盖区,其他段放在外存中,在需求挪用前,零碎再将其调入掩盖区,交换掩盖区华夏有的段。
掩盖技巧的特色是打破了必需将一个过程的全体信息装入主存后才干运转的限制,但当同时运转程序的代码量大于主存时仍不克不及运转。

内存交流

交流(对调)的根本思惟是,把处于等候形态(或在CPU调剂准绳下被褫夺运转权益) 的程序从内存移到辅存,把内存空间腾出来,这一进程又叫换出;把预备好竞争CPU运转的程序从辅存移到内存,这一进程又称为换入。第2章引见的中级调剂就是釆用交流技巧。
例如,有一个CPU釆用工夫片轮转调剂算法的多道程序情况。工夫片到,内存治理器将方才履行过的过程换出,将另一过程换入到方才释放的内存空间中。同时,CPU调剂器可以将工夫片分派给其他已在内存中的过程。每一个过程用完工夫片都与另一过程交流。幻想状况下,内存治理器的交流进程速度足够快,总有过程在内存中可以履行。
有关交流需求留意以下几个成绩:

  • 交流需求备份存储,平日是疾速磁盘。它必需足够大,而且供给对这些内存映像的直接拜访。
  • 为了无效运用CPU,需求每一个过程的履行工夫比交流工夫长,而影响交流工夫的次要是转移工夫。转移工夫与所交流的内存空间成反比。
  • 假如换出过程,必需确保该过程是完整处于闲暇形态。
  • 交流空间平日作为磁盘的一整块,且自力于文件零碎,因而运用就能够很快。
  • 交流平日在有很多过程运转且内存空间吃紧时开端启动,而零碎负荷下降就暂停。
  • 通俗的交流运用不多,但交流战略的某些变种在很多零碎中(如UNIX零碎)仍发扬感化。

交流技巧次要是在分歧过程(或功课)之间停止,而掩盖则用于统一个程序或过程中。因为掩盖技巧请求给出程序段之间的掩盖构造,使得其对用户和程序员不通明,所以关于主存无法寄存用户程序的矛盾,古代操作零碎是经过虚拟内存技巧来处理的,掩盖技巧则已成为汗青;而交流技巧在古代操作零碎中仍具有较强的生命力。

时间: 2024-10-02 00:13:10

内存掩盖与内存交流的相关文章

C基础 内存越界和内存监测的简单处理

引言 突然感觉要出去走走了, 醒了后 刷完牙就在联系coding, 不知不觉到了 黄昏. 看看天, 打开灯. 又感觉到了 夜夜夜夜 . 13年到北京务工, 遇到一批批NB的同龄人物. 一块工作, 一块喜欢锻炼, 一块默默的学习. 从他(她)们身上发现一个事实. 假如我们一样聪明, 当你抱怨自己为什么努力了, 确还是 这么水的时候  ;   其实他(她)们在拼命. 而你只是在努力 , 假如我们不一样聪明, 如果还不能开挂,  那会是怎么样精彩 x x x x. 前言  -  内存越界处理 我们先看

Java架构师中的内存溢出和内存泄露是什么?实际操作案例!

JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,让我们来看一看. 01 内存泄漏 & 内存溢出 1.内存泄漏(memory leak ) 申请了内存用完了不释放,比如一共有 1024M 的内存,分配了 521M 的内存一直不回收,那么可以用的内存只有 521M 了,仿佛泄露掉了一部分: 通俗一点讲的话,内存泄漏就是[占着茅坑不拉shi]. 2.内存溢出(out of memory) 申请内存时,没有足够的内存可以使用: 通俗一点儿讲,一个厕所就三个坑,有两个站着茅坑不走的(内存泄漏)

CUDA学习日志:常量内存和纹理内存

接触CUDA的时间并不长,最开始是在cuda-convnet的代码中接触CUDA代码,当时确实看的比较痛苦.最近得空,在图书馆借了本<GPU高性能编程 CUDA实战>来看看,同时也整理一些博客来加强学习效果. Jeremy Lin 在上一篇博文中,我们谈到了如何利用共享内存来实现线程协作的问题.本篇博文我们主要来谈谈如何利用常量内存和纹理内存来提高程序性能. 常量内存 所谓的常量内存,从它的名字我们就可以知道,它是用来保存在核函数执行期间不会发生变化的数据.NVIDIA硬件提供了64KB的常量

(转)从内存管 理、内存泄漏、内存回收探讨C++内存管理

http://www.cr173.com/html/18898_all.html 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对 C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃 C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能

memory内存与swap内存之小解

计算机内存分为物理内存与虚拟内存,这两个内存分别对应memory内存与swap内存 memory内存:机器的物理内存,由RAM芯片组成,读写速度低于CPU一个量级,但是高于磁盘一个量级,也就是CPU>memory>磁盘 swap内存:由磁盘代替的虚拟内存,在一定程度上解决了机器内存不足的问题,但是磁盘读写要比真正的物理内存慢的多. 当程序起来后,系统判断是否有空闲的物理内存,如果有,直接将其调入物理内存运行,否则,根据优先级,选择进程交换到swap space等待或将数据写入swap,待需要时

程序最多能new多少内存(2G内存里要放程序的5大区,HeapAlloc比new要快多了,而且超过2G的时候会告诉你)

根据<Windows核心编程>得知:X86操作系统提供每个程序最多只有4G的虚拟内存,其中2G虚拟内存提供给系统用(具体用来干什么还待考察),还有2G的内存留给用户使用.那这2G内存能拿来干嘛呢?首先给你介绍程序内存的5大区:栈区,堆区,全局区(静态区),文字常量区,程序代码区.这5大区就只能可怜的蜗居在这2G的内存里,所以我们要好好的珍惜这2G内存了!大部分程序员在申请堆时都习惯使用new,因为它简单好用,但很多一部分程序员不清楚我能new多少内存!这时候就得看你的除了堆区其余4大分区占用了

内存溢出和内存泄露的区别

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出. 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光. memory leak会最终会导致out of memory! 内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产

java堆外内存 (直接内存)

java堆外内存 (直接内存 非托管内存) 堆外内存的好处是: 可以扩展至更大的内存空间.比如超过1TB甚至比主存还大的空间. 理论上能减少GC暂停时间. 可以在进程间共享,减少JVM间的对象复制,使得JVM的分割部署更容易实现. 它的持久化存储可以支持快速重启,同时还能够在测试环境中重现生产数据. 例如NIO为了高效,提供了ByteBuffer ps:进程间通信的方法除了管道,信号,套接字等常规方法,共享内存,读写文件也可以实现进程间的通信. http://www.importnew.com/

【转】深入JVM系列(一)之内存模型与内存分配

http://lovnet.iteye.com/blog/1825324 一.JVM内存区域划分 大多数 JVM 将内存区域划分为 Method Area(Non-Heap),Heap,Program Counter Register, Java Method Stack,Native Method Stack 和Direct Memomry(注意 Directory Memory 并不属于 JVM 管理的内存区域).前三者一般译为:方法区.堆.程序计数器.但不同的资料和书籍上对于后三者的中文译