1存储管理2概述如果让计算机同时运行多道程序,比如:搜索文件、检查病毒、录入数据以及运行计算程序等,就要把这些可执行程序放入内存。若让用户指定各程序安放的具体位置不仅麻烦,而且会出现内存位置冲突、内存利用率低、内存管理混乱等诸多问题。所以,存储空间必须由操作系统统一安排,这就形成了操作系统的内存管理模块。操作系统管理存储器要从辅存中取进或换出数据块,但相对而言,存储器I/O是一个很慢的操作。为保持处理器或多个处理器处于忙状态以保证效率,操作系统必须很聪明地安排换入和换出的时机,以减少存储器I/O对性能的影响。3存储器的层次R高速缓存主存储器磁盘缓存固定磁盘可移动存储介质某台计算机存储器层次配置CPU中的寄存器100个字;高速缓存512KB,存取周期15ns;主存储器128MB,存取周期60ns;磁盘容量20GB,存取周期毫秒级;后援存储容量1TB,存取周期秒级。4存储管理的功能存储管理主要是指对主存储器(内存)的管理,要求操作系统的存储管理机构必须解决内存分配。多个进程同时运行,内存空间如何合理分配,决定了内存是否能得到充分利用;存储保护。运行时必须保证多个进程之间不能冲突、干扰和破坏;地址变换。程序是在连续区域中,还是划分成若干块放在不同区域中?是事先还是动态划分?多种存储分配方案与软件和硬件的地址变换技术及其机制紧密相关;存储共享。多个进程共用同一系统软件,如编译程序,存放编译程序的内存区即为共享内存区;存储扩充。即虚拟存储管理技术。5内存分配与回收①管理内存分配表②制定分配策略放置策略调入策略淘汰策略③内存区域划分划分为大小相等的块划分为大小不等的块④回收6主存空间的共享两方面的含义:①共享主存资源;②共享主存的某些区域的信息。存储保护①属于自己区域的信息,可读可写;②公共区域共享信息或获得授权信息,可读不可写;③未获授权信息,不可读不可写。7地址映射(重定位)地址空间一个目标程序所限定的相对地址范围。存储空间主存的实际空间,是主存中一系列物理存储单元的集合。虚空间采用以零为基准地址的相对地址/逻辑地址此时的空间称为虚空间绝对地址空间物理地址空间,是真实地址空间重定位把逻辑地址转换成绝对地址的过程称为重定位或地址转换。重定位的方式静态定位、动态定位8典型的地址空间示意图一个进程的寻址要求进程控制块程序数据栈进程控制信息程序的入口点分支指令访问数据当前栈顶地址值增加9典型的地址空间示意图该图描述了一个进程映像假设这个进程映像占据了主存中的一段相邻的区域;操作系统需要知道进程控制信息和执行栈,以及为这个进程开始执行程序的入口点的位置;由于操作系统管理存储器并负责把该进程取进主存,因而可以很容易地得到这些地址。此外,处理器必须处理程序内部的存储器访问;分支指令包含下一步将要执行的指令的地址,数据访问指令包含被访问数据的字节或字的地址。处理器硬件和操作系统软件必须能够把程序代码中的存储器访问转换成实际的物理存储器地址,以反映出程序在主存中的当前位置。10重定位示例进程控制块程序数据栈基址寄存器界限寄存器比较器加法器给操作系统的中断相对地址绝对地址主存中的进程映像11静态重定位程序在被装入到内存的过程中实现重定位,在程序运行过程中不再改变。例:0逻辑地址空间LOAD1,500…256100500600装入程序主存02561000110015001600nLOAD1,500…12动态重定位程序执行过程中进行重定位依靠硬件地址转换机构完成0逻辑地址空间LOAD1,500…12345100500600主存11001500LOAD1,500…123455001000+逻辑地址重定位寄存器13主存空间的扩充目的:解决小内存运行大作业的问题。借助于虚拟存储技术或其它自动覆盖技术实现。14存储管理技术15分区式分配固定分区/静态分区可变分区/动态分区可重定位分区分配覆盖与交换16分区式分配把内存划分为若干个大小不等或相等的连续区域,称为分区(partition),操作系统占用其中一个分区,其它每个分区装入一个运行作业。特点:适用于多道程序系统和分时系统支持多个程序并发执行难以进行内存分区的共享问题:可能存在碎片(Fragmentation)分区的数据结构:分区表(记录分区的大小和使用情况),划分为两个表格:空闲分区表,占用分区表。17分区式分配分类:固定式分区可变式分区18固定式分区处理作业前把内存划分为若干固定的分区,当作业申请内存资源时为其选择一个适当的分区,并将其装入内存运行。分区表区号分区长度起始地址状态18K20K已分配232K28K已分配364K60K已分配4132K124K已分配19固定式分区优点:易于实现,开销小。缺点:内碎片造成浪费分区总数固定,限制了并发执行的程序数目。可以和覆盖、交换技术配合使用。采用的数据结构:分区表操作系统进程A(6K)进程B(25K)进程C(36K)第1分区第2分区第3分区第4分区020K28K60K124K256K20可变分区/动态分区在处理作业的过程中建立分区,使分区大小和作业要求的存储空间相等。优点:没有内碎片。缺点:有外碎片;如果大小不是任意的,也可能出现内碎片。可变分区主存分配表可由两张表格组成已分配分区表未分配分区表21可变分区/动态分区jobA15KjobB20KjobC10KjobD25KjobE14KjobF31K…jobA15KOS空闲区jobA15KOSjobB20K空闲区jobA15KOSjobB20KjobC10K空闲区jobA15KOSjobB20KjobC10KjobD25K空闲区jobB、C结束,jobF装入jobA结束,jobE装入22可变分区内存分配表已分配分区表未分配分区表序号大小起始地址状态序号大小起始地址状态18K20K已分配164K44K可用216K28K已分配224K232K可用3—————空表目4124K108K已分配5——空表目23动态分配的主要步骤①查找一个足够容纳作业的可用空闲区;②若该空闲区比需要的大,则一分为二,并修改分配表信息;③回收时合并相邻空闲区。解决“外零头”方法:“拼接”或“紧凑”技术24可重定位分区分配可变分区中当作业完成时,将回收的分区与未使用的空白区合并组成更大的空白区,叫做“拼接”或“紧凑”可变分区中剩余的作业分散在内存中,即使拼接后,内存中仍有一些因不连续而不能被充分利用的空白区。采用重定位技术,将作业从一个分区移到另一个分区,将不相邻的空白区进行合并。作业从一个分区移到另一个分区,实质上只要修改重定位机制中基址寄存器的值。25可重定位分区分配操作系统作业1(10KB)8KB空白区作业222KB空白区不连续空白区操作系统18KB空白区作业222KB空白区作业1完成后拼接操作系统40KB空白区作业2作业2重定位26覆盖与交换技术覆盖(overlay)交换(swapping)27覆盖(overlay)所谓覆盖,是指一个作业中的若干程序段或数据段之间,或n个作业的某些部分共享某部分的主存空间。原理:一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间。将程序的必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中(覆盖文件),在需要用到时才装入到内存;不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。(即不同时用的模块可共用一个分区)28覆盖(overlay)初始段处理段输出段总控程序公用子程序公用数据区OS非覆盖区覆盖区0abc29交换技术(swapping)引入:多个程序并发执行,可以将暂时不能执行的程序送到外存中,从而获得空闲内存空间来装入新程序,或读入保存在外存中而目前到达就绪状态的进程。交换单位为整个进程的地址空间。交换:就是把主存中的信息以文件的形式写入辅存,然后再将指定的信息从辅存读入到主存。简言之,就是内、外存之间信息的交换。常与分区存储管理配合使用。又称作“对换”或“滚进/滚出(roll-in/roll-out)”。30交换技术(swapping)优点:增加并发运行的程序数目,并且给用户提供适当的响应时间;编写程序时不影响程序结构缺点:对换入和换出的控制增加处理机开销;程序整个地址空间都进行传送,没有考虑执行过程中地址访问的统计特性。31分页存储管理32虚拟存储器从逻辑上对内存容量进行扩充。基本思想:利用大容量的外存来扩充内存。利用外存自动调度的方法构成一个大空间的存储器。实现原理:部分装入、部分交换说明①虚拟存储器的最大容量由计算机的地址总线确定;②实现虚拟存储器必须有相当容量的外存和动态地址变换机构;③以时间换空间。33分页的概念页式存储管理,就是把内存物理空间分成大小相等的存储块,与之对应,把作业的逻辑空间按照同样的尺寸划分成若干页。将程序的逻辑地址空间和物理内存划分为固定大小的页或页面(pageorpageframe),程序加载时,分配其所需的所有页,这些页不必连续。需要CPU的硬件支持。34分页的概念实现方法:采用动态重定位技术利用页表(PageTable)进行地址变换。基本思想:部分装入、部分交换优点:没有外碎片,每个内碎片不超过页大小。一个程序不必连续存放。便于改变程序占用空间的大小。即随着程序运行而动态生成的数据增多,地址空间可相应增长。缺点:程序全部装入内存。35页的大小通常是:512B~4KB。小-内碎片小;大-页表短,管理开销小,交换时对外存I/O效率高。相对页号P页内地址D作业逻辑地址存储块号+页内地址物理地址块号块内地址物理地址物理地址与逻辑地址36页面地址转换的数据结构(1)存储分块表MBT:块号、作业号、状态块号作业号状态0os忙1J1忙2J2忙………nJk闲37页面地址转换的数据结构(2)页表PT:每个进程有一个页表,描述该进程占用的物理页面及逻辑页面排列顺序;页表的作用:实现页号和块号的对应P184说明:页表在作业装入时建立,作业撤消时消失;其在内存中的位置由页表的起始地址和页表大小所定(页表的两个关键参数:页表始址和页表长度被装入页表控制寄存器PTCR)。38页面地址转换的数据结构(3)作业表JT:记录作业的页表在内存的起始地址、大小、状态等信息。作业号作业大小页面始址状态J11610241J218………………39页式管理的地址变换作业号作业大小页面始址状态J11610241JT页表始址1024页表长度+页号块号02132810248452页号页内地址①作业调度②越界中断③查PT④⑤形成物理地址8×1024+452=864440页式管理的地址变换地址转换机构把CPU给出的有效地址自动分成两部分。例如:执行指令:LOAD1,2500有效地址2500=2×1024+452,因此页号P=2,页内地址D=452。(假设页面大小为1024)41页式管理的地址变换例:在一个页式存储管理系统中,页表内容如下,若页的大小为4k,则地址转换机构将逻辑地址0转换成的物理地址是多少?解:分解逻辑地址0=0×4k+0故页号为0,查页表得块号为2,所以物理地址为:2×4k+0=2×4×1024+0=8192页号块号021126343742缺页中断工作区入内存填写页表中各项进程调度此页不在主存缺页中断保留中断现场有空闲块吗?调入所需虚页调整页表及空闲块恢复被中断进程现场重新启动被中断的指令选择一页淘汰把该页写回外存修改内存分块表,置该块为空闲该页修改过?有无是否43快表为缩短查找时间,可以将页表从内存装入到关联存储器(TLB,TranslationLookasideBuffer),也称为快表。用来存放当前访问最频繁的少数活动页的页号。44快表地址变换过程JT页表始址页表长度+页号块号0213288452页号页内地址输入寄存器28①获取始址及大小页表始址寄存器③