内存空间的分配与回收

weblog 843 0 0

《操作系统》

操作系统作为系统资源的管理者,当然也需要对内存进行管理,要管些什么呢?

游戏GTA的大小超过60GB,按理来说这个游戏程序运行之前需要把60GB数据全部放入内存。然而,实际我的电脑内存才4GB,但为什么这个游戏可以顺利运行呢?

为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而逻辑地址到物理地址的转换(这个过程称为地址重定位)应该由操作系统负责,这样就保证了程序员写程序时不需要关注物理内存的实际情况。

所以操作系统主要管理一下四个事情

  • 1.操作系统负责内存空间的分配与回收
  • 2.操作系统需要提供某种技术从逻辑上对内存空间进行扩充
  • 3.操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换
  • 4.操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰

内存保护

内存保护可采取两种方法:

方法一:在CPU中设置一对上、下限寄存器,存放进程的上、下限地址。进程的指令要访问某个地址时,CPU检查是否越界。

方法二:采用重定位寄存器(又称基址寄存器)和界地址寄存器(又称限长寄存器)进行越界检查。重定位寄存器中存放的是进程的起始物理地址。界地址寄存器中存放的是进程的最大逻辑地址。


猜你喜欢
java虚拟机(jvm) 1599 年诞生于MTLisp是第一门真正使用动态和垃圾集技术语言。当Lisp还在胚胎时期时,人们就在思考GC需要完成3件事情: 哪些需要? 什么时候? 如何?经过半个多世纪发展
java基础 3751 用进行讨论,Java堆中上述各个区域等细节将会是下一章主题。  根据《Java虚拟机规范》规定,Java堆可以处于物理上不连续中,但在逻辑上它应该被视为连续,这点就像我们
java虚拟机(jvm) 1446 1.标记-清除算法最基础集算法是“标记-清除”(Mark-Sweep)算法,如同它名字一样,算法为“标记”和“清除”两个阶段:首先标记出所有需要对象,在标记完成后统一所有被标记
java虚拟机(jvm) 7012 指针引用,所以一般这部使用相对较小,而且当方法调用完成以后栈帧中占用即可被。影响java虚拟机栈最大深度因素有那些1.Java虚拟机栈大小直接影响栈深度2.在java虚拟机栈
java虚拟机(jvm) 2464 这里以HotSpot为例,且所说对象指普通Java对象,不包括数组和Class对象等。参考资料深入理解java虚拟机《周志明》1.对象布局HotSpot虚拟机中,对象在布局可以
java虚拟机(jvm) 4768 jvm模型析(1)已经对模型进行了一个宏观概括http://www.jiajiajia.club/weblog/blog/artical/82那么下边具体析一下方法执行过程还是以一个
official 878 《深入理解java虚拟机》[TOC]一、运行时数据区域  Java虚拟机在执行Java程序过程中会把它所管理为若干个不同数据区域。这些区域有各自用途,以及创建和销毁,有区域随
java虚拟机(jvm) 3574 jvm模型析(5)堆溢出以及析1.模拟堆溢出代码packagetest;importjava.util.ArrayList;importjava.util.List
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。