码迷,mamicode.com
首页 > 其他好文 > 详细

计算机操作系统学习笔记_7_内存管理 --内存管理基础

时间:2014-07-19 23:32:09      阅读:469      评论:0      收藏:0      [点我收藏+]

标签:操作系统   内存管理   存储系统   连续分区分配   非连续分区分配   

内存管理

--内存管理基础



一、内存管理概念

1.存储管理的功能

  (1)内存空间的分配与回收,包括内存的分配和共享。

  (2)地址转换:内存管理配合硬件进行地址转换,把逻辑地址转换成物理地址。

  (3)内存空间的扩充:借助于虚拟存储器或交换覆盖技术来达到扩充内存容量的目的。

  (4)存储保护:为了避免相互干扰和破坏,必须提供保护功能。



2.地址重定位[程序的装入]

  (1)逻辑地址空间

  (2)物理地址空间

  (3)地址重定位

  (4)重定位类型

   地址重定位分为静态重定位动态重定位两类。把作业在装入过程中随即进行的地址变换方式,称为静态重定位。在作业执行过程中,当访问内存单元时才进行的地址变换方式,称为动态重定位。动态重定位是在程序执行过程中由硬件地址变换机构实现的。动态重定位的主要优点如下:用户作业在执行过程中,可以动态申请存储空间和在内存中移动;有利于程序段的共享



3.链接

(1)静态链接

   静态链接(staticlinking)是在生成可执行文件时进行的,即在目标模块中记录被调用模块的名字符号地址(symbolicaddress),在可执行文件中将该名字改写为指令直接使用的数字地址。

(2)动态链接

   动态链接(dynamic-linking)是在运行可执行文件时进行的,亦即,执行过程中,当发现一个被调用模块未装入内存时,立即取找到该模块,并链接到调用者模块上。

   通常被链接的共享代码称为动态链接库(DynamicLink LibraryDLL)或共享库(sharedlibrary)。动态链接又分为:装入时动态链接与 运行时动态链接。



动态链接的优点:

  1)共享:多个进程可以共用一个DLL,比较节省内存,从而可以减少文件的交换。

  2)部分装入:一个进程可以将多种操作分散在不同的DLL中实现,而只将当前操作的DLL装入内存。

  3)便于局部代码修改:即便于代码升级和代码重用;只要函数的接口参数(输入和输出)不变,则修改函数及其DLL时,无需对可执行文件重新编译或链接。

  4)便于适应运行环境:调用不同的DLL,就可以适应多种使用环境并提供不同的功能。


二、交换与覆盖[现在用的已经不多]

   覆盖是指一个作业的某些程序段,或几个作业的某些部分轮流使用某一段存储空间

   交换实质上是使用外存做缓冲,让用户程序在较小的存储空间中通过不断地换出换入而可以运行较大的作业。交换可以是进程的整体交换,称为“进程交换”。如果交换以进程的部分页面或段为单位进行,则分别称之为“页面交换”或“分段交换,又统称为“部分交换”。这种交换方法是实现请求分页请求分段式存储管理的基础,虚拟存储系统就是采用了这种部分交换而得以实现。



三、存储分配方式

1.静态分配

   在装配程序把目标模块进行链接装入时确定它们在内存中的位置。

2.动态分配

   其执行过程中可根据需要申请附加的存储空间。


四、连续分配管理方式

1.固定式和可变式分区存储管理

   (1)固定式分区存储管理{分区大小相等,分区大小不等}

   (2)可变分区存储管理:根据作业的实际需要动态地划分存储空间。

分配算法

   1)首次适应算法(FirstFit)

   2)邻近适应算法(NextFit)

   3)最佳适应算法(BestFit)

   4)最坏适应算法(WorstFit)

  动态分区分配可能会出现“外部碎片”问题,而采用“内存紧缩”技术,可以把碎片集中起来形成一个大的空闲区。



2.分区的存储保护

(1)界地址保护:界地址保护又称为界限寄存器保护。

   界限寄存器方式:下界寄存器存放起始地址,上界寄存器存放结束地址。

   基址寄存器和限长寄存器:基址寄存器存放起始地址,限长寄存器存放最大长度。

(2)存储键保护:同一作业的各页面所对应的内存块都要指定一个相同的,但又不与其他作业相重的键码。这个键码存于快速寄存器和该作业的程序状态字PSW,当程序要访问某一块时,将程序状态字中的键码与被访问块的键码进行比较,若相符,则表明允许本次访问,否则发出越界中断。


五、非连续分配管理方式

1.简单分页存储管理

分页存储管理技术中的基本作法是:

   (1)等分内存:把内存划分成大小相等的单位,称为存储块,或称为页框(PageFrame)

   (2)用户逻辑地址空间的分页:把用户的逻辑地址空间划分成若干个与存储块大小相等的单位,称之为页面或页(Page)。并给各页从起始开始依次编以连续的页号0,1,2,......

   (3)逻辑地址的表示:用户的逻辑地址从基地址“0”开始连续编址,即相对地址。

   (4)内存分配原则:系统以存储块为单位把内存分给作业或进程。

   (5)页表和页表地址寄存器:作业的一页可以分配到内存空间中任何一个可用的存储块。

    简单分页管理方法在作业或进程开始执行之前,把该作业或进程的程序段和数据全部装入内存的各个空闲块中,并通过页表和硬件地址变换机构实现虚拟地址到内存物理地址的地址映射。

   (6)快表。

   (7)页的共享与保护:保护的项目一般有读、写、运行等。



2.分段存储管理

  段式存储管理按用户作业中的自然段来划分逻辑空间,例如代码段,数据段,堆栈段等等。每段占用连续的地址空间,因此作业的逻辑地址是二维的,由段号和段内地址组成。

   (1)把程序按内容或过程(函数)关系分成段,每段有自己的名字。

   (2)地址转换。

   (3)段的共享与保护。

   (4)分段存储管理特点:优点是便于程序模块化处理和便于处理变换的数据结构;便于动态链接;便于共享分段;可以实现虚拟存储器,使作业的地址空间不受内存容量的限制。

计算机操作系统学习笔记_7_内存管理 --内存管理基础

标签:操作系统   内存管理   存储系统   连续分区分配   非连续分区分配   

原文地址:http://blog.csdn.net/zjf280441589/article/details/37966357

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!