zoukankan      html  css  js  c++  java
  • 分段、分页&&内存碎片、外存碎片

      关键词: 分段、分页、内存碎片、外存碎片


    1、分段&&分页:

    分页与分段都是磁盘的存储单位。
    (1)分页:
    ①定义:在内存空间中,将内存空间划分为一个又一个大小相等的基本单位,称为“块”,也称为“页框”。将用户程序的地址空间按照"块"为基本单位划分成若干个大小相等的区域,这一个又一个的区域就称为页。 
     
    ②内存分配规则:以块为单位进行存储。每一页存储在指定的块中,每一页在计算机中可以不相邻存储, 可以存储在不相邻的页框中。它是磁盘和内存之间传输数据块的最小单位。
     (注意:大小不足一个页也必须占据一个块。这也是产生内存碎片的原因。)
     
    (2)分段:
    ①定义:将用户程序的地址空间按照自身的逻辑关系划分成若干个大小不等的区域,称为“段”。每一个段有一个段名, 每一个段从0开始编址。一般而言,这个区域比分页中的区域大,因此它可以存储更多的内容,存储更加完整的一段信息。
     
    ②内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。
     
    (3)分段与分页的对比:
    ①分页中的区域大小相等;分段中的则不等。
    ②分页是信息的物理地址,磁盘和内存之间传输数据块的最小单位;分段是信息的逻辑地址,它是相对于信息来划分的。
    ③分页中作业的地址空间是一维的;给出一个地址,那么就能够确定其页号和页内地址(页的长度),因此就能够找到相应的内容
      分段中作业的地址空间是二维的。需要通过段号和段内地址来确定。
    分析:
      都是采用线性方式计算的,但是每一页的长度是确定的,而每个段的长度是不同的。所以说分段是二维的,因为需要确定两个变量段号和段的长度;而分页是一维的,因为只需要确定页号即可
    ④分页允许存储于不连续的区块,因为每一页就对应于一个块,而每一页是可以非连续存储的,所以就可以了;
    对于分段,每一段的所有内容必须存储在连续的区域中,不同的段可以存储在不连续的区域中。
    ⑤分页对于用户来说是不可见的,是系统自己确定的;分段对于用户来说则是确定的
    ⑥分页存储会产生内存碎片,不会产生外存碎片;
       分段存储不会产生内存碎片,会产生外存碎片。
     
    注意:段页式存储:
    首先进行分段,接着再对每一段进行分页。此时每一段需要存储于连续的区域,而因为此时以块作为基本的存储单位,所以在一定情况下,一个段就需要存储在多个连续的块中(除非段的长度==块的长度),不同的段则可以存储在不连续的存储区域。
     

    2、内存碎片&&外存碎片:

    (1)性质不同:
    ①内存碎片:指的是已经被分配出去的,但是却没有被使用的内存空间。  因为基本存储单位的限制
    ②外存碎片:指的是还没有被分配的,但是由于太小或者是不连续,而导致不满足要求,所以没办法被分配的内存空间
     
    (2)存储位置不同:
    ①内存碎片是存储于已分配区域内部的
    ②外存碎片是存储于未分配区域的
     
    (3)状态不同:
    ①内存碎片:其他进程没办法使用它,因为它被某一个进程占有
    ②外存碎片:其他进程没办法使用它,因为它可存储的位置不连续或者是太小了
     

    3、存储方式与碎片的关系:

    (1)分页存储会产生内存碎片、不会产生外存碎片。
    (2)分段存储:会产生外存碎片、不会产生内存碎片。
    (3)段页式存储:产生内存碎片、外存碎片。
     
    参考资料:
  • 相关阅读:
    boost库:函数对象
    boost库:智能指针
    linux 查看和修改文件时间
    linux正则表达式
    UVA
    UVA
    UVA
    UVA
    UVA
    对JavaScript的认识?
  • 原文地址:https://www.cnblogs.com/axing-articles/p/11409998.html
Copyright © 2011-2022 走看看