内存

作者: 深度_1175 | 来源:发表于2019-07-14 22:37 被阅读0次

内存
1.程序的装入与链接
在多道程序环境下,要使程序运行,必须创建进程,而创建进程就要将程序和数据装入内存。一个用户源程序要变为在内存中可执行的程序,通常要进行以下处理:
编译:由编辑程序将用户源程序编译成若干个目标模块。
链接:由连接程序将目标模块和相应的库函数链接成装入模块。
装入:由装入程序将装入模块装入内存。

可重定位装入——多个程序的起始地址都从0开始,程序中的其他地址都是相对于起始地址的。装入时将目标程序中的指令和数据的相对地址转换成装入位置的物理地址,该过程称为重定位。这种地址变换是装入时一次完成的,称为静态重定位。

在连续分区存储管理中,要求把进程放在一个连续的存储区中。非连续存储方式允许将作业/进程放到多个不相邻接的分区中。

将内存物理空间划分成固定大小的块(大小通常为2的若干次幂,如512B,4096B),称为页框
讲逻辑空间分成与物理块同样大小的页(pages)。
系统建立一张空闲页框表,用以维护系统中的自由空间。
当需要执行一个大小为n页的进程时,就在内存中寻找n自由页框,并将内存转放入其中。
为进程设置一张页表,记录页编号和页框编号的对应关系。实现逻辑地址向物理地址的转换。

CPU生成的逻辑地址被自动分成:(地址变换)
页号(p)—用作访问页表的索引,页表内保存每页在内存中的物理地址(块号)
页内偏移量(w)—与物理块号一同构成实际的内存物理地址。

虚拟内存
基于局部性原理,程序运行之前,没有必要全部装入内存,仅须将当前要运行的页(段)装入内存即可。
运行时,如访问的页(段)在内存中,则继续执行,如访问的页未在内存中(缺页或缺段),则利用OS的请求调页(段)功能,将该页(段)调入内存。

如内存已满,则利用OS的页(段)置换功能,按某种置换算法将内存中的某页(段)调至外村,从而调入需访问的页。 图片1.png

相关文章

  • Linux 内存管理 应用篇

    1、物理内存和虚拟内存 物理内存:物理内存就是系统硬件提供的内存大小,是真正的内存 虚拟内存:为了满足物理内存的不...

  • linux io与zero copy

    1. 物理内存与虚拟内存 1.1 物理内存 物理内存指通过物理内存条而获得的内存空间。 1.2 虚拟内存 虚拟内存...

  • 性能优化<第五篇>:内存优化

    1、为什么要内存优化? 2、了解内存中的内容 3、内存上限 4、GC内存回收机制 5、内存泄漏、内存抖动、内存溢出...

  • JVM第二天-volatile final synchroniz

    1.JAVA内存模型 简单的讲,Java 内存模型将内存分为共享内存和本地内存。共享内存又称为堆内存,指的就是线程...

  • 伙伴算法和slab算法

    0. 内存管理问题 内存碎片太小和管理内存碎片的效率问题 内存碎片:回收内存时,将内存块放入free链表中。因内存...

  • JVM 常见内容汇总

    面试题 对象 对象的创建 分配内存 对象头 内存溢出 内存溢出与内存泄漏 内存溢出:系统无法再分配内存空间。 内存...

  • java内存模型

    1.内存模型(JMM) 1.1什么是Java内存模型? Java内存模型将内存分为主内存和工作内存两大部分;主内存...

  • 变量提升

    堆内存 & 栈内存 JS中的内存一共两种:堆内存和栈内存 堆内存 作用:用来存储引用数据类型值的内存空间叫做堆内存...

  • 物理内存和虚拟内存

    物理内存 物理内存是真实的内存大小,即内存条内存大小 虚拟内存 虚拟内存是为了满足系统对超出物理内存容量的需求时在...

  • 5、哪些情况下会导致oom问题?

    1、根据java的内存模型会出现内存溢出的内存有堆内存、方法区内存、虚拟机栈内存、native方法区内存;2、一般...

网友评论

      本文标题:内存

      本文链接:https://www.haomeiwen.com/subject/oxnmkctx.html