网站大量收购独家精品文档,联系QQ:2885784924

《Linux操作系统原理与应用》课件_第5章.pptx

《Linux操作系统原理与应用》课件_第5章.pptx

  1. 1、本文档共93页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第5章 存储管理;

5.1 存储管理概述;

存储分配方案主要包括以下要素:

(1)存储空间的描述结构:系统需采用某种数据结构来登记当前内存使用情况以及空闲区的分布情况,供存储分配时使用。

(2)存储分配的策略:系统需确定内存分配和回收的算法。;

5.1.2 存储地址的变换

程序代码中使用的地址是逻辑地址。而当程序进入内存后,必须把程序中的逻辑地址转换为程序所在的实际内存地址。这一转换过程称为存储地址的变换,或称为地址映射。存储地址的变换是由内存管理模块与硬件的地址变换机构共同完成的。;

1. 地址的概念

1)符号地址

在用高级语言编写的源程序中,编程者使用符号名来表示操作对象或控制转移的地址。

例5.1以下是一个C源程序的片段,其中包含了几个符号地址。;

2)逻辑地址

编译程序将源代码中的语句逐条翻译为机器指令,为每个变量分配存储单元,并用存储单元的地址替换变量名。编译生成的指令和数据顺序存放在一起,从0开始编排地址,形成目标代码。目标代码所占有的地址范围称为逻辑地址空间,范围是0~n-1,n为目标代码的长度。逻辑地址空间中的地址称为逻辑地址,或相对地址。指令中引用的操作数地址或跳转地址都是逻辑地址。;

例5.2对例5.1的源程序进行编译,生成的目标代码的反汇编结果如下:;

3)物理地址

物理内存由一系列的内存单元组成,这些存储单元从0开始按字节编址,称为内存地址。当目标程序加载到内存中时,它所占据的实际内存空间就是它的物理存储空间,物理空间中的地址称为物理地址,或称为绝对地址、实际地址。

序加载时所获得的实际地址空间取决于系统当时的运行状态,因而是不确定的。假设程序分配到一段连续的内存空间,此空间的起始地址就是它的基址,则程序中所有的逻辑地址加上此基址得到的就是物理地址。图5-1是有关内存地址的示意图。;;

2. 地址变换

用户编程时使用的是逻辑地址,而CPU执行指令时使用的是物理地址,因此必须在指令执行前进行地??变换,将指令中的逻辑地址转换为CPU可直接寻址的物理地址,这样才能保证CPU访问到正确的存储单元。;

例5.3对例5.2的目标代码进行地址变换。;

地址变换的方式有两种:

(1)静态地址变换:程序在装入内存前一次性完成地址转换。装入内存后的程序代码中全部是物理地址,如例5.3所示,因而可以直接执行。

(2)动态地址变换:程序在装入内存时不进行地址变换,而是保持指令中的逻辑地址不变。在程序执行过程中,每执行一条指令时,如果指令中用到了逻辑地址,硬件地址变换机构就会自动进行地址转换,将其变换为实际地址。;

5.1.3 内存的保护

内存保护的含义是要确保每个进程都在自己的地址空间中运行,互不干扰,尤其是不允许用户进程访问操作系统的存储区域。对于允许多个进程共享的内存区域,每个进程也只能按自己的权限(只读、读写或执行)进行访问,不允许超越权限进行访问。;

常用的存储保护措施有:

(1)界限保护:在CPU中设置界限寄存器,限制进程的活动空间。

(2)保护键:为共享内存区设置一个读写保护键,在CPU中设置保护键开关,表示进程的读写权限。

(3)保护模式:将CPU的工作模式分为用户态与核心态。;

5.1.4 内存的扩充

尽管内存容量不断提高,但相比应用规模的增长来说,内存总是不够的。

早期系统的内存扩充主要采用覆盖(overlay)技术,方法是将程序划分为几个模块,主要模块常驻内存,其余模块驻留在外存,通过交替覆盖来共享一个或几个存储空间。这种覆盖是由用户(即编程者)有意识地进行的。

现代系统采用虚拟存储(virtualmemory)技术来扩充内存。;

5.2 存储管理方案;

1. 段的概念

在段式存储系统中,程序的地址空间由若干个大小不等的段组成。段(segment)是逻辑上完整的信息单位,由编程者划分。划分段的依据是信息的逻辑完整性以及共享和保护等需要。

分段程序中的各段从0开始编号,称为段号。段内从0开始编址,称为段内地址。因此,分段程序的逻辑地址空间是一个二维空间,其逻辑地址由段号和段内位移两部分组成。;

2. 段式分配思想

段式分配策略是以段为单位分配内存,每个段分配一个连续的分区。段与段间可以不相邻接,用段表描述进程的各段在内存中的存储位置。段表中包括了段长和段起始地址等信息。图5-2描述了段式存储的分配方式和段表的结构。;;

3. 段的分配与释放

段式分配的方法是:系统用表格记录已分配分区和空闲分区的分布和使用情况。

4. 段式地址变换

段式系统通过段表进行动态地址变换。

当CPU执行到一条访问内存的指令时,指令中的逻辑地址被装入逻辑地址寄存器,分段机

文档评论(0)

酱酱 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档