操作系统-第4章(1) (第四版)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四章存储器管理第四章存储器管理4.1存储器的层次结构4.2程序的装入和链接4.3连续分配存储管理方式4.4对换4.4分页存储管理方式4.5分段存储管理方式第四章存储器管理4.1存储器的层次结构一、多级存储器结构在现代计算机系统中,存储器是信息的来源与归宿,占据重要位置。但是,在现有技术条件下,任何一种存储装置,都无法同时从速度与容量两方面,满足用户的需求。实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU寄存器主存辅存图4-1计算机系统存储层次示意速度快慢小大容量OS管理设备管理第四章存储器管理二、各种存储器1.主存储器简称内存、主存、可执行存储器;主要部件,保存进程运行时的程序和数据,若干兆字节、中等速度、中等价格。主存储器的访问速度远低于CPU执行指令的速度,为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存。2.寄存器速度最快,价格昂贵,容量小。以字(word)为单位。寄存器用于加速存储器的访问速度,如:用寄存器存放操作数。3.高速缓存少量的、容量小(几十KB~几MB)、非常快速、昂贵。主存中常访问的信息存放在高速缓存中,减少访主次数。第四章存储器管理4.磁盘缓存目前磁盘的I/O速度远低于对主存的访问速度,将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。即利用主存中的存储空间,来暂存从磁盘中读出(或写入)的信息。掉电则丢失。文件硬盘存放内存调入磁盘缓冲备份磁带文件出现于不同的存储层次中第四章存储器管理三、存储管理的目的1)主存的分配和管理当用户需要内存时,系统为之分配相应的存储空间;不需要时,及时回收,以供其它用户使用。2)提高主存储器的利用率不仅能使多道程序动态地共享主存,提高主存利用率,最好还能共享主存中某个区域的信息。3)“扩充”主存容量为用户提供比主存物理空间大得多的地址空间,以至使用户感觉他的作业是在这样一个大的存储器中运行。4)存储保护确保多道程序都在各自分配到存储区域内操作,互不干扰,防止一道程序破坏其它作业或系统文件的信息。第四章存储器管理四、预备知识(补充)1.定位(存储分配)为具体的程序和数据等分配存储单元或存储区工作。2.映射把逻辑地址转换为相应的物理地址的过程。3.隔离按存取权限把合法区与非法区分隔,实现存储保护。第四章存储器管理4.名空间•程序员在程序中定义的标识符•程序符号集合•由程序员自定义•没有地址的概念符号指令数据说明I/O说明第四章存储器管理5、逻辑地址、逻辑地址空间•逻辑地址(相对地址、虚地址)–用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0,其余指令中的地址都相对于首地址而编址。–用户的程序地址(指令地址或操作数地址)均为逻辑地址。–不能用逻辑地址在内存中读取信息。(why)•作业地址空间(作业逻辑地址空间、作业虚空间)–用户程序所有的逻辑地址集合对应的空间。–由编译程序生成作业地址空间01n-1指令、数据movr1,[500]1230100500599作业地址空间第四章存储器管理6、物理地址、物理地址空间•物理地址(绝对地址、实地址)–物理地址是计算机主存单元的真实地址,又称为绝对地址或实地址。–可直接寻址。•主存空间(物理地址空间、存储空间)–物理地址的集合所对应的空间组成了主存空间。主存空间01n-1第四章存储器管理地址映射LoadA2003456。。1200物理地址空间LoadAdata1data13456名空间LoadA20034560100200编译连接逻辑地址空间BA=1000图:名空间、地址空间、存储空间源程序目标程序可执行程序第四章存储器管理7.存储共享内存共享:两个或多个进程共用内存中相同区。目的:节省内存空间,提高内存利用率。实现进程通信:数据共享。共享内容:代码共享。数据共享。第四章存储器管理8.存储保护与安全1)保护目的为多个程序共享内存提供保障,使在内存中的各道程序,只能访问它自己的区域,避免各道程序间相互干拢,特别是当一道程序发生错误时,不致于影响其他程序的运行。通常由硬件完成保护功能,由软件辅助实现。特权指令不能完成存储保护。2)存储保护ⅰ.保护系统程序区不被用户侵犯。(有意或无意的)ⅱ.不允许用户程序读写不属于自己地址空间的数据。(系统区地址空间,其他用户程序的地址空间)3)保护过程--防止地址越界每个进程都有自己独立的进程空间,如果一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界。即当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断,由操作系统进行相应处理。第四章存储器管理9.内存“扩充”通过虚拟存储技术实现•用户在编制程序时,不应该受内存容量限制,所以要采用一定技术来“扩充”内存的容量,使用户得到比实际内存容量大的多的内存空间。•具体实现是在硬件支持下,软硬件相互协作,将内存和外存结合起来统一使用。通过这种方法把内存扩充,使用户在编制程序时不受内存限制。第四章存储器管理4.2程序的装入和链接在多道程序环境下,要使程序运行,必须创建进程,而创建进程第一件事就是将程序和数据装入内存。一个用户源程序要变为在内存中可执行的程序,通常要进行以下处理:(1)编译:由编译程序将用户源程序编译成若干个目标模块(2)链接:由链接程序将目标模块和相应的库函数链接成装入模块(3)装入:由装入程序将装入模块装入内存库目标程序块1目标程序块2第一步链接程序装入模块(.exe)第二步装入程序第三步用户源程序(.c;.c++)编译程序.obj第四章存储器管理一、程序的装入(由装入程序将装入模块(exe文件)装入内存)1.绝对装入方式(AbsoluteLoadingMode)(早期)如果在编译时,事先知用户程序在内存的驻留位置,则编译程序在编译时就产生绝对地址的目标代码。装入程序就直接把装入模块中的程序和数据装入到指定的位置,(不需进行地址转换)该装入方式只适用于单道程序环境。第四章存储器管理2.可重定位装入方式(RelocationLoadingMode)在多道程序环境下,目标模块中的其它地址都是相对于0编址。应根据内存的当前情况,将装入模块装入到内存的适当位置。通常是把在装入时对目标程序中指令和数据的修改过程称为重定位。图4-3作业装入内存时的情况LOAD1,2500365LOAD1,2500365100001100012500150005000250010000作业地址空间内存空间修改指令地址修改数据地址指令中的相对地址是否要修改?装入模块中所有的逻辑地址与实际装入内存的物理地址不同。从此装入第四章存储器管理LOADl,[2500]365010002500100001100012500LOADl,[2500]365程序空间内存空间0[12500]12500=10000+2500物理地址基地址相对地址地址变换在装入时一次完成,以后不改变,静态再定位。是否允许程序运行时在内存中移动位置?第四章存储器管理3.动态运行时装入方式(DynamicRun-timeLoading)可重定位装入方式:装入模块装入到内存中任何允许的位置。不允许程序运行时在内存中移动位置。实际情况:程序在运行过程中它在内存中的位置可能经常要改变。动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。第四章存储器管理二、程序的链接根据链接时间的不同,程序链接分成三种:(1)静态链接。(2)装入时动态链接。(3)运行时动态链接。第四章存储器管理1.静态链接方式(StaticLinking)图4-4程序链接示意图模块ACALLB;Return;0L-1模块BCALLC;Return;0M-1模块CReturn;0N-10模块AJSR“L”Return;L-1模块BJSR“L+M”Return;LL+M-1L+ML+M+N-1模块CReturn;(a)目标模块(b)装入模块是一种事先链接方式,即在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装入模块(执行文件),以后不再拆开。实现静态链接应解决的问题:(1)相对地址的修改(2)变换外部调用符号存在问题:(1)不便于对目标模块的修改和更新。如要更新其中一个模块,需要打开装入模块。(2)无法实现对目标模块的共享。PPAB静态链接第四章存储器管理2.装入时动态链接(Load-timeDynamicLinking)将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。优点:(1)便于修改和更新。各目标模块是分开存放的;修改容易;(2)便于实现对目标模块的共享。PPAB静态链接PAB装入时动态链接存在问题:由于程序运行所有可能用的目标模块在装入时均全部链接在一起,所以将会把一些不会运行的目标模块也链接进去。如程序中的错误处理模块。第四章存储器管理3.运行时动态链接(Run-timeDynamicLinking)定义:对某些模块的链接推迟到程序执行时才进行链接。在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。第四章存储器管理三、重定位地址映射:把作业地址空间中使用的逻辑地址变换成内存空间中的物理地址的过程。如下图,作业i经过重定位,把地址集合映射到以1000为始址的内存中,作为作业i的存储空间。作业i第四章存储器管理1.重定位的类型1)静态重定位当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换(一般在装入内存时由软件完成),作业i在执行前一次变址,直到该作业完成退出内存为止。第四章存储器管理2)动态重定位在程序运行过程中要访问数据时再进行地址变换。由地址变换机构进行的地址变换,硬件上需要重定位寄存器的支持。重定位寄存器:在执行一条指令取操作数时,要将指令给出的有效地址(500)与重定位寄存器中的内容(1000)相加,得访问地址(1500),从而实现了地址动态修改。装入时未修改第四章存储器管理4.3连续分配存储管理方式一、单一连续分配方式最简单的一种存储管理方式,但只能用于单用户、单任务的OS中。•存储管理方法:将内存分为系统区(内存低端,分配给OS用)和用户区(内存高端,分配给用户用)。采用静态分配方式,即作业一旦进入内存,就要等待它运行结束后才能释放内存。•主要特点:管理简单,只需小量的软件和硬件支持,便于用户了解和使用。但因内存中只装入一道作业运行,内存空间浪费大,各类资源的利用率也不高。系统区-os用户区用户程序第四章存储器管理工作流程单一连续区分配采用静态重定位方式,即作业或进程一旦进入主存,就一直等到它运行结束后才能释放主存。下图所示的主存分配与回收法。并且由装入程序检查其绝对地址是否越界,即可达到保护系统的目的。缺点:不支持多道。主存利用率不高。程序的运行受主存容量限制。第四章存储器管理分区分配方式存储管理分区分配方式是满足多道程序设计需要的一种最简单的存储管理方法。•存储管理方法将内存分成若干个分区(大小相等/不相等),除OS占一区外,其余的每一个分区容纳一个用户程序。按分区的变化情况,可将分区存储管理进一步分为:•固定分区存储管理•动态分区存储管理第四章存储器管理二、固定分区分配(固定分区存储管理)是最早使用的一种可运行多道程序的存储管理方法。存储管理方法•内存空间的划分:将内存空间划分为若干个固定大小的分区,除OS占一区外,其余的一个分区装入一道程序。分区的大小可以相等,也可以不等,但事先必须确定,在运行时不能改变。即分区大小及边界在运行时不能改变。•系统需建立一张分区说明表或使用表,以记录分区号、分区大小、分区的起始地址及状态(已分配或未分配)。第四章存储器管理固定分区

1 / 65
下载文档,编辑使用

©2015-2020 m.111doc.com 三一刀客.

备案号:赣ICP备18015867号-1 客服联系 QQ:2149211541

×
保存成功