1、第五章 存储管理 5.1存储管理概述 n存储管理是操作系统的重要组成部分,它负责计算机系统内存空间的管理。其目的是充分利用内存空间,为多道程序并发执行提供存储基础,并尽可能地方便用户使用。5.1.1存储管理的概念 n存储管理所研究的主要内容包括3个方面:n取(Fetch)n放(Placement)n替换(Replacement)5.1.2存储管理的功能 n内存的分配与回收 n地址转换 n内存信息的共享与保护 n内存扩充 5.2覆盖和交换技术 n覆盖和交换技术是在多道环境下用来扩充内存的两种方法。覆盖技术主要用在早期的操作系统中,而交换技术则在现在操作系统中仍具有较强的生命力。5.2.1覆盖技术
2、 n覆盖技术的基本思想是把程序划分为若干个功能上相对独立的程序段,按照程序的逻辑结构让那些不会同时执行的程序段共享同一块内存区。通常,这些程序段都被保存在外存中,当有关程序段的先头程序段已经执行结束后,再把后续程序段调入内存覆盖前面的程序段。这使得用户看来好像内存扩大了,从而达到了内存扩充的目的。5.2.2交换技术 n交换指先将内存某部分的程序或数据写入外存交换区,再从外存交换区中调入指定的程序或数据到内存中来。交换进程由换出和换入两个过程组成,其中换出过程把内存中的数据或程序换到外存交换区,而换入过程把外存交换区中的数据或程序换到内存分区中。交换技术大多用在小型机或微机系统中,这样的系统大部
3、分采用固定或者可变分区方式管理内存。5.3存储管理方案 n存储管理主要是讨论和解决多道作业之间共享主存的存储空间问题,如果没有有效的存储管理方式,不仅影响到服务器性能还可能造成整个系统的崩溃。5.3.1分区存储管理 n单分区存储管理 n多分区存储管理 固定分区存储管理 可变分区存储管理5.3.2分页存储管理 n基本思想n地址变换 n快表 n页的共享和保护 n多级页表 5.3.3分段式储管理 n基本思想n主存空间的分配和回收 n地址变换与存储保护n段的共享 n分段与分页的区别5.3.4段页式存储管理 n分页和分段存储管理方式都各有其优缺点,分页系统能有效地提高内存利用率,而分段系统能很好地满足用
4、户需要。段页式系统是分页和分段的结合,用户程序分成若干段,每个段划分成若干页,每段赋予一个段名。5.4虚拟存储器 n虚拟存储器(Virtual Memory)及其管理技术是现代操作系统的重要特征之一,它将外存资源与内存资源进行统一管理,解决了用较小容量的内存运行大容量软件的问题。本节讲述虚拟存储器的概念,并讨论虚拟存储器管理方法。5.4.1虚拟存储的概念 n程序局部性原理 n虚拟存储器 5.4.2请求分页存储管理 n请求分页系统是建立在基本分页系统的基础上,为了能支持虚拟存储器功能而增加了请求调页功能和页面置换功能。页表中除了有页号、物理块号两项外,还需要状态位、访问字段、修改位、外存地址等信
5、息。5.4.3请求分段式存储管理 n在请求分段存储管理系统中,作业运行之前,将当前需要的若干分段装入内存,便可启动作业运行。在作业运行中,若要访问的分段不在内存中,则通过调段功能将其调入,同时还可以通过置换功能将暂时不用的分段换出到外存。n段表中除了有段号、段长、段的基址三项外,还需要存取方式、访问字段、修改位、存在位、增补位、外存起始地址等信息。5.5Linux的存储管理 nLinux操作系统采用了请求式分页虚拟存储管理方法,系统为每个进程提供了4GB的虚拟内存空间,各个进程的虚拟内存彼此独立。5.5.1Linux存储器管理概述 nLinux的设计目标是支持绝大多数主流的CPU,而很多CPU
6、使用的是RISC体系结构,并没有分段机制(采用虚拟分页存储管理方法),所以内核只有在80 x86结构下才使用分段,:所有Linux进程仅仅使用四种段来对指令和数据寻址。运行在用户态的进程使用用户代码段和用户数据段。5.5.2Linux的分页管理机制 nLinux的三级分页结构 5.5.3Linux物理内存空间的管理 nzone的概念 n物理内存的内核映射n物理内存的页面管理 n物理内存的分配与回收 5.5.4内核态内存的申请与释放 n申请内存 n释放 5.5.5用户态内存的申请与释放 nLinux用kmalloc()函数和kfree()函数提供内核内存申请、释放的接口,它还实现另一种虚拟空间的申请、释放界面,就是vmalloc()和vfree()。5.5.6存储管理系统的缓冲机制 nSwap cache nPage Cache 5.6Linux系统地址映射实例 nLinux 内核采用页式存储管理。虚拟地址空间划分成固定大小的“页面”,由 MMU 在运行时将虚拟地址“映射”成某个物理内存中的地址。本章小结 n存储管理是操作系统的重要组成部分,正在运行的程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理的效果直接影响到系统性能。本章详细介绍了存储管理的概念、功能,内存的分配、回收、扩充,存储管理的不同方案及Linux存储管理等内容。