美文网首页a1f594e7e302
操作系统内存的连续与非连续分配管理方式

操作系统内存的连续与非连续分配管理方式

作者: 傻疯子 | 来源:发表于2022-02-01 22:48 被阅读0次

    1.单一连续分配
    内存分为系统区和用户区,系统区仅供操作系统使用,通常在低地址部分,用户区为用户提供

    优点:
    无须进行内存保护,不会出现越界异常
    实现简单,无外部碎片,采用覆盖技术,不需要额外技术支持

    缺点:
    只适用于单用户,单任务的操作系统
    存在内部碎片,存储器利用率低

    2.固定分区分配
    种类:
    分区大小相等:用一台计算机去控制多个相同对象的场合,缺乏灵活性
    分区大小不等:划分为多个较小的分区,适量的中等分区和少量的大分区

    优点:适用于多道程序的存储,无外部碎片
    缺点:
    程序太大,无法进入任何一个分区
    主存利用率低,存在内部碎片
    不能实现多进程共享一个主存区

    3.动态分区分配
    在进程装入内存的时候,根据内存的大小动态的建立分区

    优点:分区大小可以根据实际情况进行分配

    缺点:存在外部碎片,最后导致主存利用率下降(采用紧凑技术可以缓解这种缺陷)

    动态分配算法:
    首次适应算法:空闲分区按照地址递增的顺序进行查找,找到第一个满足要求的分区进行分配
    优点:综合看性能最好。算法开销最小,回首分区后一般不需要对空闲分区队列进行重新排序

    最佳适应算法:
    按照容量递增的顺序进行查找,找到第一个满足要求的分区进行分配
    优点:可以尽可能多地留下大片的空闲去
    缺点:性能较差,产生最多的外部碎片;回收分区后可能需要对空闲分区队列进行重新排序

    最坏适应算法(最大适应算法):
    空闲分区按照容量递减的次序进行查找,第一个满足条件的进行分配
    优点:可以减少难以利用的小碎片
    缺点:导致很快没有较大的内存, 性能很差;不利于大进程,算法开销大

    邻近适应算法(首次适应算法):
    分配内存时从上次查找结束的位置开始继续查找
    优点:算法开销小
    缺点:会使高地址的大分区也被用完

    4.非连续分配管理方式
    允许一个程序分散的装入不相邻的内存分区

    5.基本分页存储的管理方式
    (1)设计思想
    将主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位,进程以块为单位进行空间申请。
    分页存储与固定分区技术很像,但是其分页相对于分区又很小,分页管理不会产生外部碎片,产生的内部碎片也非常小

    (2)分页存储的基本概念
    页面和页面大小:进程中的块=页;内存中的块=页框(页帧);进程申请主存空间,为每个页面分配主存中可用页框,即页与页框一一对应
    页面大小要适中:页面太小:进程页面数过多,页表过程,增加内存占用,降低硬件地址转换效率;页面太大:页内碎片过多,降低内存利用率
    地址结构:页号(有多少页的编号)+页内偏移(页内存了多少东西)
    页表:为了便于在内存中找到进程的每个页面对应的物理块,系统为每个进程建立一张页表,记录页面在内存中对应的物理块号,页表一般放在内存中
    页表项:页号+物理内存中的块号(不要与地址结构搞混); 页表项的物理内存块号+地址结构中的页内偏移=物理地址

    (3)基本地址变换机构
    计算方式:
    页号P=A/L,页内偏移量W=A%L
    比较页号P和页表长度M,若P>=M产生越界中断
    页表中页号P对应的页表项地址=页表地址F+页号P页表项长度 取出该页表项内容b
    计算E=b
    L+W 使用E去访问内存

    页表项大小的设计应当尽量一页正好能装下所有的页表项

    分页管理存在的问题:地址变换过程必须足够快,否则访存速率会降低;页表不能太大,否则会降低内存利用率。

    组成:设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M
    页表的始址和页表长度放在进程控制块(PCB)中

    (4)具有块表的地址变换机构
    可优化方向:如果页表放在内存中,取地址访问一次内存,按照地址取出数据访问一次内存,共需要两次访问内存
    优化:地址变换机构中增加一个具有并行查找能力的告诉缓冲寄存器(块表),又称为相联存储器(TLB);相联存储器既可以按照地址查找也可以按照内容查找

    访问一个逻辑地址的访问次数:
    基本地址变换机构,两次缓存。
    具有块表的地址变换机构,快表命中,只需一次访存,快表未命中,需要两次访存

    变换过程:
    CPU给出逻辑地址后,先查询快表中是否命中
    若快表命中,直接从快表中该页对应的页框号,与页内偏移量拼接成物理地址
    若快表不命中,再按照正常方式从页表中查询相应页表项,并将该页表项存入快表中(按照一定策略)

    (5)两级页表
    如果页数过多,就会导致页表也过多,那么我们可以考虑设置一个用来储存页表的页表
    逻辑地址空间格式=一级页号+二级页号+页内偏移
    设计多集页表的时候,最后一定要保证顶级页表一定只有一个
    建立多级页表的目的在于建立索引,不必浪费主存空间去储存无用的页表项,也不用盲目式的查询页表项

    相关文章

      网友评论

        本文标题:操作系统内存的连续与非连续分配管理方式

        本文链接:https://www.haomeiwen.com/subject/skklkrtx.html