操作系统之内存管理1.ppt_第1页
操作系统之内存管理1.ppt_第2页
操作系统之内存管理1.ppt_第3页
操作系统之内存管理1.ppt_第4页
操作系统之内存管理1.ppt_第5页
免费预览已结束,剩余33页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Chapter 8: 内存管理,Objectives本章目标,To provide a detailed description of various ways of organizing memory hardware 背景知识:描述内存硬件的组织方法 To discuss various memory-management techniques, including paging and segmentation 讨论各种内存管理技术,其中包括分页与分段 To provide a detailed description of the Intel Pentium, which suppor

2、ts both pure segmentation and segmentation with paging 详细描述Intel奔腾系列芯片,着重阐述它对分段以及段页式内存管理机制的支持(内存管理的硬件支持),Chapter 8: Memory Management,8.1 Background 8.2 Swapping 8.3 Contiguous Memory Allocation Paging Structure of the Page Table Segmentation Example: The Intel Pentium,8.1 Background背景介绍,Execution o

3、f a program 程序执行过程 取指/解码/执行(Fetch/Decode/Execute) Fetch an instruction 从内存中读取一条指令 Decode the instruction 将指令放入指令寄存器(IR)中,然后对其进行解码(解码后可能还要从内存中取操作数) Instruction Cycle 一个单条指令处理过程称为一个指令周期 程序的执行由不断地取指、解码和执行的指令周期组成 当程序的全部指令执行完毕时,程序停止,开始,取指,解码,执行指令,停止,8.1 Background背景介绍,前一个slide中所讲的CPU执行指令的流程,是从CPU的角度来看程序执

4、行流程的 而如果我们换一个角度,从内存硬件的角度来这个执行过程时,看到的应该是另一番景象 内存所面对的就是一个地址流 这些地址流是由于CPU对内存的读写访问而形成的 对于物理内存而言,这些地址是怎么产生的它不用关心 所以,在后面进行内存管理的时候,内存资源都被视为一个线性的数组(Linear Array) = 线性的地址空间 内存管理算法所关心的主要事情是如何将这个线性的数组进行有效的划分,并进行合理地分配,8.1 Background背景介绍,Main memory and registers are only storage CPU can access directly 只有主存和寄存器

5、这两种存储介质是可以被CPU所直接访问的 Program must be brought (from disk) into memory and placed within a process for it to be run 因此,程序必须从外存中读到进程所管理的内存中来执行,8.1.1 基本内存硬件,Register access in one CPU clock (or less) CPU对于寄存器的访问在一个CPU时钟周期内就可以完成 Main memory can take many cycles 主存访问可能需要多个周期(比访问寄存器要慢) Cache sits between m

6、ain memory and CPU registers 高速缓存(Cache)介乎寄存器与主存之间,8.1 Background背景介绍,8.1.1 基本内存硬件,操作系统在进行内存管理的时候,除了保证访问物理内存的相对速度,还必须对操作系统与用户进程之间,以及用户进程与用户进程之间必须被有效的隔离 Protection of memory required to ensure correct operation 对于存储的有效保护,是保证程序正确执行的基础,8.1 Background背景介绍,8.1.1 基本内存硬件,进程需要独立的私人空间 - 进程的地址空间,8.1 Backgroun

7、d背景介绍,Early Single-Programming 早期的单道程序的内存分布 特点: 没有内存管理硬件的支持 操作系统(Operating System)与应用程序(Application)之间可以相互访问对方的内存 实例:MS-DOS,操作系统,应用程序,1M,0,8.1 Background背景介绍,单道程序中的内存组织的问题,操作系统,应用程序,1M,0,物理存储空间分配不当,产生了重叠,那么可能存在内存使用冲突,8.1 Background背景介绍,Multi-Programming 多道程序 特点: 多道程序同时驻留在内存,操作系统,应用程序2,xxxM,0,应用程序1,操

8、作系统内存组织Organization of Memory,多道程序中的内存组织的问题,物理存储空间分配不当,产生了重叠,同样可能存在内存使用冲突,操作系统,应用程序2,xxxM,0,应用程序1,Segmentation Memory Protection段式内存保护,把内存分成几段,每段分别划给一个实体(操作系统代码、进程1、进程2、),通过一个段基址base和段的长度limit来规定归属于某个进程的一段内存区间,段机制需要硬件支持, 通常利用硬件寄存器来维护 段机制和段长度,并通过硬件 上的机制来保证对内存的访问 不会越界,在例子中, 访问地址30005,OK 用30004作为基地址访问4

9、3000, 不OK,8.1 Background背景介绍,内存保护的实现机理,如下图所示,CPU,基地址,基地址+界限地址,是,内存,否,是,否,地址,地址基地址 下界溢出,地址=基地址+界限地址 上界溢出,寻址错误,这对操作系统来说, 是致命错误,需要立刻陷入内核处理,8.1 Background背景介绍,注意到,基于基地址寄存器和界限寄存器的硬件地址保护能够正确工作的前提是基地址寄存器和界限寄存器的内容不能所以被篡改 实际上,上述两个寄存器都只能由操作系统通过特殊的特权指令来加载,一般的用户进程是无法修改他们的 所以,在这样的前提下,硬件地址保护模式是可以正确工作的,8.1 Backgro

10、und背景介绍,Address Binding 地址绑定的目的 为代码中的函数名、变量名等指定地址,8.1.2 地址绑定,8.1 Background背景介绍,地址绑定 将程序中的指令或者数据分配到实际的物理内存单元 在程序实际执行之前,必须处理地址的绑定,因为只有程序知道了执行所需的代码或数据在实际物理内存的位置,CPU才能够完成取指-执行的基本步骤,8.1.2 地址绑定,程序的活动流程 Compile time Load time Execution time,Binding of Instructions and Data to Memory地址绑定时机,Compile time: 编译

11、时就完成指令和数据地址到绝对内存地址的绑定 缺点:如果代码起始地址发生变化,代码需要重新编译 Load time: Must generate relocatable code if memory location is not known at compile time 编译期间,不知道代码和数据应该放到那个内存位置 必须生成可重定位代码(relocatable code) Execution time: 运行时完成地址绑定 需要重定位硬件支持,地址绑定的3个时机:,8.1 Background,CPU生成的地址,通常称为逻辑地址(Logical Address) 内存硬件所看到的地址(即加

12、载到内存地址寄存器Memory Address Register, MAR中的地址),通常称为物理地址(Physical Address),8.1.3 逻辑地址空间与物理地址空间,Relocation地址重定位,地址重定位 将用户程序中出现的逻辑地址转化到程序运行时计算机可以识别的物理地址的过程 实现方法 Static Relocation 静态重定位 Dynamic Relocation 动态重定位,Relocation地址重定位,静态地址重定位 在程序编译或加载的时候完成地址的重定位,也就是说在程序加载的同时进行程序的内容,Relocation地址重定位,静态重定位实例,Relocatio

13、n地址重定位,动态重定位 在程序执行期间完成逻辑地址到实际地址的转换 需要内存管理硬件MMU的支持 页式/段式虚存管理之下的地址变换,是动态重定位的典型实例,Relocation地址重定位,动态重定位实例,8.2 Swapping交换,一个进程可以被操作系统暂时从内存换到后备存储(backing store),而在某个时刻再被从后备存储换回内存执行,后备存储要求: 访问速度较快 其容量要能够存放所有用户的内存映像副本 必须提供对这些内存镜像进行直接访问的操作,8.2 Swapping交换,一个进程可以被操作系统暂时从内存换到后备存储(backing store),而在某个时刻再被从后备存储换回

14、内存执行,基于优先级的调度中可能用到 交换策略: 滚出(Roll out) 如果有一个更高优先级的 进程需要服务,内存管理器 可以选择将某低优先级进程P 换出 滚入(Roll in) 高优先级的进程执行完后, 低优先级进程可以再次被 换回内存,8.2 Swapping交换,交换的限制: 通常,一个交换出的进程需要交换回它原来所占有的内存空间,上述限制是由地址绑定方式决定的。,解释:,(1) 如果绑定是在汇编或加载时所定的,那么进程换回时不可以移到 不同的位置 (2)如果绑定是在运行时完成的,由于物理地址是在运行期才确定的, 所以在进程换回时可以允许其换到与换出前不同的内存位置,8.2 Swap

15、ping交换,在支持交换的系统内,调度是这样发生的: 系统的就绪队列中包括在备份存储或在内存中已经处于就绪状态的所有进程 当CPU决定执行进程时,它调用调度程序 调度程序检查就绪队列中下一进程P 如果P在内存中,那么调度其执行 如果P不在内存中,且空闲内存空间足够,将P换入 如果P不在内存中,且空闲内存空间不够装下P,那么选择一个合适的进程P,将P换出,然后换入P,8.2 Swapping交换,交换系统的上下文切换时间比较长 Major part of swap time is transfer time; 在交换时间中,转移时间占了大部分 total transfer time is dir

16、ectly proportional to the amount of memory swapped转移时间与内存需求量成正比 为了有效使用CPU,需要每个进程的时间要比交换时间长,8.2 Swapping交换,交换也受其他因素限制,以下是不可以被换出的进程的一种情况 如果一个进程正在等待I/O操作,而此异步I/O操作需要访问用户内存的I/O缓冲区,那么该进程不能被换出,解决方法: 方法一,不允许换出等待I/O的进程 方法二,设计时,规定I/O操作的执行只能使用操作系统内核缓冲区,8.2 Swapping交换,许多操作系统都在使用标准交换系统的变种 UNIX版本的交换 平时并不执行; 在系统内

17、存空间吃紧时,启动交换; 当系统负荷降低,交换又会暂停 Windows 3.1 交换的时机完全由用户掌握 换出的进程会一直处于换出状态,直到用户再选择执行该进程为止,8.3 Contiguous Memory Allocation连续内存分配,操作系统内核与各种用户进程,都是占据内存的实体 内存管理算法要完成内存在各个实体之间的公平有效的分配 这一节,介绍连续内存分配这一常用的内存分配方法,8.3 Contiguous Memory Allocation连续内存分配,内存通常被分为两个区域 其一用于驻留操作系统 其二用于用户进程 操作系统可以处于内存区域的高端,也可以在内存区域的低端 决定操作系统位置的一个主要因素,是系统中断向量的位置 通常,中断向量是放在内存的低地址区 因此,操作系统也会被放在低地址区,8.3 Contiguous Memory Allocation连续内存分配,重定位寄存器用来对操作系统内核和各用户进程实施内存保护 每段区域的内存基地址,保存在基地址寄存器中 内存区域的长度,则由界限寄存器(limit register)记录 重定位的过程由MMU硬件在程序执行期完成,Contiguous Allocation (Cont.),多分区分配的一个实例 内存空洞

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论