存储器管理基本概念

一  存储器管理的目的
  •  为多道程序设计提供支持
  •  提高内存利用率
  •  简化内存的使用,为用户开发应用程序提供支持   

     多道次序设计的主要目的是提高微处理器的利用律。而为了实现多道程序的并行运行,存储器管理系统必须能够将内存分为多个部分,每部分都装入一道程序,以便多道程序的并行运行。

     影响内存利用率的一个重要因素是内存的管理开销。为了便于管理,内存分配有一个最小单位。小于该单位的内存请求,将按此最小单位分配内存,其多余的未使用空间被称为“碎片”。 减少碎片的方法,是缩小该基本单位。从内存的分区管理到分段管理再到分页管理和分段分页结合的段页式管理都体现了这一思路。

     为了方便用户使用,存储器管理应该提供相应的功能,以支持用户的应用程序开发。比如分段机制可以帮助用户按功能组织代码,共享存储器机制可以方便用户高速通信。 

二 基本概念

1 地址转换

     为了支持多道次序设计,方便用户使用,操作系统往往为单个任务提供一个相对独立的地址空间。这些地址空间都从0地址开始,到最高地址结束。这种地址空间称为逻辑地址空间,也可称为虚拟空间。而虚拟地址到实际物理内存地址的影射由操作系统维护。使用这种机制,可以使用户摆脱繁琐的内存管理。

     现代操作系统将存储器管理分为两个层次:内存和外存。内存是指计算机配备的物理内存。物理内存的地址是计算机内存的真实地址,也称绝对地址。外存可以是硬盘等大容量随机访问设备。

2 程序的装入

     在多任务环境下,程序要运行必须为之创建新任务。通常情况下,由装入程序(bootloader)读入该程序的数据和代码放置到合适的内存位置。该过程中,装入程序需要百该程序的逻辑地址转化成内存中的物理地址,该操作叫作地址变换或城地址映射。在多数情况下,地址变换过程都要进行地址的重新定位。重定位又可分为静态重定位和动态重定位两种方式。

  • 静态重定位

      静态重定位是在执行前就进行地址变换的方式。在程序装入内存开始运行后,知道次序运行结束,地址不再变动,这个工作往往是由重定位装入程序来完成的。这种重定位方式不需要硬件支持,实现起来比较简单,但程序一旦进行了重定位就再也不能移动也不能重新分配内存,所以不利于内存空的有效利用。

  • 动态重定位

      动态重定位是在次序执行过程中要访问指令或数据时才进行地址变换的方式。这种方式中,代码中的地址都是相对地址。在访问该地址时,需要将该地址与基准地址相加,得到真实的绝对地址后才能进行。为了提供地址转换的速度,动态重定位方式通常需要硬件的支持。

      通常,MMU中专门设置了用于地址定位的重定位寄存器,当存储管理系统为作业分配了一个内存区域后,就把该区的起始地址放到重定位寄存器中。这样一来,程序使用的地址将是它的逻辑地址和重定位寄存器的内容之和。

      为程序在内存中浮动提供了方便的手段。所以它有利于共享,对内存的使用较为方便灵活,而且更为有效。但这种方式增加了硬件支持,软件也较为复杂。

3 覆盖

           覆盖技术和交换技术是在多道环境下扩充内存的两种方法,用以解决在较小的存储空间中运行大型程序时遇到的矛盾。
           覆盖不需要任何来自操作系统的特殊支持,可以完全由用户实现,程序员只要把一个次序划分成不同的程序段,并规定好它们的执行和覆盖的顺序,操作系统即根据程序员提供的覆盖结构完成程序段之间的覆盖。
 
4 交换
 
           所谓“交换”是指把内存中暂时不能运行的进程或暂时不用的代码和数据换出到外存上,以便腾出足够的内存空间,把具备运行条件的任务或是任务所需要的数据和代码换入内存。合理的交换可以有效地提高内存的利用率和系统的吞吐率。
 
5 内存共享
 
           共享的内容包括:代码共享和数据共享,特别是代码共享要求代码必须是 纯代码
           内存共享的一个目的是通过代码共享节省内存空间,提高内存利用率;另一个目的是通过数据共享实现进程通信。
 
6 地址空间保护
 
           存储保护通常需要有硬件支持,并由软件配合实现。
           存储保护的内容包括:保护系统程序区不被用户有意或无意地侵犯;不允许用户次序读写不属于自己地址空间的数据,如系统区地址空间、其他用户程序的地址空间。
 
7 内存容量的“扩充”和虚拟存储器
 
           理想情况下,用户在编写程序时,不应该受到内存容量的限制,所以大多数操作系统都采用一定技术来“扩充”内存的容量,使用户得到比实际内存容量大得多的内存空间。
           内存容量“扩充”的基本原理如下:软件、硬件相互协作,将内存、外存结合起来统一使用。
 
三 内存管理分类
 
1 按照内存分配是否必须连续进行,内存管理分为 连续分配方式离散分配方式
 
2 按照内存分配是否支持超过真实物理内存的大小的地址空间,内存管理分为 实内存管理虚内存管理
 
四 早期连续内存分配
 
1 固定式分区
 
           固定式分区的基本思想是在系统生成时就将主内存划分为若干个分区,每个分区的大小可以不等,但事先必须固定,以后也不能改变。固定十分区在任务未装入时,分区的大小、树木已预先确定,这样容易造成分区内的碎片问题,从而影响内存的利用率。
特点:实行简单,使用于简单的多任务操作系统
 
2 可变式分区
 
           可变式分区是动态划分存储器的分区方法,它是在作业装入和处理过程中建立的分区,并且要使分区的容量正好能适应作业的大小。在任务进入系统前,将根据任务的大小申请所需存储容量,然后由系统实施分配。需要一定的分配算法,碎片整理需要移动用户分区中的程序,需要硬件的支持。
特点:相对复杂,需要硬件的支持软件也比较复杂
 
五 基于段、页的存储管理
 
           基于离散分配的思想,具体的分配方式:
  • 分页存储管理
  • 分段存储管理
  • 段页式存储管理

1 分页存储管理

             分页存储管理把系统中用到的地址空间分为两种。提供给用户次序使用的是基于逻辑地址的连续的地址空间,系统使用的是真实物理地址;由系统负责将连续的逻辑地址映射到物理上并不连续的实内存地址。
             当任务提出存储分配请求时,系统首先根据存储块大小(页面大小)把任务分成若干页。每页都装入一个物理块中。此时,物理块并不要求连续,只要建立起程序的逻辑页和内存的存储块之间的对应关系,借助动态地址变换,原本连续的用户程序在分散的不连续存储块中就能够正常投入运行。
 
            特点:需要硬件支持
 
2 分段存储管理
 
             分段机制需要编译程序的支持,目前,大多数流行的编译器都支持分段,它们往往将程序划分为代码段、数据段、未初始化数据段和其他一些附加信息段等。
              分段和分页存储管理有许多相似处,概念上是完全不同的:
  • 分页的任务地址空间是一维的线性地址空间,分段的任务地址空间是二维的。
  • 页的大小固定,段的长度是动态的。
  • 分页对用户是透明的,而分段是用户可见的。
  • 页是信息的物理单位,使用分页机制是为了实现离散分配;段是信息的逻辑单位,而使用分段是为了方便用户的编程。

    特点:需要硬件支持

3 段页式存储管理

      1)基本原理

       首先将用户的任务空间分成若干个段,再把每个段划分成若干个页。为了装入用户任务,内存空间也被划分为相同大小的页面,多个页按照段的长度组织在一起,可以装入用户对应段的消息。

       本质上说,段页式存储管理是用页式方法来分配和管理内存空间,用段式方法对用户程序进行逻辑划分。

    缺点:增加了硬件成本、系统的复杂性和管理上的开销。

以上的存储管理的共性:程序运行时,其整个程序必须都已经装载到内存中。

六 虚拟存储器管理

1 基本原理
 
               一作业运行之前,仅将当前要运行的那部分页面和段先装入内存便可以开始运行。在程序的运行中,发现所要访问的段不在内存中时,再由操作系统将其调入内存,程序便可继续执行下去。
 
                影响虚拟存储器容量的因素包括两个方面,首先是计算机硬件所能提供的大地址空间,这个地址空间一般受地址线数目的限制;其次,外存的大小也限制了所能交换的地址空间。多数情况下,外存大小往往是限制虚拟存储器容量的主要因素。
 
2 虚拟存储器的实现
 
               虚拟存储器的实现,都是基于离散分配方式实现的,虚拟存储技术主要分为虚拟页式存储管理和虚拟段式存储管理两种。
  • 虚拟页式存储管理

       是在分页存储管理的基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储系统。

  • 段式存储管

       是在分段存储管理的基础上,增加了请求调段功能、分段置换功能所形成的页式虚拟存储系统。

       虚拟分段和虚拟分页系统的实现都需要一些额外的支持:

  • 扩充管理数据结构。
  • 缺页/段中断机制。当用户程序访问当前不在内存中的页面时,会引起缺页/段中断,以请求操作系统将所缺的页面/段调入内存。
  • 地址变换机构。扩充分页/段的地址变换机构,以支持动态调页功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值