计算机操作系统第四章-存储器管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章存储器管理
第0节存储管理概述
一、存储器的层次结构
1、在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等多方面,同时满足用户的需求。实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。
2、各种存储器
•寄存器、高速缓存Cache:少量的、非常快速、昂贵、需要电源维持、CPU可直接访问;
•内存RAM:若干(千)兆字节、中等速度、中等价格、需要电源维持、CPU可直接访问;
•磁盘高速缓存:存在于主存中;
•磁盘:数千兆或数万兆字节、低速、价廉、不需要电源维持、CPU 不可直接访问;
由操作系统协调这些存储器的使用。
二、存储管理的目的
1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。(注意cpu和主存储器,这两类资源管理的区别)
2、存储管理的主要功能:
•地址重定位
•主存空间的分配与回收
•主存空间的保护和共享
•主存空间的扩充
三、逻辑地址与物理地址
1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。
●一个用户程序的所有逻辑地址组成这个程序的逻辑地址空间(也称地址空间)。这个空间是以0为基址、线性或多维编址的。
2、物理地址(绝对地址,实地址):是一个实际内存单元(字节)的地址。
●计算机内所有内存单元的物理地址组成系统的物理地址空间,它是从0开始的、是一维的;
●将用户程序被装进内存,一个程序所占有的所有内存单元的物理地址组成该程序的物理地址空间(也称存储空间)。
四、地址映射(变换、重定位)
当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把逻辑地址转换为对应的物理地址----地址映射;
地址映射分静态和动态两种方式。
1、静态地址重定位
是程序装入时集中一次进行的地址变换计算。
物理地址= 重定位的首地址+ 逻辑地址
•优点:简单,不需要硬件支持;
•缺点:一个作业必须占据连续的存储空间;装入内存的作业一般不再移动;不能实现虚拟存储。
2、动态地址重定位:
在程序执行的过程中,每当Cpu访问一个内存地址之前对要访问的地址进行地址变换计算。
•优点:一个作业可以使用非连续存储空间;能实现虚拟存储;有利于程序段的共享。
•缺点:需要硬件支持。
五、存储分配与回收
在程序运行开始时、运行过程中,OS根据一定的存储管理方法,在内存中为程序及其数据找到合适的位置,将它们装入内存;
程序运行结束后,OS收回程序释放的内存资源,并进行适当的整理,以便再分配给其他的程序使用。
六、存储保护
为多道并发程序共享内存提供保障,使在内存中的各道程序“各行其道”,只能访问属于自己的区域(自己的物理地址空间),避免各道程序间相互干扰,特别是当一道程序发生错误时,不致于影响其他程序的运行。通常由硬件完成保护功能,由软件辅助实现。
存储保护可以实现:
•保护系统程序区不被用户侵犯(有意或无意的);
•不允许用户程序读写不属于自己地址空间的数据(系统区地址空间、其他用户程序的地址空间)。
存储保护的过程:
每个进程都有自己独立的进程空间。如果一个进程在运行时所产生的要访问的地址在其地址空间之外,称为发生了地址越界。每当程
序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断,由操作系统进行相应处理。
七、存储共享
•内存共享:多道环境中,两个或多个并发进程共用内存中相同区域。•目的:节省内存空间,提高内存利用率,实现进程通信(数据共享)。•共享内容:
代码共享(要求代码为纯代码);
数据共享。
八、存储“扩充”
为了给大作业提供方便,由OS把内存和外存统一管理起来,实现自动覆盖。当一个大作业在执行时,有一部分逻辑地址空间的内容在内存,另一部分在外存。当要访问的信息不在内存时,由os(而不是程序员安排的I/O指令)自动把它们从外存调入内存。从效果上看,这样的os好象为这个用户作业提供了一个容量比实际内存大的存储器,从而实现了存储“扩充”。扩充后的存储器称为虚拟存储器。
九、存储管理方法
1、连续分配方式
(1) 单一连续存储区管理(单道环境下)
(2) 分区式存储管理
2、离散分配方式
(1) 分页式存储管理
(2) 分段式存储管理
(3) 段页式存储管理
3、实现虚拟存储的分配方式
主要是一些请求式的分配方式,如请求分页式存储管理、请求分段式存储管理等。
对于以上每一种存储管理方法我们应该掌握:
•基本原理(思想方法)
•存储管理使用的数据结构
•逻辑地址的格式
•地址变换的方式
•存储的分配和回收过程
•特点(优、缺点)
第一节程序的装入(和链接)
一、程序的装入
就是OS的装入程序(Loader)将用户程序的装入模块装入内存。
1、绝对装入方式
编译时产生绝对地址的目标代码。程序被装入内存后,逻辑地址与实际装入的内存地址完全相同,故执行过程中,不需对指令和数据进行地址变换。
程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。但在由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。
2、可重定位装入方式
编译时产生相对地址的目标代码。程序被装入内存时,进行地址变换,然后在访问时直接取指令和数据。
3、动态运行时装入方式
编译时产生相对地址的目标代码。程序被装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。当要对一条指令或一个数据进行访问时,才对它的地址进行转换。因此,装入内存后的所有地址都仍是相对地址。
第二节连续分配存储管理方式
一、单一连续分配
1、基本原理
把内存分为系统区和用户区两部分,系统区提供给OS使用(通常是内存的低址部分);用户区(指除系统区以外的全部内存空间)提供给