内存管理课件_第1页
内存管理课件_第2页
内存管理课件_第3页
内存管理课件_第4页
内存管理课件_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章

内存管理

存储的层次结构

•第3章内存管理

•3.1内存介绍

•3.1.1内存管理

•1.存储的层次结构

高速缓存

•2.高速缓存

•目前存储的技术是设置CPU的三级缓存:

•(1)L1Cache(一级缓存)是CPU第一层高速缓存,分为

数据缓存和指令缓存。内置的L1高速缓存的容量和结构对

CPU的性能影响较大,不过高速缓冲存储器均由静态

RAM组成,结构较复杂,在CPU管芯面积不能太大的情

况下,L1级高速缓存的容量不可能做得太大。一般服务器

CPU的L1缓存的容量通常在32KB〜256KB。

高速缓存

(2)L2Cache(二级缓存)是CPU的第二层高速缓存,分

内部和外部两种芯片。内部的芯片二级缓存运行速度与

CPU主频相同,而外部的二级缓存则只有CPU主频的一半。

L2高速缓存容量也会影响CPU的性能,原则是越大越好,

现在家庭用CPU容量最大的是512KB,而服务器和工作站

上用CPU的L2高速缓存为1MB,有的高达2MB或者4MB。

(3)L3Cache(三级缓存),分为两种,早期的是外置,

现在的都是内置的。而它的实际作用是可以进一步降低内

存延迟,同时提升大数据量计算时CPU的性能。降低内存

延迟和提升大数据量计算能力对游戏有很大帮助,在服务

器领域增加L3缓存对性能有显著的提升。比如具有较大L3

缓存的配置利用物理内存会更有效,故它比较慢的磁盘

I/O子系统可以处理更多的数据请求。

高速缓存与内存速度的对比

LavalysEVERESTCache&MemoryBenchmarlc

ReadVAteCcpylatency

1I5329MB"i

Memory6402MB/g-17件II7,7n$;

I:Cache29751MB/S296S9母59s87MB衿||1.6nsj

_______________

12Cache13637MB衿1[10357蟀[|叫I|6Jns|

13Cache―1_______________II_______________II______I

CPUTypeOualCoreIntelCore2DuoE6330(.Conroe,LGA77S)

CPUClock18682MhU(origal:1866W?)____________________________

bUF5B266.9MHz(original:266MHz)________________________________________

CPUMult氏r|兀6|CPUSteppng阳I

Memory0u$400.3MHr»AM:FS8RatioI⑵aI

MemoryType|DudChanneMDR2«0SO*(呆$$4852)__________________________

ChpsetIntelBroadwaterP%S

MotherboardlAsusPa__________________________________________

EVERESTv^.10.1082Beta/BenchDU22.186.0(c)2003^2007Lavalys,Inc.

内存空间的分配和回收

•3.内存管理的主要功能

•(1)内存空间的分配和回收

•操作系统中的内存管理能根据所记录的存储区状态作为内

存分配的依据。当用户提出申请时,实施存储空间的分配

管理,并能及时回收系统或用户释放的存储区,以供其它

用户使用。为此,这种存储分配机制应能完成如下工作:

・记住存储区域的状态,哪些是已经分配的,哪些是未分配

的。保存存储区域的状态的数据结构称为内存分配记录表。

■实施分配。在系统程序或用户提出申请时,按所需的量给

予分配,并修改相应的内存分配记录表。

■接收系统或用户释放的存储区域,并相应地修改内存分配

♦录表。

地址转换

•(2)地址转换

•程序设计人员在进行程序设计中,访问信息时所用到的一

系列地址单元的集合称为逻辑地址,而存储空间是内存中

物理地址的集合。在多道程序环境下,程序不是事先约定

存放位置,而是在执行过程中可以动态浮动,故程序的逻

辑地址和物理地址是不一致的,因此需要内存管理机制提

供地址映射转换功能,把程序地址空间中的逻辑地址转换

为内存空间中对应的物理地址。

内存的共享和存储保护

•(3)内存的共享和存储保护

•由于内存区域为多个用户程序共同使用,所以存储共享有

两方面的含义:

•多个用户程序共同使用内存空间,各个程序使用各自不同

的存储区域;

■多个用户程序共同使用内存中的某些程序和数据区,这些

共享程序和数据区称为共享区。

•因此内存管理必须研究如何保护各存储区中的信息不被破

坏和偷窃,同时当多个程序共享一个存储区时,也要对共

享区进行保护,确保信息的完整性和一致性。

内存空间的扩充

•(4)内存空间的扩充

•计算机在实际的应用中,常常出现内存容量大小无法满足

大程序的要求。同时,内存容量受到实际存储单元的限制。

因而,内存管理机制必须提供相应的技术,来达到内存单

元逻辑上的扩充。现在采用的一般是覆盖技术、交换技术

和虚拟存储技术。

程序名空间

312相关概念

•1.程序名空间

­源程序中的各种符号名的集合所限定的空间称为程序名空

间。如源程序中的数据和子程序通常是用符号名进行访问

的,这些符号名与存储器地址无任何直接关系。

在程序名空间中提到地址时,都是用符号来代替的,比如

Basic中的行号或Goto语句后面的标识符。程序名空间中

的地址概念只限于编辑器中,方便用户对程序的逻辑设计。

如图3-3a所示,主程序和各个子程序都有各自不同的起始

地址标识,变量也有自己的地址标识。

三种空间

0

tiincl

Maimxxxxxxxxxx

{Main

funcl():xxxxxxxx

inta=l;Main

n-lftinc2():xxxxxxxx

}

ibnc3():xxxxxxxx

fiinc?

0

{

intb-l;fund

fund

]ml-1

fiinc3

]fiinc2

0

intc-l;

}func2

Main()

m2-l

]

inti=tuncl():func3

0

intj-func2():

intIc=func3();func3

1m3-l

(a)程序名空间(b)地址空间(c)存储空间

地址空间与存储空间

•2.地址空间(AddressSpace)

•经编译后,源程序中的各种符号名转换成机器指令和数据

组成的目标程序,且用实际地址码替换符号地址。把目标

代码所限定的地址域叫该程序的地址空间。这些程序的地

址都臬从“0”开始的,程序中的其它地址都是相对于起始

地址“0”来计算的。地址空间中的地址叫做相对地址(或

逻辑地址,又叫虚地址)。

•3.存储空间(MemorySpace)

•存储空间是指物理存储器中全部物理存储单元的集合所限

定的空间,也称为内存空间。每个存储单元都有它自己的

编号地拉。该地虻被称为缩对地拉,或物理同虬,或实他

址。存储空间的大小由系统的硬件配置决定的,即计算机

中内存容量的大小。

直接存储分配方式

•4.存储分配的几种形式

•解决存储分配问题有三种方式:

•(1)直接存储分配方式

•编程人员在程序设计过程中,或汇编程序对源程序进行编

译时,所用的是实际物理地址,以确保各程序所用的地址

之间互不重叠。

­很显然,直接存储分配方式要求内存的可用空间已经确定,

这对于单用户计算机系统来说是不成问题的。在多道程序

设计发展初期,通常将存储空间划分成若干个固定的不同

大小的分区,并对不同的作业指定不同的分区。对于程序

设计人员或编译系统而言,内存的可用空间是已知的。这

样,不仅用户感到不方便,而且内存的利用率也不高。

静态存储分配方式

•(2)静态存储分配方式

•采用静态存储分配方式时,用户在编写程序或由编译系统

产生的目标程序中采用的地址空间为逻辑地址。当连接程

序对它们进行装入、连接时,才确定它们在内存中的物理

位置,从而产生可执行程序。这种分配方式要求用户在进

行装入、连接时,系统必须分配其要求的全部内存空间,

若内存空间不够,则不能装入该用户程序。同时,用户程

序一旦装入到内存后,它将一直占据着分配给它的内存空

间,直到程序结束时才释放该空间。其次,在整个运行过

程中,用户程序所占据的内存空间是固定不变的,也不能

动态地申请内存空间。

•显然,这种分配方式不仅不能实现用户对内存空间的动态

扩展,而且也不能有效地实现内存资源的共享。

动态存储分配方式

•(3)动态存储分配方式

•动态存储分配方式是一种能有效使用内存的方法。用户程

序在内存空间中的位置也是在装入时确定的,但是它不必

一次性将整个程序装入到内存中,可根据执行的需要,一

部分一部分地动态装入。同时,装入内存的程序不执行时,

系统可以收回该程序所占据的内存空间。再者,用户程序

装入内存后的位置,在运行期间可根据系统需要而发生改

变。止匕外,用户程序在运行期间也可动态地申请内存空间

以满足程序需求。动态存储分配通常可采用覆盖与交换技

术实现。

•由此可见,动态存储分配方式在内存空间的分配和释放上,

表现得十分灵活,现代的操作系统常采用这种存储分配方

畀。

地址重定位(AddressRelocation)

•5.地址重定位(AddressRelocation)

•在一般情况下,用户的一个程序在装入时所分配的存储空

间和它的地址空间是不一致的,因此,用户程序在CPU上

执行时,其所要访问的指令和数据的物理地址和地址空间

中的相对地址是不同的,如图3.3b&c所示。显然,如果用

户程序在装入或执行时,不对有关地址进行修改,则将会

导致错误的结果,这种由于用户程序的装入而引起的地址

空间中的相对地址转化为存储空间中的绝对地址的地址变

换过程,称为地址重定位,也称地址映射或地址变换。

静态重定位

(1)静态重定位

0

01000

I00Movri.(50()]1100Movri,[1500]

50012345150012345

5991600

(a)程序地址空间

256K-I

(b)内存空间

动态重定位

(2)动态重定位

(b)存储空间

内存共享及保护

•6.内存共享及保护

•在多道程序设计的环境下,系统中有系统程序和多个用户

程序同时存在,用户程序间可以共享内存中的信息,但要

保证用户程序不破坏系统程序,用户程序之间不相互干扰,

这就是存储保护所要解决的问题。

•存储保护的目的有两个:

■保护系统程序区不被用户侵犯(有意或无意的)。如果一

个菜鸟级的程序员,他的程序可以改变操作系统所在的内

存区域内容,那这个系统还有谁敢用?

•不允许用户程序读写不属于自己内存空间的数据。正迎合

了宋代陈元靓《事林广记•警世格言》的那句名言:“自

家扫取门前雪,莫管他人屋上霜。”

上下界寄存器保护

•(1)界限保护

•上下界寄存器保护

基址、限长寄存器保护

•基址、限长寄存器保护

•【例】有一程序装入内存的首地址是500,末地址是1500,

访问内存的逻辑地址是500、345、1200o

•基址寄存器:500

•限长寄存器:1000

•判别式:逻辑地址邹艮长寄存器

•①500W1000N

•②345W1000N

■③1200W1000X

•这里只判断地址的合法性,如果要计算物理地址,还需要

加上基址寄存器的值。

访问方式保护

(2)访问方式保护

(3)内存共享

廿正确访问

LOAD12500出错,开关字■键不匹配

单道系统的内存管理

•3.2单道系统的内存管理

OxFITIT

操作系统设备驱动

用户程序

用户程序

用户程序

操作系统操作系统

0x000()0

⑻操作系统3用低地址区(b)操作系统J用高地址区⑹操作系统分别3用两端

单道系统的内存管理

固定分区管理

•3.3多道系统的分区管理

•3.3.1固定分区管理

•固定分区是指系统在初始化时,将内存空间划分为若干个

固定大小的区域1.分区原则

•(1)分区大小可以不相等

•分区大小相等:适合于多个相同程序的并发执行,如图3-

10a所示;

•分区大小不等:多个小分区、适量的中等分区、少量的大

分区。根据程序的大小,分配当前空闲的、适当大小的分

区。如图3-10b所示。

•(2)分区个数不变,大小不变

固定分区管理

(a)人小相同(b)大小不同

的固定分区的固定分区

固定分区管理

0

操作系统

20K\

进程A(6K)

区号分配长废起始地址状态

第一分M

!8K20KU分配

28K

a232K28K已分配k

进程B(25K)

364K60K已分配第二分区

4132KI24K未分配/

60K

进程B(36K)

(a)分IX状态表第三分区

124K(

第四分区

256K

(b)内存状态

分区的分配与回收

・3.分区的分配与回收

(a)多作业队列(b)单作业队列

固定分区分配算法

分区原则

3.3.2动态分区管理

•1,分区原则

初启

方式

系统

操作

统中

用动

空闲

配程

的大

,3-14O

•(D根据作业的大小动态地划分分区,使分区的大小正

好等于作业大小;

•(2)各分区的大小是不定的;

•(3)内存中分区的数目也是不定的。

•显然,这种分配方式不会产生“内碎片”现象,从而大大

理画工内存的利用李,但随着频繁的调入调出,系统会产

生大量的"外碎片"。

动态分区存储分配

IM

140k

20k

0

分区说明表

•2.分区管理

•(1)分区说明表

始址长度占用林忐始址长度占用林志

20K80KPd160K10K仃效

100K60KPc270K730K行效

170K100KPc

(a)已分配区收(b)未分配区及

带有表格信息的分区格式

(2)空闲区链表

状态位分区大小(N+2)前向指针

大小为N的已分配区或空闲区

状态位分区大小(N+2)后向指针

空闲区双向链表

160k270k

位图

(3)位图

H293X

分区的分配与回收

•3.分区的分配与回收

•通常,分区的回收有四种情况:

•(1)释放区与上下两个空闲区相邻

•在这种情况下,将三个空闲区合并为一个空闲区。新空闲

区起始地址为上空闲区的起始地址,大小为三个空闲区之

和。同时,修改可用分区表或空闲区链表或位图中的表项

目。

•(2)释放区与上空闲区相邻

•在这种情况下,将释放区与上空闲区合并为一个空闲区,

其起始地址为上空闲区的起始地址,大小为释放区和上空

闲区之和。同时,修改可用分区表或空闲区链表或位图中

的表项目。

分区的分配与回收

•(3)释放区与下空闲区相邻

•在这种情况下,将释放区与下空闲区合并为一个空闲区,

其起始地址为释放区的起始地址,大小为释放区和下空闲

区之和。同时,修改可用分区表或空闲区链表或位图中的

表项目。

(4)释放区与上下两个空闲区都不相邻

查找算法

•3.3.3查找算法

-不论是空闲区链表管理还是空闲区表格管理,链和表

中的空闲区都可按一定规则排列,例如,按空闲区从

大到小排或从小到大排,以方便空闲区的查找和回收。

常用的动态分区管理的空闲区查找算法有五种:

1.最佳匹配(bestfit)

2.首次匹配(firstfit)

3.下次匹配(nextfit)

4.最坏匹配(worstfit)

5,快速匹配(quickfit)

地址转换与存储保护

•3.3.4可重定位分区分配

•1,地址转换与存储保护

内仃

移动技术

-2.移动技术

操作系统

进程5-8OK

进程"KB

进程3-24K

进程2-20K

进程4-50K

进程5-80K

(a)初始状态(b)移动之后⑹分配进程5之后

可重定位分区分配的优缺点

•3.可重定位分区分配的优缺点

,(1)优点

•可以消除碎片,能够分配更多的分区,有助于多道程序设

计,提高内存的利用率。

•(2)缺点

•内存移动花费了大量CPU时间;当进程大于整个空闲区时,

仍要浪费一定的内存;进程的存储区内可能放有从未使用

的信息;进程之间无法对信息共享。

分区管理的优缺点

分区管理的优缺点

•1.主要优点

•(1)实现了多道程序共享内存;

•(2)实现分区管理的系统设计相对简单,不需要更多的

系统软硬件开销;

•(3)实现存储保护的手段也比较简单。

分区管理的优缺点

•2.王要缺点

•(D内存利用不够充分。系统中总有一部分内存空间得

不到利用,这部分被浪费的空间叫碎片。固定分区产生内

碎片,可变分区产生外碎片。

•(2)没有实现内存的扩充问题。当进程的地址空间大于

内存空间时,进程无法运行。也即进程的地址空间受实际

内存空间的限制。

•(3)必须连续存放。进程在内存中总是分配一块连续的

存储空间,无法很好地利用碎片,虽然可以通过移动技术

来整理内存空间,但代价较高。

•(4)必须一次性将作业全部调入内存,若内存没有足够

的空间,则等待。

页式管理

•3.4页式管理

•3.4.1页式管理的实现原理

操-11T

,Z•

框W

等1

是rm,

调M

总e)

efra豺

肥ag

wE二

系IO

地W1H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论