内存管理(连续分配篇)

前言:

内存管理是操作系统设计中最重要和最复杂的内容之一。虽然计算机硬件一直在飞速发展,内存容量也在不断地增长,但仍然不可能将所有的用户进程和系统所需要的全部程序与数据放入储存,因此操作系统必须对内存空间进行合理的划分和有效的动态分配

连续分配方式:是指为一个用户程序分配一个连续的内存空间,比如说某用户需要1GB的内存空间,连续分配方式就在内存空间中为用户分配一块连续的1GB空间。连续分配方式主要包括单一连续分配固定分区分配和动态分区分配

单一连续分配内存在,此方式下分为系统区和用户区。系统区仅供操作系统使用,通常在低地址部分,用户趋势为用户提供的除系统区之外的内存空间。这种方式无需进行内存保护,因为内存中永远只有一道程序,因此肯定不会因为访问越界而干扰其他程序

优点:简单,无外部碎片,可以采用覆盖技术,不需要额外的技术支持

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

内部碎片分配给某进程的内存区域中,如果有些部分没有用上,就是内部碎片

固定分区分配是最简单的一种多道程序存储管理方式。它将用户内存空间划分为若干固定大小的区域,每个分区只装入一道作业。当有空闲分区时,便可在从外存的后备作业队列中选择适当大小的作业装入该分区,如此循环

为了便于内存分配,通常将分区按大小排队,并为之建立一张分区说明表。其中个表象,包括每个分区的食指大小及状态是否已分配

这种分区方式存在两个问题,一是程序可能太大而放不进任何一个分区中,这是用户不得不使用覆盖体覆盖使用内存空间,二是储存应用率低。

当程序小于固定分区大小时,也占用一个完整的内存分区空间,这样分区内部就存在空间浪费,这种现象成为内部碎片

固定分区是可用于多道程序设计的最简单的存储分配,无外部碎片,但不能实现多新城。多进程共享一个主存区,所以存储空间用于的固定分区分配很少用于现在通用的操作系统中,但在某些用于控制多个相同对象的控制系统中仍发挥一定的作用

动态分区分配又可称为可变分区分配,是一种动态划分内存的分区方法。这种分区方法不预先划分内存,而是在进程装入内存中,根据内存进程的大小动态的建立分区,并使分区的大小正好适合进程的需要。因此,系统中分区的大小和数目是可变的

动态分区在开始分配时是很好的,但之后会导致内存中出现许多小的内存块。随着时间的推移,内存中会产生越来越多的碎片,内存的利用率、利用率随之下降。这些小的内存块称为外部碎片,只在分区外的存储空间会变成越来越多的碎片。对于固定分区中的内部碎片正好相对。客户外部碎片可以通过紧凑技术来解决,即操作系统不时地对进程进行移动或整理,但这需要动态重定位寄存器的支持,且相对费时。紧凑的过程,实际上类似于Windows系统中磁盘整理程序,只不过后者是对外存空间的紧凑


内存管理(连续分配篇)


首次适应算法,空闲分区以地址递增的次区域链接分配内存时顺序查找,找到大小能满足要求的第一个空闲分区.

最佳适应算法共享分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区。

最坏适应算法又称最大适应算法,贡献分区域容量递减的次序链接,找到第一个能满足要求的空闲分区,及挑选出最大的分区

临近适应算法又称循环首次适应算法,由首次适应算法演变而成,不同之处是分配内存时,从上次查找结束的位置开始继续查找.

在这几种方法中,首次适应算法不仅是最简单的,而且通常也是最好和最快的。在unix系统的最初版本中,就是使用首次适应算法为精神分配内存空间的。他使用数组的数据结构来表现。不过,首次适应算法会使得内存的地址部分出现很多小的空闲分区,而每次分配查找时都要经过这些分区,因此增加了查找的开销。临近适应,算法试图解决这个问题,但实际上它常常导致在内存的末尾分配空间。分裂成小碎片,它通常比首次适应算法的结果要差

最佳适应算法虽然称为最佳,但性能通常很差,因为每次最佳的分配会留下很小的难以利用的内存款,会产生最多的外部碎片。对话适应算法与最佳适应算法相反,他选择最大的可用快。这看起来最不容易产生碎片,但是却把最大的连续内存划分开会,很快导致没有可用的大内存,因此性能也非常差


内存管理(连续分配篇)

展开阅读全文

页面更新:2024-03-10

标签:分配   作业   分区   算法   碎片   内存空间   进程   大小   操作系统   内存   方式   程序   动态   用户   系统   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top