[操作系统] 内存管理策略:页式、段式、段页式

18人阅读 评论(0) 收藏 举报
分类:

本文内容参考自《操作系统概念第七版》、《操作系统精髓与设计原理 原书第六版》

前言

为了解决外部碎片问题,一种可行的方案是允许物理地址空间为非连续的,具体的实现技术包括:分页、分段以及两者的合并段页式管理

页式

实现分页的基本方法涉及将物理内存分为固定大小的块,成为;而将逻辑内存也分为同样大小的块,称为。当需要执行进程时,该进程的页会被调入到可用的内存帧中。

  • 分页的硬件支持


CPU生成的每个地址分为两个部分:页号(p)和页偏移(d)。页号作为页表中的索引。页表中包含每页所在物理内存的基地址,这些基地址与页偏移的组合就形成的物理地址,就可交送给物理单元。


  • 内存的页模型



页大小是由硬件决定的,通常为2的幂。选择页的大小为2的幂可以方便地将逻辑地址转换为页号和页偏移。如果逻辑地址空间为2^m,且页大小为2^n,那么逻辑地址的高m-n位表示页号,而低n位表示页偏移。这样,逻辑地址可以表示为:



  • 举例说明页和帧(页框)的用法:





采用分页技术不会产生外部碎片,因为每个帧都可以分配给需要它的进程,不过分页有可能产生内部碎片,因为进程所需要的内存可能不是页的整数倍,那么最后一个帧就可能用不完。举个栗子更好说明~

页大小为2048B,一个大小为72776B的进程需要35个页和1086B,该进程就会得到36个帧,因此就有2048-1086=962B的内部碎片,最坏情况下,一个需要n页再加上1B的进程,需要分配n+1个帧,这样就几乎产生了一整个帧的碎片。


段式

采用分页内存管理有一个不可避免的问题:用户视角的内存和实际物理内存的分离。用户通常更愿意将内存看做是一组不同长度的段的集合,这些段之间并没有一定的顺序,如下图:


分段就是支持这种用户视角的内容管理方案,逻辑空间由一组段组成,每个段有自己的名称和长度。在段式管理策略中,地址指定了段号和段内偏移,因此用户通过两个量来指定地址:段号+偏移


  • 分段的硬件支持


  • 内存的段模型

每个进程通过维护一个段表来管理段式内存,系统也会维护一个内存中的空闲段列表,如上图所示,每个段表必须给出相应的段在内存中的起始地址,还必须指明段的长度,以确保不会使用无效的地址。


页式和段式的异同

  • 页式和段式管理策略都不会产生外部碎片,但都有可能产生内部碎片
  • 页的大小是统一的,而段的大小是可变的
  • 采用分页会导致用户视角的内存和实际内存的分离,即使用户视角的内存和实际物理内存不一样,而分段正好可以支持用户视角,使用户视角的内存和实际物理内存分布保持一致
  • 分页对程序员来说是透明的,用户指定一个地址,该地址通过硬件分为页码和偏移,这些程序员是看不见的;而分段对程序员来说通常是可见的,用户通过两个量:段号和偏移来指定地址,这两个量作为组织程序和数据的一种方便手段提供给程序员,程序员可以通过这两个量把程序和数据指定到不同的段(程序员必须清楚段的最大长度)
查看评论

操作系统内存管理--简单、页式、段式、段页式

一、内存管理的目的和功能 内存一直是计算机系统中宝贵而又紧俏的资源,内存能否被有效、合理地使用,将直接影响到操作系统的性能。此外,虽然物理内存的增长现在达到了N个GB,但比物理内存增长还快的是程序,...
  • guoweimelon
  • guoweimelon
  • 2016年03月11日 12:45
  • 5816

操作系统内存管理——分区、页式、段式、段页式管理

1. 内存管理方法         内存管理主要包括虚地址、地址变换、内存分配和回收、内存扩充、内存共享和保护等功能。  2. 连续分配存储管理方式       连续分配是指为一个用户程序分配...
  • ajian005
  • ajian005
  • 2014年01月13日 22:19
  • 2029

操作系统存储管理之分段式与段页式虚拟存储系统

分段式虚拟存储系统分段式虚拟存储系统把作业的所有分段的副本都存放在辅助存储器中,当作业被调度投入运行时,首先把当前需要的一段或几段装入主存,在执行过程中访问到不在主存的段时再把它们装入。因此,在段表中...
  • qwe6112071
  • qwe6112071
  • 2017年04月24日 13:22
  • 1772

[操作系统]页式、段式、段页式存储管理

参考:http://www.cnblogs.com/suncoolcat/p/3400353.html 离散的存储管理方式:页式、段式、段页式,为获得一条指令或数据,分别需要访问内存二次,二次,三次...
  • lady_lili
  • lady_lili
  • 2016年09月22日 16:12
  • 310

内存管理第一谈:段式管理和页式管理

对于内存管理这个操作系统中庞大的体系,实在是容易让人望而止步,市面上介绍这块知识的书籍其实很多,但是由于书面语言的缘故,总感觉有些东西晦涩难懂,下面内容只是想把一些书面语言转换为比较容易理解的内容,希...
  • jy1075518049
  • jy1075518049
  • 2015年02月07日 20:45
  • 1868

段式存储、页式存储及段页式存 详解

段式存储、页式存储及段页式存储   转载▼   分段式存储方式 [百度百科同名词条,下同] 段式管理(segmentation),是...
  • qq_25843323
  • qq_25843323
  • 2016年01月04日 17:49
  • 1579

Window内存管理方式:页式 段式 段页式

Windows内存管理方式主要分为:页式管理、段式管理和段页式管理 首先看一下“基本的存储分配方式”种类:        1.  离散分配方式的出现   由于连续分配方...
  • u012813201
  • u012813201
  • 2017年04月12日 17:18
  • 1136

页式管理和段式管理、段页式管理的区别

一 页式管理  1 页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一...
  • yuehailin
  • yuehailin
  • 2016年12月14日 22:47
  • 2936

存储管理之页式、段式、段页式存储 以及 优缺点

首先看一下“基本的存储分配方式”种类:        1.  离散分配方式的出现   由于连续分配方式会形成许多内存碎片,虽可通过“紧凑”功能将碎片合并,但会付出很大开销。于...
  • smilesundream
  • smilesundream
  • 2017年04月12日 23:21
  • 319

linux内存管理-段式和页式管理

该博文参考国嵌视频和http://www.cnblogs.com/image-eye/archive/2011/07/13/2105765.html,在此感谢作者。 一、地址类型 物理地址...
  • hailin0716
  • hailin0716
  • 2014年01月27日 17:45
  • 2992
    个人资料
    持之以恒
    等级:
    访问量: 1751
    积分: 493
    排名: 10万+