- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统复习大纲-3-4-5章
第三章存储器管理
3.1 内存管理基础
3.2 虚拟内存管理
3.1 内存管理基础
3.1.1 内存管理概念
1.存储管理的功能:
A)内存空间的分配与回收,包括内存的分配和共享
B)地址转换
C)内存空间的扩充:用外存的一部分充做内存的作用。
D)存储保护:程序之间不能有干扰和越界。
2.程序的装入:
在多道程序环境下,为避免用户使用高级语言编程时涉及底层硬件的细节问题,通常内
存是由操作系统统一分配,因而在编程序时不可能使用物理地址。这样,当程序装入内存 运
行时必须把程序中的逻辑地址变成实际的物理地址才能正确执行。程序的装入需要地址重定
位。
地址重定位分为静态重定位和动态重定位两类。
把程序在装入过程中随即进行的地址变换方式,称为静态重定位。
在程序执行过程中,当访问内存单元时才进行的地址变换方式,称为动态重定位。
A)静态重定位:静态重定位是在程序运行之前由装配程序完成的。当操作系统为目标程
序分配了一个以 B 为起始地址的存储空间后,重定位过程就是把每个与地址有关的项都加上
B 即可。
这种重定位之所以称为静态重定位,是因为地址变换是在作业执行前集中一次完成的。
优点:程序运行前一次完成,无须增加硬件地址变换机构,因而可在一般计算机上实现。
缺点:不方便,程序在运行过程中不能移动。
B)动态重定位:动态重定位是在程序执行过程中由硬件地址变换机构实现的。最简单的
办法是利用一个重定位寄存器。将逻辑地址与重定位寄存器中的内容相加后得到的地址作为
访问内存的地址。
优点:用户程序不要求分配连续的存储空间;用户程序在执行过程中,可以动态申 请存
储空间和在内存中移动;有利于程序段的共享。
缺点:需要附加的硬件支持;实现存储管理的软件算法比较复杂。
3.逻辑地址空间:
在多道程序环境下,各个程序由用户独立编程、独立编译,装入系统的时间也不同。 因
而,在各程序装入系统之前不可能很好地协调存储分配问题。
为了保证程序的独立性,用户在编程或编辑源程序时,不考虑程序之间的存储空间分配,
而是将其源程序存于程序员建立的符号名字空间(简称名空间)内。
当对源程序进行编译时,把语言的符号元素转换成由计算机的指令和数据串组成的目标
程序,并用地址代码替换符号地址。
编译后一个目标程序所限定的地址范围称为该程序的逻辑地址空间。逻辑地址空间仅仅
是指程序用来访问信息所用的一系列地址单元的集合。
通常,编译程序在对一个源程序进行编译时总是从零号单元开始为其分配地址,地址空
间中的所有地址都是相对起始地址 “0”的,因而也称逻辑地址为相对地址。
4.物理地址空间:
物理地址空间(也称存储空间)是指内存中物理单元的集合。这些单元的编号称为物 理
地址或绝对地址。因此,物理地址空间的大小,是由内存的实际容量决定的。
程序的地址空间是逻辑地址的集合;存储空间是物理地址的集合。一个是 “虚”的概念,
一个是 “实”的物体。一个编译后的目标程序存在于它自己的地址空间中,当运行时, 才把
它装入存储空间。
5.内存保护:
多道程序在内存中同时运行,因此必须解决存储器保护问题。
A)界地址保护:界地址保护又称为界限寄存器保护。它分为界限寄存器方式和基址、 限
止寄存器方式两种保护方式。
界限寄存器方式:下界寄存器存放进程分区的起始地址,上界寄存器存放下一分区的起
始地址。每次寻址和访问时,先与这两个寄存器的内容进行比较,以实现对分区的保护。
基址寄存器和限长寄存器:基址寄存器存放进程分区的起始地址,限长寄存器存放作业
的最大偏移量(长度)。在进程运行过程中,在访问存储器时所计算出的存储地址如果超过限
长,则发出越界中断信号。
3.1.2 连续分配管理方式
1.固定式和可变式分区存储管理:
A)固定式分区存储管理:将存储空间划分为若干个一样大小或任意大小的空间;每 个空
间分配给某一个进程使用。也称为静态分区。采用这种技术,虽然可以使多个进程共享内存,
但仍不能充分利用内存。因为分区的大小不是根据每个进程的大小划分的。一个进程的大小,
不可能刚好等于某个分区的大小,所以,在每个分配的分区中,通常都有一部分未被进程占
用而浪费掉。这种分配给用户而未被利用的部分(各分区中的空闲部分),称作存
文档评论(0)