资源预览内容
第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
第9页 / 共49页
第10页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,学习重点和难点: 1 存储管理的基本概念 2 各种存储管理的基本思想、实现方法和技术 3 地址空间和物理空间的区别 4 虚拟存储器的概念和方法 5 请求分页/分段存储管理方式 6页面置换算法,第四章 存储器管理,2,存储器是计算机系统的重要组成部分,虽然内存容量在不断扩大,但内存仍是宝贵资源,如何提高主存储器利用率,并扩充主存,对主存信息实现有效保护是存储器管理主要任务,也是各种不同存储管理方法的目标。,3,4.1 存储器的层次结构,5,物理地址和逻辑地址,主存的存储单元以字节为单位编址,每个存储单元都有一个地址与其相对应。这些地址称为主存的物理地址(绝对地址/实地址);由物理地址所对应的主存空间称为物理地址空间。 在多道程序设计系统中,主存中同时存放了多个用户作业。每个用户不可能预先知道其作业存放在主存的具体位置。因此,在用户程序中不能使用主存的物理地址。每个用户可以认为自己作业的程序和数据存放在一组从0地址开始的连续空间中。用户程序中所使用的地址称为逻辑地址(相对地址/虚地址)。所对应的空间称为逻辑地址空间。,6,4.2 程序的装入和链接,7,将一个模块装入内存时,可采用三种方式: 绝对装入方式 可重定位装入方式(静态重定位 ) 动态运行时装入方式(动态重定位),1.程序的装入,8,如果在编译时知道程序驻留在主存的具体位置,则编译程序将产生物理地址的目标代码。模块装入后,由于程序中的逻辑地址与实际主存的地址完全相同,故不需要对程序和数据的地址进行修改。 指内存分配是在作业运行之前各目标模块连接后,把整个作业一次性全部装入内存,并在作业的整个运行过程中,不允许作业再申请其他内存,或在内存中移动位置。也就是说,内存分配是在作业运行前一次性完成的。 绝对装入方式只能将目标模块装入到主存事先指定的固定位置,只适用于单道程序环境。,1)绝对装入方式,9,绝对装入方式,编译时产生的绝对地址,10,将逻辑地址变换成物理地址的过程叫做地址重定位。,2)可重定位装入方式,在装入作业时,把该作业中的指令地址和数据地址一次性全部转换成物理地址,在作业执行进程中无需再进行地址转换工作。 由于这种地址变换通常是在装入时由装配程序一次性完成的,以后不再改变,故称为静态重定位。 物理地址=逻辑地址+程序在内存的首地址 优点:无需硬件支持,容易实现。 缺点: 1.程序经地址重定位后不能再移动了; 2.程序在内存空间只能连续存储;,11,+,+,装入程序,静态重定位,逻辑地址空间,12,动态运行时装入是在程序执行期间由地址变换机构动态实现的。 动态重定位由软件和硬件相互配合实现。硬件需要一个地址转换机制,该机制由一个基址寄存器和一个地址转换线路组成。 物理地址= 逻辑地址+基址寄存器的内容 存储管理为作业分配存储区域后,装入程序把作业直接装入到所分配的区域中,并把该主存区域的起始地址存入相应进程的PCB中。当进程被调度占用CPU时,作业所占的主存区域的起始地址也被存放到基址寄存器中。进程执行时,CPU每执行一条指令都会把指令中的逻辑地址与基址寄存器中的值相加得到相应的物理地址,然后按物理地址访问存储器。,3 动态运行时装入方式(动态重定位),13,装入程序,作业的装入,地址转换,动态重定位,+,+,+,132,14,若改变了存储区域,作业仍能正确执行,则称程序是可浮动的。采用动态重定位的系统支持程序浮动。而采用静态重定位时,由于被装入主存中的作业信息都已转换为物理地址,作业执行进程中,不再进行地址的转换,故作业执行进程中是不能改变存放位置,即采用静态重定位的系统不支持程序浮动. 优点: 1.用户程序在执行过程中在内存可以移动,有利于内存的充分利用; 2.程序不必连续存放在内存中,可以放在不同的区域; 缺点: 需要附加硬件支持,实行存储管理的软件算法也比较复杂。,15,4.2.2 程序的链接,根据链接时间的不同,可把链接划分为三种方式: 静态链接 装入时动态链接 动态链接 运行时动态链接,16,1) 静态链接,静态链接:在程序运行之前,先将各个目标模块及他们所需的库函数,链接成一个完整的装入模块(又称为可执行文件)运行时直接装入内存。这种事先进行链接,以后不再拆开的链接方式称之静态链接。 经过编译后得到目标模块,每个模块的起始地址都为0。模块中的地址都是相对于起始地址计算的,在链接成一个装入模块后,程序中被调用模块的起始地址不再是0,此时必须修改被调用模块的逻辑地址,同时每个模块中使用的外部调用符号也相应转变为逻辑地址。,17,模块A CALL B; RETURN;,模块B CALL C; RETURN;,模块C RETURN;,0,L-1,0,M-1,0,N-1,模块A JSR “L”; RETURN;,模块C RETURN;,模块B JSR “L+M”; RETURN;,0,L-1,L,L+M-1,L+M,L+M+N-1,目标模块,装入模块,静态链接,18,2) 装入时动态链接,装入时动态链接:将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。 由于采用动态链接的各个目标模块是分开存放的,操作系统可以方便地将一个目标模块链接到几个应用模块上。 优点: (1) 便于修改和更新 (2) 便于对目标模块的共享,19,3) 运行时动态链接,运行时动态链接:对某些目标模块,当在程序执行中需要该模块时,才对它进行的链接。亦即,在程序的执行过程中,当发现一个被调用模块尚未装入内存时,立即由操作系统去找到该模块并将之装入内存,把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅加快了程序的装入过程,而且可节省大量的内存空间。,20,4.3 连续分配方式,把主存中的用户区作为一个连续区域或者分成若干个连续区域进行分配。 可分为单一连续分配、固定分区分配、动态分区分配及动态重定位分区分配 。 1、单一连续分配管理 最简单的存储管理方式;操作系统占用一部分主存空间,其余的主存空间作为一个连续分区全部分配给一个作业使用,即在任何时刻主存中最多只存有一个作业。,21,单一连续存储管理,0,a,b,c,单一连续存储管理示意图,22,单一连续存储管理,覆盖技术示意图,23,覆盖技术 所谓“覆盖”就是一个作业的若干个程序段,或几个作业的某些部分共享同一内存空间。 覆盖技术的基本思想是把主存的同一区域分配给一道程序的若干个子程序或数据段。开始时只有程序的一部分装入主存,在其执行过程中根据请求动态的把其它部分装入到该程序原来已经占用过的存储区域中。 优点:能更有效的利用内存。 缺点: 1.用户难以预知程序的覆盖情况; 2.各作业占用的分区存在碎片;,24,单一连续存储管理,特点: (1)不必考虑作业在主存中的移动问题 (2)存储保护比较简单 (3)可用于分时系统中 采用对(交)换技术实现 多个用户作业轮流进 入主存,作业对换示意图,25,交换技术目的,一方面解决主存容量不够大的矛盾,一方面使各分时用户能保证合理的响应时间。所谓交换,就是系统根据需要把主存中暂时不运行的某个(或某些)作业部分或全部移到外存,而把外存中的某个(或某些)作业移到相应的主存区,并使其投入运行。 交换的时机通常在以下情况发生: 进程用完时间片或等待输入输出; 作业要求扩充存储而得不到满足时。,交换技术,26,交换技术的关键是设法减少每次交换的信息量。为此,常将作业的副本保留在外存,每次换出时,仅换出那些修改过的信息即可。 交换技术也是利用外存来逻辑地扩充主存。它的主要特点是打破了一个程序一旦进入主存便一直运行到结束的限制。 思考题:覆盖和交换技术有何联系?,1.覆盖技术和交换技术是两种扩充内存的技术。2.覆盖技术主要用于早期的os中,而交换技术在现代os中仍有较强的生命力。 3.覆盖技术要求程序员提供一个清晰的覆盖结构,即由程序员来完成把一个程序划分为不同的程序段并规定好执行及覆盖顺序;而交换技术完全由os来实现,整个过程对程序员是透明的。 4.覆盖主要是在同一个作业或同一个进程内进行;而交换是在进程或作业之间进行。,27,缺点: (1)CPU利用率比较低 (2)存储器得不到充分利用 (3)计算机的外围设备利用率不高,4.3.2 固定分区分配,固定分区法 固定分区预先把主存中的用户区分割成若 干个连续区域,每个连续区域称为一个分区,每个分区大小可以相同也可以不同。,28,上限寄存器,固定分区存储管理示意图,29,进程B(25K),进程C(36K),主存分配表,1.空间的分配和去配,作业B(20K),存储空间分配情况,四个分区的主存分配表,20K,28K,60K,124K,256K,OS,作业A(6K),作业C(64K),作业B(20K),30,地址转换和存储保护,固定分区存储管理下,作业在执行过程中是不会被改变存储区域的, 可采用静态重定位装入方式装入作业。 由装入程序把作业中的逻辑地址与分区的下限地址相加,得到相应的物理地址。当一个已经被装入主存的作业占有CPU运行时,进程调度程序将该作业所在分区的下限地址和上限地址分别存储在CPU的下限寄存器和上限寄存器中。 CPU执行该作业指令时必须判断: 下限地址=物理地址上限地址,31,主存空间的利用率,提高主存空间利用率的方法: (1)根据经常出现的作业的大小和频率划分分区,尽可能提高各个分区的利用率。 (2)划分分区时按分区大小顺序排列。 (3)按作业对主存空间的需求量排成多个作业队列,规定每个作业队列中的各作业只能依次装入对应的分区中;,分区2,0,a,b,c,d,作业对列1,作业对列2,作业对列3,OS,分区1,分区3,L1,L2,L3,32,4.3.3 动态分区分配 1.动态分区分配的基本概念 因为固定分区主存利用率不高,使用起来不灵活,所以出现了动态分区的管理技术。 动态分区原则:存储空间的划分是在装作业时进行的。从可用的自由存储空间内,划出一个大小正好等于作业大小的存储区,并分配给这一作业。,OS,进程A,进程B,进程C,进程D,OS,进程A,进程B,进程C,OS,进程A,进程B,OS,进程A,33,1.) 空间的分配和去配,当有作业完成后释放所占用的存储区。 在系统运行的过程中,系统中形成多个空闲的不连续的存储区,称主空闲。,34,采用动态分区存储管理方式管理存储空间时,主存中已占用分区和空闲区的数目和大小都是可变的。为了实现可变分区存储管理,系统必须设置相应的数据结构,用来描述空闲分区和已分配分区的情况,为系统空间分配提供依据。常用的数据结构有以下两种形式: (1)空闲分区表 (2)空闲分区链,35,(1)空闲分区表,系统设置空闲分区表和已分配分区表,用来描述空闲分区和已分配分区的情况,为系统空间分配提供依据。,36,(2)空闲分区链,为了实现对空闲分区的分配和链接,在每个分区的起始部分设置一些用于控制分区分配的信息以及用于链接前一个分区的前向指针;在分区的尾部则设置一后向指针,通过前、后向链接指针,可以将所有的空闲分区连接成一个双向链。,37,2 分区分配算法,分区分配和回收是对空闲区表(或空闲区队列)数据结构进行操作,空闲区表的组织有两种方法: 1、按空闲区大小的升序(降序)组织; 2、按空闲区首地址升序(降序)组织。 根据空闲区表组织的方法的不同,有不同的放置策略,它们是首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法和快速适应算法。,38,A 首次适应分配算法 首次适应分配算法的表是按空闲区首地址升序的(即空闲区表是按空闲区首址从小到大)方法组织的。,39,从该空闲区中截取所需 大小,修改调整可用表,从空闲区表第一 表目顺序查找,从可用
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号