4.1中国民航大学计算机学院杨志娴计算机操作系统第四章存储器管理4.1存储器的层次结构4.2程序的装入和链接4.3连续分配方式4.4基本分页存储管理方式4.5基本分段存储管理方式4.6虚拟存储器的基本概念4.7请求分页存储管理方式4.8页面置换算法4.9请求分段存储管理方式4.2中国民航大学计算机学院杨志娴计算机操作系统4.1存储器的层次结构4.3中国民航大学计算机学院杨志娴计算机操作系统存储器概念存储器(storage,memory)。分成两类:内存储器外存储器简称内存、主存,处理机能直接访问的存储器。用来存放系统和用户的程序和数据,其特点是存取速度快,存储方式是以新换旧,断电信息丢失。简称外存、辅助存储器,处理机不能直接访问的存储器。用来存放用户的各种信息,存取速度相对内存而言要慢得多,但它可用来长期保存用户信息。在文件系统中介绍。4.4中国民航大学计算机学院杨志娴计算机操作系统存储器管理的对象存储管理(memorymanagement),即对存储器的管理。内存和外存两者物理特性不同,操作系统对它们的管理方式也不同。本章介绍的是对内存的管理,对外存的管理将在文件管理中介绍。内存又分为ROM和RAM,ROM为固化只读的。因此操作系统的存储管理模块管理的是内存中的RAM。内存可以看作是以字或字节为单位的存储单元组成的数组,每个存储单元都有自己的地址。内存的作用:存储指令和数据。程序执行时,先加载到内存。CPU执行时,从内存取指令,分析指令,如需要则从内存取操作数。执行完毕后,存储运算结果到内存。4.5中国民航大学计算机学院杨志娴计算机操作系统存储器管理的功能内存分配和回收:为每个进程分配内存空间,并在它们不需要时回收其占据的空间。方式:–静态分配:作业运行前一次性完成–动态分配:作业运行前和运行中逐步完成内存保护:为防止内存中程序相互干扰,要设置地址空间访问权限(读、写、执行)和越界检查机制。地址映射:将地址空间中的逻辑地址转化为内存空间中与之对应的物理地址。内存扩充(逻辑扩充):即在不改变实际内存容量情况下,借助大容量外存解决内存不足问题。4.6中国民航大学计算机学院杨志娴计算机操作系统第四章存储器管理4.1存储器的层次结构4.2程序的装入和链接4.3连续分配方式4.4基本分页存储管理方式4.5基本分段存储管理方式4.6虚拟存储器的基本概念4.7请求分页存储管理方式4.8页面置换算法4.9请求分段存储管理方式4.7中国民航大学计算机学院杨志娴计算机操作系统将一个用户源程序变为一个可在内存中执行的程序,通常要经过以下几步:(1)编译由编译程序(Complier)将用户源代码编译成若干个目标模块(ObjectModule);(2)链接由链接程序(Linker)将编译后形成的目标模块以及它们所需要的库函数,链接在一起,形成一个装入模块(LoadModule);(3)装入由装入程序(Loader)将装入模块装入内存。4.2程序的装入和链接4.8中国民航大学计算机学院杨志娴计算机操作系统程序执行示例1#includestdio.h23intmain()4{5printf(hello,world\n);6}Figure1.1:Thehelloprogram.4.9中国民航大学计算机学院杨志娴计算机操作系统程序执行示例(续)#includespstdio.3510511099108117100101326011511610010511146h\n\nintspmain()\n{1046210101051101163210997105110404110123\nspspspspprintf(hel10323232321121141051101161024034104101108lo,spworld\n);\n}10811144321191111141081009211034415910125Figure1.2:TheASCIItextrepresentationofhello.c.4.10中国民航大学计算机学院杨志娴计算机操作系统程序执行示例(续)4.11中国民航大学计算机学院杨志娴计算机操作系统程序执行示例(续)4.12中国民航大学计算机学院杨志娴计算机操作系统程序执行示例(续)4.13中国民航大学计算机学院杨志娴计算机操作系统程序执行示例(续)4.14中国民航大学计算机学院杨志娴计算机操作系统程序执行示例(续)4.15中国民航大学计算机学院杨志娴计算机操作系统4.2程序的装入和链接图4-1对用户程序的处理步骤库链接程序装入模块装入程序编译程序产生的目标模块第一步第二步第三步内存…4.16中国民航大学计算机学院杨志娴计算机操作系统4.2.1程序的装入4.2程序的装入和链接1.绝对装入方式(absoluteloadingMode)在可执行文件中指定内存地址,装入时直接定位在上述(即文件中记录的地址)内存地址。逻辑地址和物理地址完全相同。•优点:装入过程简单,实现容易。•缺点:过于依赖于硬件结构,不适于多道程序系统。4.17中国民航大学计算机学院杨志娴计算机操作系统4.2程序的装入和链接2.可重定位装入方式(relocationloadingMode)编译程序所生成的目标模块中采用逻辑地址,根据当前内存情况,将装入模块装入到适当位置。地址映射是在装入模块装入内存时一次性进行的,即采用静态重定位。4.18中国民航大学计算机学院杨志娴计算机操作系统LOADl,25003650100025005000作业地址空间LOADl,250036510000110001250015000内存空间图作业装入内存时的情况–将装入模块装入内存后,会使装入模块中逻辑地址与实际装入内存的物理地址不同!4.2程序的装入和链接4.19中国民航大学计算机学院杨志娴计算机操作系统把装入时对目标程序中指令和数据的修改过程称为重定位地址变换在装入时一次完成,以后不再改变,称为静态重定位4.2程序的装入和链接2.可重定位装入方式(relocationloadingMode)4.20中国民航大学计算机学院杨志娴计算机操作系统–静态重定位:当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换(一般在装入内存时由软件完成)。–不允许程序运行时在内存中移动。优点:不需硬件支持,可以装入有限多道程序。缺点:一个程序通常需要占用连续的内存空间,程序装入内存后不能移动。不易实现共享。4.2程序的装入和链接2.可重定位装入方式(relocationloadingMode)4.21中国民航大学计算机学院杨志娴计算机操作系统3.动态运行时装入方式(dynamicrun-timeloading)在运行过程中,程序在内存中的位置可能经常要改变!将装入模块原样装入内存,而地址映射工作推迟到程序真正执行时才进行,即采用动态重定位。4.2程序的装入和链接4.22中国民航大学计算机学院杨志娴计算机操作系统动态重定位:地址变换过程是在程序执行期间,随着对每条指令和数据的访问而自动进行的。须获得硬件地址变换机构的支持。允许程序在运行期间在内存中移动。4.2程序的装入和链接3.动态运行时装入方式(dynamicrun-timeloading)4.23中国民航大学计算机学院杨志娴计算机操作系统优点:–OS可以将一个程序分散存放于不连续的内存空间,可以移动程序,有利用实现共享。–能够支持程序执行中产生的地址引用,如指针变量(而不仅是生成可执行文件时的地址引用)。缺点:需要硬件支持,OS实现较复杂。4.2程序的装入和链接3.动态运行时装入方式(dynamicrun-timeloading)4.24中国民航大学计算机学院杨志娴计算机操作系统程序JUMPiiLOADjDATAj程序JUMP1424LOAD2224DATA102414242224程序JUMP400LOAD1200DATA04001200绝对地址相对地址(a)(b)(c)符号地址图绝对和可重定位装入模块(a)目标模块;(b)绝对装入模块;(c)相对装入模块4.2程序的装入和链接3.动态运行时装入方式(dynamicrun-timeloading)4.25中国民航大学计算机学院杨志娴计算机操作系统4.2.2程序的链接图4-3程序链接示意图4.2程序的装入和链接链接程序的功能是将经过编译或汇编后得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。实现链接的方式有三种:1.静态链接2.动态链接(装入时)3.动态链接(运行时)4.26中国民航大学计算机学院杨志娴计算机操作系统1.静态链接方式(StaticLinking)4.2程序的装入和链接模块A0L—1CALLB;return模块B0M—1CALLC;return模块C0N—1return模块A0L—1JSR“L”return模块BLL+M—1JSR“L+M”return模块CL+M+ML+M+N—1return(a)(b)图4-3程序链接示意图(a)目标模块;(b)装入模块链接时,把各目标模块的相对地址修改为统一的以0为始址的线性地址或多维地址空间,外部调用变为相对地址,如图所示。4.27中国民航大学计算机学院杨志娴计算机操作系统静态链接是在生成可执行文件时进行的。在目标模块中记录符号地址(symbolicaddress),而在可执行文件中改写为指令直接使用的数字地址。1.静态链接方式(StaticLinking)4.2程序的装入和链接4.28中国民航大学计算机学院杨志娴计算机操作系统程序由多个文件(模块)组成,在装入或运行时临时进行链接。通常被链接的共享代码称为动态链接库(DLL,Dynamic-LinkLibrary)或共享库(sharedlibrary)。根据链接发生时机的不同,又分为了装入时链接(Load-timeDynamicLinking)和运行时动态链接(Run-timeDynamicLinking)。由于运行时动态链接具有更高的灵活和有效性,所以成为目前流行的方式。动态链接4.2程序的装入和链接4.29中国民航大学计算机学院杨志娴计算机操作系统2.装入时动态链接(LoadtimeDynamicLinking)4.2.2程序的链接4.2程序的装入和链接•目标模块是在装入内存时,边装入边链接的。•装入时动态链接方式有以下优点:1、便于修改和更新。2、便于实现对目标模块的共享。4.30中国民航大学计算机学院杨志娴计算机操作系统3.运行时动态链接(Run-timeDynamicLinking)•将对某些模块的链接推迟到执行时才执行,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。•凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。4.2程序的装入和链接4.31中国民航大学计算机学院杨志娴计算机操作系统第四章存储器管理4.1存储器的层次结构4.2程序的装入和链接4.3连续分配方式4.4基本分页存储管理方式4.5基本分段存储管理方式4.6虚拟存储器的基本概念4.7请求分页存储管理方式4.8页面置换算法4.9请求分段存储管理方式4.32中国民航大学计算机学院杨志娴计算机操作系统4.3连续分配方式单一连续分配固定分区动态分区分配动态重定位分区分配连续分配是指为一个用户程序分配空间的时候,将所有程序装入到一段连续的物理内存中。在早期(20世纪60-70年代)的操作系统中,这种分配内存的方式曾经被广泛的使用。连续分配有以下四种方式:4.33中国民航大学计算机学院杨志娴计算机操作系统4.3连续分配方式4.3.1单一连续分配这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。内存分为以下两个分区:系统区和用户区。操作系统使用系统区;应用程序装入到用户区,可使用用户区全部空间4.34中国民航大学计算机学院杨志娴计算机操