3.1.4内存的分配与回收

全知识整理目录

操作系统整理的目录,包括了整理的所有操作系统的知识。


目录

概述

单一连续分配

固定分区分配

动态分区

内部碎片外部碎片


概述

内存是怎样进行分配和回收的呢?

内存的分配和回收,也像进程调度那样,是根据一些算法或规则来实现的,而我们需要了解的是这些算法或规则。

而本节所了解的,都是连续分配。

单一连续分配

单一连续分配的方式中,内存被分为系统区和用户区,系统区位于内存的低地址部分,用于存放系统的相关数据,用户区则存放用户的相关数据。

内存中只能有一道用户程序,用户程序独占整个用户区空间。

优点:实现简单,无外部碎片,可用采用覆盖技术扩充内存,不一定要采用内存保护。

缺点:只能用于单用户,单任务的操作系统,存在内部碎片,效率低。

 

3.1.4内存的分配与回收_第1张图片

 

固定分区分配

随着多道程序的出现,内存也需要支持多道程序。所以将用户区的空间划分为多个大小相等(或不等)的分区,在每一个分区中只加入一道作业。这就是最简单的运行多道程序的方式。 

3.1.4内存的分配与回收_第2张图片

分区说明表

要实现分区分配,还需要建立一个分区表,来实现各个分区的分配和回收。每个表对应一个分区,通常按照分区的大小来排列。

3.1.4内存的分配与回收_第3张图片

 当程序要装入内存的时候,首先的是要查询分区表,然后找到一个满足的分区来分配给程序。

优点:实现简单,无外部碎片。

缺点:当分区实在是太大的时候,所有分区都不能满足,这时候需要使用覆盖技术来解决,但是会产生内部碎片,效率低。

动态分区

动态分区,又叫可变分区分配,没有先划分好的分区,而是在进程进入内存的时候动态划分分区。

3.1.4内存的分配与回收_第4张图片

 

但是根据动态分区算法,出现的不一定是这样的顺序放置,多数情况是间隔放置的。再记录分区大小,起始地址等。

3.1.4内存的分配与回收_第5张图片3.1.4内存的分配与回收_第6张图片

 而至于动态分区算法,是后面需要主要了解的东西。

内部碎片外部碎片

外部碎片:就是分配内存的时候,存在一些比较小的内存无法利用,如所有进程都需要3> mb的进程,而此时存在一个2mb的空间,那个这个空间就一直无法被使用,就叫做外部碎片。

ps:外部碎片可以通过紧拼,紧凑的技术来去除。就是将多个小的内存空间连续使用,成一个大的空间。

内部碎片:分配给进程一个内存空间,但是无法完全使用。如当前分配20mb给需要18mb进程,那么就存在2mb无法使用,就是内部碎片。

简而言之,内部碎片是分配之后无法使用的空间,外部碎片是分配时无法使用的空间。

 

 

 

 

 

 

 

你可能感兴趣的:(操作系统,os,内存)