欢迎来到天天文库
浏览记录
ID:46206105
大小:2.33 MB
页数:70页
时间:2019-11-21
《操作系统课件-第5章存储器管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Chapter5存储管理现代计算机系统中存储器通常由内存和外存组成。内部存储器(简称内存,或称主存primarystorage)的管理是操作系统主要功能之一。内存区域一般被分为两大区域:系统区和用户区。系统区用于存放操作系统的内核程序和其它系统常驻程序,这些程序在系统初启时便装入系统区并一直驻留内存。对一个具体的计算机系统,系统区是固定的,一般占据内存的低地址部分。用户区用以存放用户程序和数据以及目态下运行的系统程序,它是用户进程可共享的内存区。存储管理方案:分区存储管理、页式存储管理、段式存储管理、段页式存储管理四种。5.1存储管理基本概念物理内存是由系统实际提供
2、的硬件存储单元(通常为字节)所组成。CPU可直接访问这些存储单元,因此,所有的程序指令和数据必须装入内存,才可得到执行。内存中所有的存储单元从0开始,依次编有一个编号,这个编号称为这个存储单元的内存地址或物理地址。CPU通过物理地址找到其中存放的要执行的指令或数据。内存的地址空间是一维的。内存的访问速度快,但其价格昂贵。计算机系统中实际的内存容量往往有限,不可能存入大量的程序与数据,只能暂时存放将要访问的进程的程序段和数据。而系统中大量的程序和数据存入价格较便宜的外部存储器中,待需要访问时,再将其调入内存。虚拟存储空间又称为用户地址空间,它不考虑物理内存的大小和信息
3、存放的实际位置,只规定每个进程中互相关连的信息的相对位置。与实际物理内存只有一个(单机系统中),且被所有进程共享不一样,每个进程都拥有自己的虚拟存储空间,且虚拟存储空间的容量是受计算机的地址结构和寻址方式确定。例如,直接寻址时,如果CPU的有效地址长度是16位,其寻址范围为0到64K。进程中的目标代码、数据等的虚拟地址组成的虚拟空间称为虚拟存储空间(Virtualmemory)。源于程序如何在内存中存储:1)一种是由程序员在程序中直接给出要访问的数据或指令的物理地址;2)使用符号地址,通过地址变换机构实现虚地址空间到物理地址空间的映射。存储管理的主要任务在多道的操作
4、系统中,允许多个进程同时装入内存,通过进程的并发执行来提高CPU的利用率。于是如何将可用内存有效地分配给多个进程,如何让进程的存储容量要求大于可用内存的大进程得以运行,如何保护和共享内存的信息等等,对存储管理提出一系列要求。现代操作系统中,存储管理的目的是既要方便用户,又要有利于提高内存的利用率,因此,存储管理有如下四个主要的任务:1.内存分配内存分配是多道程序共存内存的基础,它要解决的是如何为多个程序划分内存空间,使各个程序在指定的那一部分内存空间里运行。为此,操作系统必须随时掌握内存空间每个单元的使用情况(空闲还是占用);当有存贮申请时,根据需要选定分配区域,进
5、行内存分配;如果占用者不再使用某个内存区域时,则及时收回。内存分配有静态分配和动态分配两种方式。静态分配是在目标模块装入内存时一次分配进程所需的内存空间,它不允许进程在运行过程中再申请内存空间;动态分配是在目标模块装入内存时分配进程所需的基本内存空间,并允许进程在运行过程中申请附加的内存空间。2.地址变换一般情况下,一个进程装入时分配到的内存空间和它的虚拟地址空间是不一致的。因此,当进程在运行时,其所要访问的指令或数据的实际物理地址和虚拟地址是不同的。显然,如果在进程装入或在它执行时,不对有关的地址部分加以相应的修改,将导致错误的结果。为了保证程序的正确执行,须将程
6、序的虚拟地址转换为物理地址,完成由虚拟地址到物理地址的变换这一过程称为地址重定位或地址映射。虚拟地址空间的程序和数据经过地址重定位后,就变成可由CPU直接执行的绝对地址程序,其变换过程如图5-2所示。按照重定位的方式,地址重定位可分为静态重定位和动态重定位两种方式:(1)静态地址重定位是在目标程序装入指定的内存区域时,由装配程序完成地址的变换。程序中涉及直接地址的每条指令都要进行这样的修改。优点是不需要硬件支持。缺点:1)程序装入内存后不能在内存中移动;2)程序必须装入连续的地址空间内,不利于程序的共享,也不能充分利用内存空间。(2)动态地址重定位是指程序在执行的过
7、程中,在CPU访问内存地址之前,由地址变换(硬件)机构来完成将要访问的指令或数据的逻辑地址到物理地址的转换。地址变换机构通常设置一个公用的基址寄存器BR(BaseRegister),它存放现行进程在内存空间的起始地址。当CPU经逻辑地址访问内存时,地址变换机构将自动把该逻辑地址加上BR中的地址而形成实际物理地址。显然,只要改变BR的内容,就可以改变程序在内存的存放空间。由此可见,进行动态重定位的时机是在指令执行过程中,每次访问内存前动态地进行的。采取动态重定位可带来两个好处:(1)目标模块装入内存时无需任何修改,因而装入之后再搬迁也不会影响其正确运行,这对于后面
此文档下载收益归作者所有