操作系统内存管理概述

原创 2015年07月09日 14:42:00

内存管理要达到以下目的:

  • 地址保护,一个程序不能访问另一个程序地址空间
  • 地址独立:程序发出的地址【虚拟空间(程序空间)的虚拟地址(程序地址)】应与物理主存地址无关。

虚拟内存可以解决在不太增加成本的情况下扩大内存容量的目的。虚拟内存的中心思想是 将物理内存扩大到便宜、大容量的磁盘上,即将磁盘空间看作是主存空间的一部分。用户程序即可以完全存放在主存,也可以完全存放在磁盘,当然也可以部分存放在主存、部分存放在磁盘。而程序执行时,程序发出的地址到底是在主存还是在磁盘则由操作系统的 内存管理模块 负责判断,并到相应的地方进行读写操作。即虚拟内存需要提供的就是空间像磁盘那样大、速度像缓存那样高的主存储系统。而对程序地址所在位置的判断产生内存管理系统的一个中心功能。

多道编程的内存管理

在多道编程的情况下,就无法将程序总是加载到固定的地址上,必须在程序加载完毕后才能计算物理地址,也就是在程序运行时进行地址翻译,即动态地址翻译

  1. 地址翻译方式

一个程序是加载到内存里事先划分好的某片区域,而且该程序是整个加载进去。物理地址 = 虚拟地址 + 程序所在的区域的起始地址【程序所在区域的起始地址为(程序)基址】。

地址保护只需要满足:程序所在区域的起始地址 ≤ 有效地址 ≤ 程序所在区域的起始地址 + 程序长度。 设置两个端值:基址和极限,即可以起到地址翻译和地址保护的的目的。这两个端值可以由两个寄存器来存放,分别为 基址寄存器和极限寄存器。

动态地址翻译的优点:第一个是灵活,程序可以随便加载到任何地方;第二个是它是实施地址保护的“不二法门”,对每个访问地址进行检查;第三个是它使得虚拟内存的概念得以实现。

         2. 多道编程下的内存管理策略有两种:固定分区和非固定分区。

非固定分区:除了划分给操作系统的空间外,其余的内存空间是作为一个整体存在的,但一个程序需占用内存空间时,就在该片空间里面分出一个大小刚刚满足程序所需的空间;再来一个程序,再这样分出一块来。在一开始给程序分配空间时就分足够大的空间,留有一片闲置空间供程序增长用。一个程序的空间增长通常有两个来源:数据和栈。如何处理这两种空间增长的关系会对整个程序的扩展性产生影响,最简单的办法是让数据和栈往相反的方向增长。Windows内存管理为栈限制了边界,超出该边界将造成程序错误并导致程序终止。

有一个问题:操作系统如何知道应该分配多少空间给一个程序呢?还有一个方法是,给该程序换一个空间;就是当一个程序所占空间不够时,我们将其倒出来到磁盘上,再加载到一片更大的内存空间去。这种将程序倒到磁盘上,再加载进内存的管理方法就成为交换(swap)。

综述,几种基本的内存管理方法分别是,固定加载地址的内存管理(单道编程)、固定分区的内存管理、非固定分区的内存管理和交换内存管理(后三种多道编程)。其中,交换内存管理最灵活,但是存在很大问题,空间浪费,造成“外部碎片”;地址空间增长困难,程序大小受限。

为了解决交换系统存在的缺陷,出现了分页系统。分页系统的核心就是将虚拟内存空间和物理内存空间皆划分为大小相同的页面,并以页面作为内存空间的最小分配单位。


摘录整理自《计算机的心智,操作系统之哲学原理》第11章 基本内存管理

[操作系统]内存管理

本文内容参考自如下博客与书籍: http://blog.csdn.net/windowseight/article/details/8279863 http://bbs.chinaunix...
  • cn_wk
  • cn_wk
  • 2016年10月05日 00:52
  • 736

操作系统:内存管理(概念)

对于计算机系统而言,操作系统充当着基石的作用,它是连接计算机底层硬件与上层应用软件的桥梁,控制其他程序的运行,并且管理系统相关资源,同时提供配套的系统软件支持。对于专业的程序员而言,掌握一定的操作系统...
  • oMengLiShuiXiang1234
  • oMengLiShuiXiang1234
  • 2016年05月30日 14:06
  • 8656

操作系统笔记---内存管理

// 地址绑定 1. 是逻辑地址向物理地址映射的过程 2. 根据映射发生的时间分类: 编译时:编译后,逻辑地址已经映射到物理地址。载入时:编译时候产生可重定位代码。将程序加载到内存时,逻辑地址映射...
  • zzhhit2014
  • zzhhit2014
  • 2016年04月27日 20:02
  • 2995

操作系统实验-内存管理

一、实验内容: 掌握内存分配FF,BF,WF策略及实现的思路; 掌握内存回收过程及实现思路; 参考后面得程序思路,实现内存的申请、释放的管理程序,调试运行,总结程序设计中出现的问题并找出原因; ...
  • macandroid
  • macandroid
  • 2012年11月29日 22:21
  • 5081

《计算机操作系统》总结三(内存管理)

内存管理 包括内存管理和虚拟内存管理。 内存管理包括内存管理概念、交换与覆盖、连续分配管理方式和非连续分配管理方式(分页管理方式、分段管理方式、段页式管理方式)。 虚拟内存管理包括虚拟内存概念、请...
  • bigpudding24
  • bigpudding24
  • 2015年09月23日 21:15
  • 3546

【ARM学习笔记】五、操作系统Operation System和内存管理单元MMU

一、操作系统Operation System 第一台计算机并没有操作系统,计算机工作采用手工操作方式,使用效率极其低下。 随着计算机的性能越来越快,手工操作的慢速度和计算机的高...
  • elitah
  • elitah
  • 2013年11月27日 16:14
  • 1109

操作系统面试—内存管理

本文是对操作系统概念(第七版)——内存管理的学习总结,不足之处欢迎批评指正。 首先我们区分什么是逻辑地址空间和物理地址空间。 逻辑地址空间:cpu所生成的地址,逻辑地址又称为虚拟地址。 物理地址:内存...
  • qq_27225851
  • qq_27225851
  • 2016年06月24日 16:55
  • 700

操作系统内存管理的一些算法

在内存管理中存在这两类算法:一类是内存分配算法,一类是页面置换算法内存分配算法:是指怎么从连续的逻辑地址空间上分配内存地址给进程。常见内存分配算法及优缺点如下:   (1)首次适应算法。使用该算法进...
  • u012637437
  • u012637437
  • 2016年03月17日 00:43
  • 945

操作系统——虚拟内存管理

os中有物理地址和虚拟地址(逻辑地址)的区别 物理地址就是实际的物理内存的地址,逻辑地址是程序指令使用的地址。页表的作用就是实现逻辑地址到物理地址的映射。 x86的32位地址,前20位用于查找页表 ...
  • yyf_it
  • yyf_it
  • 2016年07月28日 17:57
  • 314

学习内存管理---分段、分页

1。操作系统最大的功能就是管理功能,管理进程调度、管理内存、管理文件系统、管理I/O,...。其中最核心的功能是进程管理,但管理的基础是内存管理,只有把内存管理好了,才能使进程在这个广阔的舞台上自由表...
  • liukangshiwo
  • liukangshiwo
  • 2011年09月27日 09:44
  • 590
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:操作系统内存管理概述
举报原因:
原因补充:

(最多只允许输入30个字)