版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章
内存管理计算机操作系统ComputerOperatingSystems第5章存储器管理132存储器管理概述分页式存储管理4分区式存储管理分段式存储管理内存(memory)也称主存(mainmemory)类似于仓库,用于
存取指令和数据5.1存储器管理概述存储器系统的层次结构寄存器高速缓存
Cache主存储器DRAM外部存储器
磁盘、光盘、U盘更小,
更快、
更贵更大,
更慢、
更便宜0.25~0.5nsec0.5~25nsec80~250nsec5msec存储管理?一个内存中包含有许多存储单元,每个单元可以存放一个适当单位的信息(如:8个bit,即
一个字节,byte);全部存储单元按一定顺序编号,这种编号称为存储器的地址。对各个存储单元的读写操作就是通过它们的地址来进行的。00110010001101000011000001000011765432105.1存储器管理概述0x1FFFFFFF
0x000000020x000000010x00000000512MByteREADYWRITEREADMainMemoryABk位(给出地址)DBn位(传送数据)例如:k=32位n=32位CPUARDR几个字节?理想中的存储器:更大、更快、更便宜的非易失性存储器。5.1存储器管理概述源文件程序内存可执行程序、内存的内部结构?5.1存储器管理概述5.1存储器管理概述栈动态堆空间数据段代码段低地址高地址数据区代码区文件头可执行文件内存区textsizedatasizeSPPC0100200300......str5,[200]
ldrR1,[200]
addR2,R1,3
strR2,[204]逻辑地址空间204xyintx,y;x=5;y=x+3;源程序编译链接装入分区1000......110012001300物理地址空间str5,[200]
ldrR1,[200]
addR2,R1,3
strR2,[204]1204xy有无问题?1)物理地址:就是内存的地址,是以字节为单位,对内存单元的编址。2)逻辑地址:用户源程序经过编译或汇编后形成的目标指令代码的编址。3)地址空间:地址的编址范围。4)物理地址空间:内存地址的编址范围。也就是计算内存的编址范围,它是由实际的物理内存的大小决定的。5)逻辑的地址空间:用户程序指令的编址范围,是由程序的大小决定的。5.1存储器管理概述装入分区0100200300......str5,[200]
ldrR1,[200]
addR2,R1,3
strR2,[204]逻辑地址空间204xy1000......110012001300物理地址空间str5,[1200]
ldrR1,[1200]
addR2,R1,3
strR2,[1204]1204xy1)物理地址也叫内存地址、绝对地址,实地址;把内存分成很多个大小相等的存储单元,每个
单元给一个编号,这个编号称为物理地址;物理地址可以直接寻址;物理地址的集合称为物理地址空间(内存地址
空间),它是一个一维的线性空间。2)逻辑地址也叫相对地址,虚地址;用户程序经汇编或编译后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0,其余指令中的地址都是相对首地址来编址;内存保护:逻辑地址与物理地址分离。3)地址映射(重定位)为保证CPU执行指令时可正确访问存储单元,
需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,此过程称为地址映射.重定位重定位
重定位:是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程,也就是说在装入时对目标程序中指令和数据的修改过程。5.1存储器管理概述静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故成为静态重定位。动态重定位:它不是在程序装入内存时完成的,而是CPU每次访问内存时由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。动态重定位需要软件和硬件相互配合完成。5.1存储器管理概述动态地址映射(动态重定位):当用户程序被装
入内存时,不对指令代码做任何修改。而是在程
序运行过程中,当需要访问内存单元时再来进行
地址转换(即在逐条执行指令时完成转换)。由硬件地址映射机制完成,如设置一个基地址寄存器,并装入进程所在分区起始地址;在程序运行时,硬件自动完成地址映射。装入分区0100200300......str5,[200]
ldrR1,[200]
addR2,R1,3
strR2,[204]逻辑地址空间204xy1000......110012001300物理地址空间str5,[200]
ldrR1,[200]
addR2,R1,3
strR2,[204]1204xy+基地址寄存器1000相对地址2001.基地址寄存器
在哪?有几个?2.何时填入1000?
如何实现多道存储管理,即在内存中同时有多个进程运行,有哪些问题需要考虑?5.1存储器管理概述内存空间的管理整个内存区域如何划分?用什么数据结构来管理内存?如何在有限内存空间中容纳尽可能多的进程?内存的分配新进程到达时,如何给它分配内存?内存的回收进程运行结束时,如何回收其内存?5.1存储器管理概述单一连续区分配5.2
分区式存储管理内存分为两大区域:系统区,用户区。
又把用户区划分为若干分区(partition)。一个进程占用一个分区。特点:适合多道程序系统和分时系统,支持多个程序并发执行。分区存储管理的多进程运行OSProc1Proc2Procn…codeStaticDataheapstackcodeStaticDataheapstackcodeStaticDataheapstack各个用户分区的个数、位置和大小一旦确定以后,就固定不变。5.2
分区式存储管理5.2.1固定式分区5.2
分区式存储管理5.2.1固定式分区分区的大小是否相等?程序大小不同多个小分区、适量的中等分区、少量大分区进程个数多于分区个数?输入队列输入队列分区4分区3分区2分区1操作系统700K400K100K0200K800K如何实现?数据结构内存分配内存回收数据结构:设置内存分配表内存分配:先放入输入队列,然后采用
最先匹配法、最佳匹配法
等算法。内存回收:简单分区号起始地址长度状态进程名5.2.1固定式分区分区分配分区回收固定分区的缺点:内存利用率不高,内碎片造成很大浪费。
所谓内碎片,即进程所占用分区之内的未
被利用的空间。分区的总数固定,限制了并发执行的程序
个数,不够灵活。地址空间的大小有限。如何确定分区的大小?5.2
分区式存储管理5.2.2可变分区(动态分区)初始时,操作系统会占用内存的一部分,其余空间为一个完整的大空闲区当一个程序要求装入内存运行时,系统从这个空闲区中划一块分配给它当程序完成后释放所占用的存储区随着一系列的内存分配和回收,原来的一整块大空闲区就形成了若干占用区和空闲区相间的布局。5.2
分区式存储管理5.2.2可变分区(动态分区)5.2
分区式存储管理5.2.2可变分区(动态分区)5.2
分区式存储管理5.2.2可变分区(动态分区)首次适应算法循环首次适应算法最佳适应算法最坏适应算法5.2.3分区式管理的内存分配算法5.2
分区式存储管理42首次适应算法43分区回收5.2.4可重定位分区(紧缩)5.2.4可重定位分区(紧缩)可变分区的特点:分区的个数、位置和大小都是随进程的进出而动态变化的,非常灵活,避免了在固定分区中因分区大小不当所造成的内碎片,提高了内存利用率。有外碎片,即各个占用分区之间难以利用的空闲分区。使得内存的分配、回收和管理更为复杂。5.2.2可变分区(动态分区)基本原理把物理内存划分为许多个固定大小的内存块,称
为物理页面(块),或页框(pageframe);把逻辑地址空间划分为大小相同的块,称为逻辑
页面,或简称页面(page);页面大小为2n;当一个用户程序装入内存时,以页面为单位进行分配。若要运行一个大小为n个页面的程序,需要有n个空闲的物理页面把它装入,这些页面是可以不连续的。5.3
分页式存储管理进程3第0页进程2第2页进程1第1页进程1第0页进程2第1页进程2第0页操作系统操作系统0K1K2K3K4K5K6K7K8K9K10K0K1K2K进程1地址空间进程2地址空间0K1K2K3K0K1K进程3地址空间内存5.3
分页式存储管理用于存储管理的数据结构是什么?当一个进程到来时,如何给它分配内存?当一个进程运行结束,释放它所占用的内存空间后,如何回收内存?当一个进程被加载到内存以后,它如何正确运行(地址重定位)?分页式存储管理要解决如下问题:5.3
分页式存储管理5.3.1页表一个进程的各个连续的逻辑页面,被分散地
装入到内存的各个物理页面当中,在这种情
形下,怎样才能保证程序能够正确地运行?构建页表,进行地址变换。5.3.1
页表页表:系统为每一个进程都建立了一个页表,页表给出了逻辑页面号和具体内存块号(物理页面号)之间的对应关系。逻辑页号内存块号页表01n-1对于给定的逻辑地址,找到逻辑页面号和页内偏移地址;查找页表,找到相应的物理页面号;计算最终的物理地址。5.3.1
页表(本图摘自Silberschatz,GalvinandGagne:“OperatingSystemConcepts”)逻辑
地址空间页表物理内存物理页面号逻辑地址的划分把逻辑地址划分为两部分:逻辑页面号和页内偏移地址。这种划分是由系统自动完成的,对用户是透明的。由于页面的大小一般为2的整数次幂,因此,地址的高位部分即为页号,低位部分即为页内偏移地址。例如,页面大小为4KB。页号页内地址逻辑地址为十六进制的形式逻辑地址为十进制的形式计算方法: 页号=虚地址/页大小 位移量=虚地址%页大小例如:假设页面大小为2KB,计算逻辑地址7145和3412的逻辑页面号和页内偏移地址。页号:3412/2048=1页内偏移:3412%2048=1364页号:7145/2048=3页内偏移:7145%2048=10015.3.1
页表5.3.2
地址变换5.3.2
地址变换5.3.2
地址变换在现有的方案中,每一次访问内存(数据/指令)时,都要做两次访问内存的工作。这样,降低了存取速度,将会影响整个系统的使用效率。为缩短页表的查找时间,可以采用一种特殊的快速查找硬件:TLB(TranslationLookasideBuffer)或称associativememory,用来存放那些最常用的页表项。如何加快页表的查询速度?局部性原理(principleoflocality)程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。刚刚访问过的页面,可能还会被访问程序的局部性原理局部性原理的具体表现:程序在执行时,大部分是顺序执行的指令,少部分是转移和过程调用指令;程序中存在相当多的循环结构,它们由少量指令组成,而被多次执行;程序中存在很多对一定数据结构的操作,如数组操作,往往局限在较小范围内。程序的局部性原理5.3.4
快表带快表的地址变换5.3.3
快表【例2】
假设快表的访问时间检索和访问时间为2ns,内存的访问时间是10ns,由于程序的局部性,一般快表的访问命中率达到90%。计算一下,有无快表的访问速度。
无快表的情况下,1百万条指令的访问时间是:2*10*106(ns)=20s;
有快表的情况下,如果在快表中找到页表表项,再访问内存的时间开销是12ns;如果再快表中没找到相应表项,再访问页表、访问内存,需要时间开销为22ns。1百万条指令的访问时间是:
12*90%*106(ns)+22*10%*106(ns)=13s;685.3.4两级页表695.3.4两级页表优缺点优点:没有外碎片,内碎片的大小不超过页面的大小;一个程序不必连续存放;进程看到连续逻辑地址空间,OS辛苦缺点:程序必须全部装入内存;OS为每个进程维护一张页表,切换开销
Why段式存储管理?页式存储管理(和分区存储管理)只有一个逻辑地址空间,即一维的线性连续空间。页面大小与代码逻辑无关,不便于共享!5.4分段式存储管理基本原理对程序的每个逻辑单元(代码、数据和栈等),设立一个完全独立的地址空间,称为“段”。每个段的内部是一维线性连续地址,大小可不同;对于物理内存来说,采用可变分区(动态分区)的管理方法;当一个程序需要装入内存时,以段为单位进行分配,把每一个段装入到一个内存分区当中,这些内存分区不必是连续的。1423物理内存空间用户空间1324子函数主函数栈全局变量0n实现方法在段式存储管理中,用户空间地址为二维地址:
(段号,段内偏移)。实现方式:(1)地址高端为段号、低端为偏移;(2)指令中显式地给出段号和段内偏移。段表:系统为每一个进程都建立了一个段表,它给出了进程当中的每一个段与它所对应的内存分区之间的映射关系。5.4分段式存储管理所对应内存分区的起始地址段长度1400100063004004300400段号0125.4.1段表5.4分段式存储管理5.4.1段表段表的具体实现:段表保存在内存当中;设置一个段表基地址寄存器(Segment-tablebaseregister,STBR),用来指向内存当中段表的起始地址;设置一个段表长度寄存器(Segment-tablelengthregister,STLR),用来指示段表的大小,即程序当中的段的个数;硬件寄存器位于什么地方?其内容何时更新?谁更新?如何更新?5.4.2分段的地址变换5.4.3分段的信息共享多个进程程序1虚拟地址空间1程序2虚拟地址空间2CodeDataHeapStackCodeDataHeapStackData2Stack1Heap1OSheap&StacksCode1Stack2Data1Heap2Code2OScodeOSdata地址映射1地址映射2物理地址空间段式存储和页式存储各有特点:段式存储管理为用户提供了一个二维的逻辑地址空间,可以满足程序和信息的逻辑分段要求,反映了程序的逻辑结构,有利于段的共享、保护和动态增长;页式存储管理的特征是等分内存,它有效地克服了碎片问题,提高了内存的利用率。5.4.4段页式存储器管理先把程序划分为段,然后在段内分页。逻辑地址:段号段内地址页号页内地址内存划分:按页式存储管理方案内存分配:以页面为单位进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物(广东卷01)(考试版及全解全析)-2026年高考考前预测卷
- 煤矿自动隔爆装置安设、拆除专项安全风险辨识评估报告
- 设备维护保养周期安排措施
- 手术质量安全核心制度落实方案
- 热处理车间温度控制改善计划
- 生产区噪声控制整改计划方案
- 机加车间职业健康体检制度
- 阿姨宿舍卫生自查验收流程
- 喷涂工序关键检查点控制计划
- 病原微生物耐药性监测方案
- 超声基础试题及答案
- 灵芝轻简化生产技术规程
- 2024-2025学年甘肃省兰州第四十六中学下学期七年级期中数学试卷
- 船员航线考试题库及答案
- 小学生脊柱健康知识讲座
- 2025年湖南省综合评标专家培训考试题库及答案
- 农机售后管理办法
- 项目转产管理办法
- 2025年企业并购重组项目社会稳定风险评估报告
- 【国家】2024年国家工业信息安全发展研究中心招聘40人笔试附带答案详解析
- 消防控制室值班记录表
评论
0/150
提交评论