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

h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }p { margin-bottom: 0.25cm; line-height: 120%; }

内存管理

--内存管理基础

一、内存管理概念

1.存储管理的功能

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

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

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

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

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

(1)逻辑地址空间

(2)物理地址空间

(3)地址重定位

(4)重定位类型

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

3.链接

(1)静态链接

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

(2)动态链接

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

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

动态链接的优点:

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

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

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

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

p { margin-bottom: 0.25cm; line-height: 120%; }

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

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

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

三、存储分配方式

1.静态分配

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

2.动态分配

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

p { margin-bottom: 0.25cm; line-height: 120%; }

四、连续分配管理方式

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

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

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

分配算法

1)首次适应算法(FirstFit)

2)邻近适应算法(NextFit)

3)最佳适应算法(BestFit)

4)最坏适应算法(WorstFit)

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

2.分区的存储保护

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

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

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

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

p { margin-bottom: 0.25cm; line-height: 120%; }


五、非连续分配管理方式

1.简单分页存储管理

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

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

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

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

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

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

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

(6)快表。

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

2.分段存储管理

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

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

(2)地址转换。

(3)段的共享与保护。

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

时间: 07-19

计算机操作系统学习笔记_7_内存管理 --内存管理基础的相关文章

计算机操作系统学习笔记_2_进程管理 --进程与线程(上)

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { fon

计算机操作系统学习笔记_4_进程管理 --处理机调度

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; f

计算机操作系统学习笔记_1_操作系统概述

操作系统概述 一.操作系统的概念.特征.功能和提供的服务 1.操作系统的概念     操作系统是计算机系统中最重要.最基本的系统软件,操作系统位于硬件和用户程序之间.    对于用户来讲:它能向用户提供使用计算机的接口;    从资源管理角度来看:它能管理计算机软硬件资源,提高其利用率;    再者,利用虚拟机技术(如WMWare,VirtualBox,Java虚拟机等),扩展了计算机的功能和使用范围.     因此,操作系统的定义为:操作系统是控制和管理计算机软.硬件资源,以尽可能合理.高效的

计算机操作系统学习笔记_8_内存管理 --虚拟内存管理

td p { margin-bottom: 0cm; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-botto

计算机操作系统学习笔记_12_I/O管理 --I/O管理概述

h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }h2.western { fon

计算机操作系统学习笔记_11_文件管理 --磁盘组织与管理

h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { fon

计算机操作系统学习笔记_13_I/O管理 --I/O核心子系统

h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }h2.western { fon

计算机操作系统学习笔记_5_进程管理 -- 同步与互斥

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { fon

计算机操作系统学习笔记_6_进程管理 --死锁

一.死锁的概念 1.死锁的概念 系统中两个或两个以上的进程无限期地相互等待永远不会发生的条件,系统处于一种停滞状态,这种情况称为死锁. 2.死锁产生的原因 (1)进程推进顺序不当 (2)对互斥资源的分配不当[并不是资源不足,但是剩余资源不足是有可能产生死锁的]. 必须要指出的是,系统资源不足并不是产生死锁的原因,进程资源如果不足则进程就不会被创建,只有在资源部分分配以后,剩余的资源不能满足某些个进程的请求,造成进程集无法推进的现象才是死锁. 3.产生死锁的四个必要条件[必须满足四个条件,才有可能