操作系统第四章ppt课件.ppt
《操作系统第四章ppt课件.ppt》由会员分享,可在线阅读,更多相关《操作系统第四章ppt课件.ppt(97页珍藏版)》请在三一办公上搜索。
1、第四章 存储器管理,第一节 存储器的层次结构 第二节 程序的装入和链接第三节 连续分配存储管理方式第四节 对换(Swapping)第五节 基本分页存储管理方式第六节 基本分段存储管理方式,序言,存储器:主存(内存)、副存(外存)内存进程、外存文件内存管理: 地址映射、内存分配与回收 存储保护、内存扩充(虚拟内存)外存管理: 文件管理,存储器的层次结构,计算机对存储器的要求:1.要求存储器的访问速度能跟上处理机的运行速度。2.要求存储器具有非常大的容量。3.要求存储器的价格便宜。基于以上三个要求,目前计算机系统都采用了多层结构的存储器系统。,多层结构存储器系统,1.存储器的多层结构通用计算机的存
2、储器具有3层结构:由低到高分别为:辅存、主存、CPU寄存器。高档计算机的存储器结构分为:寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘、可移动存储介质等6层。存储器的特点:层次越高,存储介质的访问速度越快,价格越高,容量越小。存储器管理系统负责管理内存,外存作为文件管理内容。2.可执行存储器指寄存器和主存储器特点:对可执行存储器访问速度快,对辅存的访问需要通过I/O设备,因此耗费的时间远高于可执行存储器,一般至少相差3个数量级。,主存储器与寄存器,主存储器_内存用于保存进程运行时的程序和数据,又称为可执行存储器。CPU一般从主存中取出指令和数据分别存放于CPU中的指令寄存器和数据寄存器中,反之
3、将寄存器数据存入主存中。主存早期容量为数10到数百KB,现在高达数10MB到数GB。但主存访问速度低,故引入了寄存器和高速缓存。寄存器寄存器的访问速度最快,与处理器运行速度相当,但价格非常昂贵,容量也很小。随着VLSI的发展,现在的微机系统中,寄存器数量已达到数10个到数百个。,高速缓存和磁盘缓存,1.高速缓存是现代计算机结构中的一个重要部件,介于寄存器和主存之间,用于备份主存中较常用的数据,以减少处理机对主存的访问次数,从而大幅提高程序执行速度。其容量远大于寄存器,从几10KB到几MB,其访问速度快于主存。特点:由于高速缓存的速度越高,价格越贵,故计算机系统会设置两个或多个高级缓存,一级缓存
4、紧靠内存,速度最快,容量最小。2.磁盘缓存由于主存的访问速度远高于磁盘的访问速度,为了缓和两者间速度差异,设置了磁盘缓存,用于暂时存放频繁使用的一部分磁盘数据和信息,以减少访问磁盘的次数。特点:与高速缓存不同,磁盘缓存不是一种实际存在的存储器,而是利用主存中的一部分存储空间暂时存放磁盘信息。一个文件数据可能会出现在不同层次的存储器中:辅存主存(磁盘缓存),程序的装入和链接,用户提交的程序需要经过以下几个步骤才能被系统运行:1.编译2.链接3.装入,从源程序到程序执行,编译:编译程序由编译程序(Compiler)将用户源代码编译成若干个目标模块。链接:链接程序由链接程序(Linker)将编译后形
5、成的一组目标模块,以及它们所需要的库函数链接在一起,形成装入模块。装入:装入程序由装入程序(Loader)将装入模块复制到内存中。,库,程序的装入,就是把链接好的装入模块装入“内存”。装入方式绝对装入:只适用单道程序环境;装入内存的位置是可知的、固定的,故采用绝对装入方式,按照装入模块中的地址,将程序和数据装入内存,由于程序的逻辑地址与物理地址一致,故地址无需修改。程序中所使用的物理地址一般设置为在编译、汇编时再给出,此前由符号地址代替。可重定位装入(静态重定位):适用于多道程序环境,存在很多的用户程序编译所形成的若干个目标模块,它们的起始地址都是从0开始的逻辑地址,可通过重定位方式装入内存合
6、适的位置,但这会使装入模块的逻辑地址与实际装入内存后的物理地址不同,故需要对程序和数据的地址进行修改。动态运行时装入(动态重定位):允许程序在运行时,在内存中移动位置。实际上,程序在内存中运行时,它在内存中的位置可能要经常改变。例如:在对换功能系统中,一个进程可能被多次换出,又多次换入。动态运行时装入程序:把装入模块装入内存后,并不立即把模块中的逻辑地址转换为物理地址,而是把这种地址转换推迟到程序真正要执行时才进行。,重定位的概念,重定位概念:把程序装入内存时,修改程序中所有与地址有关的项。逻辑地址变换为物理地址。重定位的类型静态重定位:程序执行前,一次性,链接装入程序。动态重定位:处理机每次
7、访问主存时,有动态地址变换机构(硬件)自动执行。,链接方式,静态链接:程序在运行之前,先将目标模块及其所需库函数链接成一个完整的装配模块,以后不再拆开。这种事先进行链接的方式即为静态链接方式。(1)对相对地址进行修改,将目标模块的相对地址修改为相应的装入模块相对地址;(2)变换外部的调用符号,将每个模块中所用的外部调用符号也都变换为装入模块中的相对地址。,程序的链接,链接:把一个程序相关的一组目标模块和系统调用模块(库函数)链接形成一个整体装入模块的过程。具体工作:对相对地址的修改;变换外部调用符号。,链接,目标模块使用的都是相对地址,其起始地址都为0,每个模块中的地址都是相对于起始地址计算的
8、。,长度,链接方式,装入时动态链接:在将目标模块装入内存时,边装入边链接的链接方式,即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存,同时修改目标模块中的相对地址。优点:(1)便于修改和更新,由于各目标模块是分开存放的,所以要修改 或更新各目标模块就很容易。(2)便于实现对目标模块的共享,在采用静态链接方式时,每个应用模块都必须含有其目标模块的拷贝,无法实现对目标模块的共享,但采用装入时动态链接的方式时,OS就很容易将一个目标模块链接到几个应用模块上,实现多个应用程序对该模块的共享。,链接方式,运行时动态链接:将对某些模块的链接推迟到程
9、序执行时才进行。亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块,并将之装入内存,将其链接到调用者模块上。优点:凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅能加快程序的装入过程,而且可节省大量的内存空间。,连续分配存储管理方式,连续分配方式:为用户程序分配一个连续的内存空间,即程序中代码的逻辑地址相邻体现在内存空间分配时,物理地址的相邻。曾被广泛应用,且现在仍被采用。单一连续分配固定分区分配动态分区分配动态可重定位分区分配,单一连续分配,单一连续分配的基本思想把内存分为系统区和用户区,系统区供OS使用,通常放在内存的低址部分;系
10、统区以外的全部内存空间是用户区,仅装有一道用户程序。单一连续分配的特点只能用于单用户、单任务的单道程序环境的OS中。软件简单,硬件要求低(可无需存储器保护措施)实例CP/M,MS-DOS,RT-11等单用户OS,固定分区分配,在多道程序环境中,为了防止装入内存中的多个程序间互相干扰,于是将整个内存用户空间划分为若干个固定大小的区域,将每个分区中只装入一道作业,即为固定分区分配。1.划分分区的方法(划分为若干个固定大小的分区)分区大小相等:缺乏灵活性:当程序太小会造成内存空间浪费,当程序太大又无法满足其运行。比较适用于一台计算机同时控制多个相同对象的场合。分区大小不相等:较上种方法灵活,通常将内
11、存划分为多个较小的分区、适量中等分区、少量大分区。2.内存分区分配分区使用表(MBT):分区号、大小、分区起址、状态分区按内存空间大小排队当用户程序要装入时,由内存分配程序检索分区使用表,找到满足要求、尚未分配的分区,将之分配给它。,固定分区分配,分区使用表,动态分区分配,可变分区分配思想分区的位置和大小都不固定,应作业的要求而设置,为之动态分配内存空间。动态分区分配的数据结构的两种形式:空闲分区表(用于记录每个空闲分区)、空闲分区链:用于实现对空闲分区的分配和链接,在每个分区的头部、尾部分别设置了前向、后向指针,形成了双向链表。,分区大小,分区状态,分区分配流程图,分配内存分区大小与所需空间
12、大小“匹配”:M.Size - U.Size Size (不再分割的小分区的尺寸)剩余部分挂接到空闲分区链(表)上。,空闲状态分区,动态分区分配算法,首次适应算法FF要求:空闲分区链以地址递增的次序链接每次从链首开始顺序查找第一个大小能满足要求的空闲分区,然后划分,余下的空闲分区仍留在空闲链中优先利用地址部分,保留高址部分的大空闲区碎片较多,每次从低址查找要增加查找的开销,为了将一个新作业装入内存中,须按照一定的分配算法,从空闲分区表中选出一分区给该作业,接下来将介绍四种传统的顺序式搜索算法:,循环首次适应算法:对首次适应算法的演变,从上次找到的下一个空闲分区开始找要求:设置一个起始查找指针采
13、用循环查找方式内存中的空闲分区分布更均匀减少了查找空闲分区始的开销缺乏大的空闲分区,最佳适应算法要求:将所有的空闲分区按其容量从小到大的顺序形成一空闲分区链从链首开始查找第一个大小适合的空闲分区第一次找得的是最佳即最恰好适合的分区能够避免“大材小用”同时,空闲分区每次分配切割留下的剩余部分总是最小的,留下大量的难以利用的碎片回收操作较困难,最坏适应算法要求:将所有的空闲分区按其容量从大到小的顺序形成一空闲分区链每次分配链首的第一个空闲分区每次利用是最大的分区,空闲分区每次分配切割留下的剩余部分总是最大的,避免留下大量的难以利用的碎片查询开销非常小但缺乏大空闲分区,动态分区分配算法,分配算法比较
14、几种算法各有利弊,到底哪种最好不能一概而论,而应针对具体作业序列来分析。对于某一作业序列来说,某种算法能将该作业序列中所有作业安置完毕,那么我们说该算法对这一作业序列是合适的。对于某一算法而言,如它不能立即满足某一要求,而其它算法却可以满足此要求,则这一算法对该作业序列是不合适的。,例:有作业序列:作业A要求20K;作业B要求28K,作业C要求30K。要求画出系统中空闲区按照首次适应算法,最佳适应算法、最坏适应算法形成的三种空闲分区队列,然后分析哪种算法对该序列是合适的?经分析可知:最佳适应法对这个作业序列是合适的,而其它两种对该作业序列是不合适的。,练习有作业序列:作业A要求21K;作业B要
15、求25K,作业C要求30K,那种分配算法适合该作业序列?,动态分区分配算法,基于索引搜索的动态分区分配算法由于顺序搜索的动态分区分配算法比较适用于较小的系统。当系统很大时,为了提高搜索空闲分区的速度,采用基于索引搜索的动态分区分配算法:1.快速适应算法2.伙伴系统3.哈希算法,快速适应算法,又称为分类搜索算法,是将空闲分区根据容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表,同时在内存中设立一张管理索引表,其中的每一个索引表项对应了一种空闲分区类型,并记录了该类型空闲分区链表表头指针。该算法搜索空闲分区步骤:1.根据进程的长度,从索引表中找到能容纳它的最小空闲区
16、链表2.从链表中取下第一块进行分配即可。该算法不会对分区产生分割,因此不会产生碎片,查找效率高。缺点:为进程所分配的分区或多或少存在内存空间的浪费。,伙伴系统,该算法规定,无论已分配分区或空闲分区,其大小均为2的k次幂,通常整个可分配内存的大小为2的m次方。将它不断的划分,按照分区的大小进行分类,将相同大小的所有空闲分区,单独设立一个空闲分区双向链表,形成k个空闲分区链表。算法步骤:当需要为进程分配长度为n的存储空间:1.首先计算一个i值,使2i-1n=2i。2.然后若找到2i大小的空闲分区链表,则分配,否则将查找2i+1链表,若找到则把该分区分为两个相等的分区,这两个分区称为一对伙伴,其中一
17、个分区用于分配,而把另一个分区加入大小为2i的空闲分区链表中,以此类推2的i+2空闲分区链表的分配。,哈希算法,在上述分类搜索算法和伙伴系统算法中,都是将空闲分区根据分区大小进行分类,对于每一类具有相同大小的空闲分区,单独设立一个空闲分区链表。在为进程分配空间时,需要在一张管理索引表中查找所需空间大小所对应的表项,来找到一个空闲分区。这里面临一个问题,如果空闲分区分类较细,则相应的索引表项较多,那么会显著增加搜索索引表的表项的时间开销。为了解决这个问题,提出了哈希算法。,哈希算法,哈希算法:利用哈希快速查找的优点,以及空闲分区在可利用空闲区表中的分布规律,建立哈希函数,构造一张以空闲分区大小为
18、关键字的哈希表,该表的每个表项记录了一个对应的空闲分区链表表头指针。当进行空闲分区分配时,根据所需空闲分区大小,通过哈希函数计算,即得到在哈希表中的位置,从中得到相应的空闲分区链表,实现最佳分配策略。,分区分配操作,回收内存回收区与插入点的前一个空闲分区相邻接回收区与插入点的后一个空闲分区相邻接;回收区与插入点的前后两个空闲分区相邻接;回收区不与任何一个空闲分区相邻接;,可重定位分区分配,动态重定位的引入随着系统接收的作业的增加,内存中连续的大块分区不复存在,产生了大量的“碎片”。新的作业无法装入到每个“碎片”小分区上运行,但所有碎片的空间总和可能大于需求。通过“拼接”/“紧凑”/“紧缩”/“
19、”澄清“来实现”程序的浮动“/” 动态重定位“。,紧凑,可重定位分区分配,动态重定位的实现由于动态运行时装入方式是将相对地址转换为绝对地址的工作推迟到程序指令要真正执行时进行,为使地址转换不影响到指令的执行速度,需要有硬件地址变换机构的支持,即需在系统中增设一个重定位寄存器,用它来存放程序在内存中的起始地址。程序运行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。动态重定位:地址变换过程是在程序执行期间,随着每条指令或数据的访问自动进行的,故称为。,优缺点分析优点:消除了“碎片”,提高了内存利用率,同时提高了系统效率。缺点:需要动态重定位“硬件”机构支持,增加了系统成本,并
20、轻度降低了程序执行速度,“紧凑”处理增加了系统开销。,可重定位分区分配算法,对换(Swapping),早期,在单用户分时系统中出现的对换技术为:系统把所有的用户作业存放在磁盘上,每次只能调入一个作业进入内存,当该作业的一个时间片用完时,将它调至外存的后备队列上等待,再从后备队列上将另一个作业调入内存。多道环境下存在的问题:1.内存中大量的进程因事件未发生而被阻塞,但却占用了大量的内存空间。2.又存在许多的作业因内存空间的不足,一直驻留在外存上,而不能进入内存运行。这些都使得系统的吞吐量下降,造成了系统资源的浪费,为了解决这个问题,在系统中添加了对换设施。,对换技术,对换技术(Swapping)
21、:用于解决内存不足的问题,改善内存利用率,提高系统吞吐量。指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间再把已具备运行条件的进程或进程所需要的程序和数据调入内存。对换的类型_根据每次对换时,所对换的程序或数据的数量,可将对换分为如下两类:如果对换是以整个进程为单位,便称之为“整体对换”或“进程对换”,广泛用于多道程序中,作为处理机中级调度。如果对换是以进程的一个“页面”或“分段”为单位进行的,则分别称之为“页面对换”或“分段对换”,又称为“部分对换”。这种对换方法是实现后面将介绍的请求分页和请求分段式存储管理的基础,其目的是为支持虚拟存储系统。,进程
22、对换技术,进程对换技术(Swapping)对换的时机:创建新进程而内存不足时。对换空间的管理:外存分为文件区和对换区,前者存放文件,采用离散分配;后者存放换出的进程,采用连续分配,以提高进程换入、换出的对换速度。对换区空闲盘块管理中的数据结构:记录外存中对换区的空闲盘块的使用情况,使用空闲分区表包括对换区的首址及其大小分别用盘块号和盘块数表示。对换空间的分配与回收对换分区的分配:连续分配方式,因而对换空间的分配与回收与动态分区分配雷同。其分配算法可以是首次适应算法、循环首次适应算法、最佳适应算法。对换区的回收可分为:1.回收分区与插入点的前一个空闲分区F1相邻接;2.回收分区与插入点的后一个空
23、闲分区F2相邻接;3.回收分区同时与插入点的前、后两个分区邻接;4.回收分区既不与F1邻接,又不与F2邻接。,进程对换技术(Swapping)当一进程由于创建子进程而需要更多的内存空间,但又无足够的内存空间时,便调用对换进程。进程的换出:系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,申请对换空间,然后启动磁盘,将该进程的程序和数据传送到磁盘的对换区上,并回收该进程占用的内存空间,修改该进程的PCB。进程的换入:找出“就绪”状态但已换出的进程,将其中换出时间最久的进程作为换入进程,将之换入,直至无可换入的进程或无可换出的进程或无足够内存换入进程为止,此时对换进程才停止。,第五节基本分页
24、存储管理方式,由于采用连续分配方式会形成很多的碎片,虽然可以使用紧凑方法改善但开销太大,于是促使人们产生了分散分配方式的思想(如果将一个进程直接分散地装入到许多不相邻接的分区中,便可充分地利用内存空间)。根据离散分配时,所分配地址空间的单位不同,可将离散分配分为三种:1. 分页存储管理方式。 2. 分段存储管理方式。 3. 段页式存储管理方式。页面与页表地址变换机构两级和多级页表基本分页的特点,页面与页表,页面页面:分页存储管理将进程的逻辑地址分成若干个页并且按照顺序编号。物理块:相应把内存的物理地址空间分为若干个块加以编号。页面大小:选择适当的页面大小一般为2n 范围:1KB 8KB分散分配
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 第四 ppt 课件
链接地址:https://www.31ppt.com/p-1886439.html