计算机操作系统-存储器管理.ppt
《计算机操作系统-存储器管理.ppt》由会员分享,可在线阅读,更多相关《计算机操作系统-存储器管理.ppt(173页珍藏版)》请在三一办公上搜索。
1、第四章 存储器管理,存储器是计算机系统的重要组成部分之一。对存储器加以有效管理,不仅直接影响存储器的利用率,而且对系统性能有重大影响。内存管理的主要对象是内存,对外存的管理在文件管理中。,第四章 存储器管理,存储器的层次结构,多级存储器结构,存储器的层次结构,1、主存储器 CPU只能从主存储器中取得指令和数据。但运行速度远低于CPU执行指令的速度。2、寄存器 访问速度最快,但价格昂贵。3、高速缓存 容量远大于寄存器,但比主存小两三个数量级。4、磁盘缓存 利用主存中的存储空间。,第四章 存储器管理,4.1 程序的装入和链接4.2 连续分配方式4.3 基本分页存储管理方式4.4 基本分段存储管理方
2、式4.5 虚拟存储器的基本概念4.6 请求分页存储管理方式4.7 页面置换算法4.8 请求分段存储管理方式,本章重点难点,1、掌握地址变换机构及实现方法。2、掌握虚拟存储器概念和虚拟存储技术。3、掌握页面置换算法。,4.1 程序的装入和链接,在多道程序环境下,要使程序运行,必须为之先建立进程。创建进程的第一件事是将程序和数据装入内存。将用户源程序变为可在内存中执行的程序的步骤:1、编译:由编译程序将用户源代码编译成若干个目标模块 2、链接:由链接程序将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块 3、装入:由装入程序将装入模块装入内存,4.1 程序的装入和
3、链接,4.1 程序的装入和链接,4.1.1 程序的装入将一个装入模块装入内存时,有三种方式:绝对装入方式可重定位装入方式动态运行时装入方式,4.1 程序的装入和链接,1.绝对装入方式 在编译时,如果知道程序驻留在内存的什么位置,那么编译程序将产生绝对地址的目标代码。装入模块装入内存后,程序中的逻辑地址与实际内存地址完全相同,不须对程序和数据的地址进行修改。程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员赋予。只适合于单道程序环境,4.1.1 程序的装入,4.1 程序的装入和链接,2.可重定位装入方式 在多道程序环境下,目标模块的起始地址通常从0开始,程序中的其他地址都是相对于起始地址
4、计算的。因此应采用可重定位装入方式,根据内存的当前情况,将装入模块装入到内存的适当位置。,注意:在采用可重定位装入方式将装入模块装入内存后,会使装入模块中的所有逻辑地址与实际装入内存的物理地址不同。,4.1 程序的装入和链接,在装入时对目标程序中指令和数据的修改过程称为重定位。地址变换在装入时一次完成,以后不再改变,称为静态重定位。,4.1 程序的装入和链接,3.动态运行时装入方式 动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。为使地址转换不影响指令的执行速度
5、,应设置一个重定位寄存器。,4.1 程序的装入和链接,4.1.2 程序的链接 程序经过编译后得到一组目标模块,再利用链接程序将目标模块链接,形成装入模块。根据链接时间的不同,把链接分成三种:1、静态链接:在程序运行前,将目标模块及所需的库函数链接成一个完整的装配模块,以后不再拆开。2、装入时动态链接:指将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的链接方式。3、运行时动态链接:指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行链接。,1.静态链接方式:事先进行链接,以后不再拆开,4.1.2 程序的链接,将目标模块装配成装入模块时需解决的两个问题:(1)对
6、相对地址进行修改(2)变换外部调用符号,4.1.2 程序的链接,2.装入时动态链接:用户源程序经编译后所得的目标模块,是在装入内存时,边装入边链接的,即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存,还要修改目标模块中的相对地址。优点:便于修改和更新 便于实现对目标模块的共享,3.运行时动态链接:运行时动态链接是将对某些模块的链接推迟到执行时才执行,即在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。凡执行过程中未被用到的目标模块,不会调入内存和链接,这样不仅加快程序的装入过
7、程,而且节省大量的内存空间。,4.1.2 程序的链接,第四章 存储器管理,4.1 程序的装入和链接4.2 连续分配方式4.3 基本分页存储管理方式4.4 基本分段存储管理方式4.5 虚拟存储器的基本概念4.6 请求分页存储管理方式4.7 页面置换算法4.8 请求分段存储管理方式,4.2 连续分配方式,内容及要求四种连续分配方式;理解和掌握动态分区分配及动态重定位分区分配方式;掌握动态分区分配算法,4.2 连续分配方式,连续分配方式,是指为一个用户程序分配一个连续的内存空间。,单一连续分配,固定分区分配,动态分区分配,可重定位分区分配,4.2.1 单一连续分配方式,把内存分为系统区和用户区两部分
8、,系统区仅提供给OS使用,通常放在内存低址部分,用户区是指除系统区以外的全部内存空间,提供给用户使用。但只能用于单用户、单任务的操作系统中。,4.2 连续分配方式,连续分配方式,是指为一个用户程序分配一个连续的内存空间。,单一连续分配,固定分区分配,动态分区分配,可重定位分区分配,4.2.2 固定分区分配,1.原理 将内存用户空间划分为若干个固定大小的区域,在每个分区中只装入一道作业,便可以有多道作业并发执行。当有一空闲分区时,便可以再从外存的后备作业队列中,选择一个适当大小的作业装入该分区,当该作业结束时,可再从后备作业队列中找出另一作业调入该分区。,2.划分分区的方法(1)分区大小相等:所
9、有的内存分区大小相等,缺乏灵活性(2)分区大小不等:把内存区划分成含有多个较小的分区、适量的中等分区及少量的大分区。,3.实现为便于内存分配,通常将分区按大小进行排队,并为之建立一张分区使用表,其中各表项包括每个分区的起始地址、大小及状态(是否已分配)。当有一用户程序要装入时,由内存分配程序检索该表,从中找出一个能满足要求的、尚未分配的分区,将之分配给该程序,然后将该表项中的状态置为“已分配”;若未找到大小足够的分区,则拒绝为该用户程序分配内存。,4.2.2 固定分区分配,4.2 连续分配方式,连续分配方式,是指为一个用户程序分配一个连续的内存空间。,单一连续分配,固定分区分配,动态分区分配,
10、可重定位分区分配,4.2.3 动态分区分配,1.原理 动态分区分配是根据进程的实际需要,动态地为之分配内存空间。作业装入内存时,把可用内存分出一个连续区域给作业,且分区的大小正好适合作业大小的需要。分区的大小和个数依装入作业的需要而定2.实现在实现过程中涉及如下问题:,分区分配中的数据结构分区分配算法分区分配及回收操作,1)分区分配中的数据结构(1)空闲分区表示 空闲分区表:记录每个空闲分区的情况。每个空闲分区占一个表目。空闲分区链:在每个分区的起始部分,设置一些用于控制分区分配的信息,以及用于链接各分区所用的前向指针;在分区尾部则设置一后向指针,将所有的空闲分区链接成一个双向链。,2.实现,
11、4.2.3 动态分区分配,序号 大小 起址 状态 1 48k 116k 可用 2 252k 260k 可用(a)空闲分区表,作业号 大小 起址 1 32k 20k 2 64k 52k 4 96K 164K(C)已占分区表,(2)已占分区说明表 结构:作业号;起始地址;大小,2)分区分配算法 为把一个新作业装入内存,需按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业。常用的分配算法:(1)首次适应算法FF(2)循环首次适应算法(3)最佳适应算法,4.2.3 动态分区分配,(1)首次适应算法FF FF算法要求空闲分区表以地址递增的次序排列。在分配内存时,从表首开始顺序查找,直至
12、找到一个大小能满足要求的空闲分区为止;然后按照作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲分区表中。若从头到尾不存在满足要求的分区,则分配失败。优点:优先利用内存低址部分的内存空间,保留了高址部分的大空闲区。缺点:低址部分不断划分,产生小碎片(内存碎块、内存碎片、零头);每次查找从低址部分开始,增加了查找的开销,4.2.3 动态分区分配,(2)循环首次适应算法 在分配内存空间时,从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业。为实现算法,需要:设置一起始查寻指针采用循环查找方式优点:
13、使内存空闲分区分布均匀,减少查找的开销缺点:缺乏大的空闲分区,4.2.3 动态分区分配,(3)最佳适应算法 所谓“最佳”是指每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。要求将所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链。缺点:产生许多难以利用的小空闲区,4.2.3 动态分区分配,3)分区分配及回收操作分配内存 利用某种分配算法,从空闲分区链(表)中找到所需大小的分区。设请求的分区大小为u.size,表中每个空闲分区的大小表示为m.size,若m.size-u.sizesize(规定的不再切割的分区大小),将整个分区分配给请求者,否则从分区中
14、按请求的大小划出一块内存空间分配出去,余下部分留在空闲链中,将分配区首址返回给调用者。,4.2.3 动态分区分配,4.2.3 动态分区分配,回收内存 当进程运行完毕释放内存时,系统根据回收区首址,在空闲分区链(表)中找到相应插入点,可能有四种情况:(1)回收区与插入点的前一个分区F1邻接:(2)回收区与插入点的后一个分区F2邻接:,(3)回收区与插入点的前后两个分区F1、F2邻接:(4)回收区既不与F1邻接,又不与F2邻接:,4.2 连续分配方式,连续分配方式,是指为一个用户程序分配一个连续的内存空间。,单一连续分配,固定分区分配,动态分区分配,可重定位分区分配,4.2.4 可重定位分区分配,
15、1.动态重定位的引入 在连续分配方式中,必须把系统或用户程序装入一连续的内存空间。如果在统统中只有若干个小分区,即使它们的容量总和大于要装入的程序,但由于这些分区不相邻,所以无法将程序装入内存。,解决方法:将内存中的所有作业进行移动,使它们全部邻接,这样可把原来分散的小分区拼接成大分区,这种方法称为“拼接”或“紧凑”。缺点:用户程序在内存中的地址发生变化,必须重定位。,2.动态重定位的实现在动态运行时装入的方式,将相对地址转换为物理地址的工作在程序指令真正要执行时才进行。地址转换需要重定位寄存器的支持。程序执行时访问的内存地址是相对地址与重定位寄存器中的地址相加而成。,地址变换过程是在程序执行
16、过程期间,随着对每条指令的访问自动进行的,称为动态重定位。,4.2.4 可重定位分区分配,3.动态重定位分区分配算法动态重定位分区分配算法与动态分区分配算法基本相同,差别在于增加了紧凑的功能。,4.2.4 可重定位分区分配,4.2 连续分配方式,4.2.1 单一连续分配4.2.2 固定分区分配4.2.3 动态分区分配4.2.4 可重定位分区分配4.2.5 对换,1.对换的引入多道程序环境下存在的问题:阻塞进程占据大量内存空间许多作业在外存而不能进入内存运行,4.2.4 对换,对换:把内存中暂时不能运行的进程或者暂时不用的程序和数据,调到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程和
17、进程所需要的程序和数据,调入内存。,对换的分类:整体对换(或进程对换):以整个进程为单位 页面对换或分段对换:以页或段为单位实现进程对换,系统必须具备的功能:对换空间的管理 进程的换出 进程的换入,2.对换空间的管理,在系统中设置相应的数据结构以记录外存的使用情况对换空间的分配与回收,与动态分区方式时的内存分配与回收雷同。,4.2.4 对换,一般从磁盘上划出一块空间作为对换区使用,3.进程的换出与换入进程的换出 换出过程:系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动盘块,将该进程的程序和数据传送到磁盘的对换区上。进程的换入 系统应定时查看所有进程的状态,从中找出“就绪”状态
18、但已换出的进程,将换出进程最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。,4.2.4 对换,4.2.4 对换,第四章 存储器管理,4.1 程序的装入和链接4.2 连续分配方式4.3 基本分页存储管理方式4.4 基本分段存储管理方式4.5 虚拟存储器的基本概念4.6 请求分页存储管理方式4.7 页面置换算法4.8 请求分段存储管理方式,4.3 基本分页存储管理方式,连续分配方式会形成“碎片”,虽然可以通过“紧凑”解决,但开销大。如果允许将一个进程直接分散地装入许多不相邻的分区中,则无需“紧凑”,由此产生离散分配方式。分类:分页存储管理方式:离散分配的基本单位是页 分
19、段存储管理方式:离散分配的基本单位是段 基本的分页存储管理方式(或纯分页存储管理方式):不具备页面对换功能,不具有支持实现虚拟存储器的功能,要求把每个作业全部装入内存后方能运行。,4.3 基本分页存储管理方式,4.3.1 页面与页表4.3.2 地址变换机构4.3.3 两级和多级页表,4.3.1 页面与页表,1.页面分页式存储管理的原理 分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片称为页面或页,并为各页加以编号,从0开始。同时把内存空间分成与页面相同大小的若干个存储块,称为块或页框。在为进程分配内存时,以块为单位将进程的若干个页分别装入到多个可以不相邻的物理块中。进程的最后一页经
20、常装不满一块而形成“页内碎片”。,基本分页式存储管理(简单页式存储管理)的原理 系统若能满足一个作业所要求的全部块数,此作业才能被装入内存,否则不为它分配任何内存。请求分页式存储管理的原理 运行一个作业时,并不要求把该作业的全部程序和数据都装入内存,可以只把目前要执行的几页调入内存的空闲块中,其余的仍保存在外存中,以后根据作业运行的需要再调入内存。,页面大小的选择由机器的地址结构所决定的,即由硬件所决定某一种机器只能采用一种大小的页面。小:内碎片小,内存利用率高,但页面数目多,使页表过长,占大量内存,管理开销大大:页表短,管理开销小,内碎片大,内存利用率低,4.3.1 页面与页表,页面大小 页
21、面大小应选地适中,应是2的幂,通常是512B8KB,2.地址结构,地址长度32位:011位为位移量(页内地址),即每页的大小为4KB12 31位为页号,地址空间最多允许有1M页对于某特定的机器,其地址结构是一定的。,4.3.1 页面与页表,若给定一个逻辑地址空间中的地址为A,页面大小为L,则 页号P=INTA/L 页内地址d=A MOD L例如:系统页面大小为1KB,设A=2170D,则 P=2,d=122,数值的表示:二进制,十进制,八进制,十六进制,分别在其后加上B,D,Q,H.(Binary,Decimal,Q(Octal),Hexadecimal),4.3.1 页面与页表,3.基本分页
22、式存储管理(简单页式存储管理)的实现 进程的每一页离散地存储在内存的任一存储块中,为方便查找,系统为每一进程建立一张页面映像表,简称页表。页表实现了从页号到物理块号的地址映射。,4.3.1 页面与页表,4.3.2 地址变换机构,为了能将用户地址空间的逻辑地址变换为内存空间的物理地址,在系统中必须设置地址变换机构。地址变换机构实现从逻辑地址到物理地址的转换,其任务是借助于页表,将逻辑地址中的页号转换为内存中的物理块号。,1.基本的地址变换机构 页表的功能可以由一组专门的寄存器来实现,一个页表项用一个寄存器。但寄存器成本高,系统页表可能很大,所以页表大多常驻内存。在系统中只设置一个页表寄存器PTR
23、,在其中存放页表在内存中的始址和页表的长度。平时,进程没有执行时,页表的始址和页表长度存放在进程的PCB中,当调度到进程时,才将这两个数据装入到页表寄存器中。,4.3.2 地址变换机构,2.具有快表的地址变换机构由于页表是存放在内存中的,CPU在每存取一个数据时,需要两次访问内存:第一次:访问页表,找到指定页的物理块号,将块号与页内偏移量拼接形成物理地址。第二次:从第一次所得地址中获得所需数据,或向此地址中写入数据。存储器利用率提高,处理器处理速度降低。解决方法:在地址变换机构中,增设一个具有并行查寻能力的特殊高速缓冲寄存器,称为“联想存储器”或“快表”。,4.3.2 地址变换机构,基本分页式
24、存储管理之例,作业表,4.3.3 两级和多级页表,现代计算机系统都支持非常大的逻辑地址空间(232264),页表就非常大,需占用较大的地址空间。例如:一个具有32位逻辑地址空间的分页系统,规定页面大小为4KB即212B,则每个进程页表的页表项可达1M个,若每个页表项占用一个字节,则每个进程的页表就要占据1MB的内存空间,而且要求连续存放。解决方法:采用离散方式存储 只将当前所需页表项调入内存,1.两级页表 将页表分页,并离散地将各个页面分别存放在不同的物理块中,同时为离散分配的页表再建立一张页表,称为外层页表,其每个页表项记录了页表页面的物理块号。,例如:32位逻辑地址空间,页面大小为4KB(
25、即12位),若采用一级页表机构,应有20位页号,即页表项应有1M个;在采用两级页表机构时,再对页表进行分页,使每页包含210(即1024)个页表项,最多允许有210个页表分页。即,4.3.3 两级和多级页表,为实现方便,在地址变换机构中需设一外层页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号,作为外层页表的索引,从中找到指定页表分页的始址,再利用p2作为指定页表分页的索引,找到指定的页表项,其中即含有该页在内存的物理块号,用该块号和页内地址d即可构成访问的内存物理地址。,4.3.3 两级和多级页表,1.两级页表,上述方法用离散分配空间解决了大页表无需大片存储空间的问题,但并未减
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 操作系统 存储器 管理

链接地址:https://www.31ppt.com/p-6342503.html