当前位置: > 财经>正文

操作系统:内存连续分配方式采用的几种算法及各自优劣 外汇理财可操作方案有哪几种形式呢图片

2023-07-31 18:13:15 互联网 未知 财经

操作系统:内存连续分配方式采用的几种算法及各自优劣

连续分配方式(交换技术),是指为一个用户程序分配一个连续的内存空间。它主要包括单一连续分配、固定分区分配和动态分区分配。

注意:此处的连续内存分配是将整个进程的数据整块加载到内存之中。

1.单一连续分配(单任务处理)

内存在此方式下分为系统区和用户区,系统区仅提供给操作系统使用,通常在低地址部分;用户区是为用户提供的、除系统区之外的内存空间。这种方式无需进行内存保护。     这种方式的优点是简单、无外部碎片,可以釆用覆盖技术,不需要额外的技术支持。缺点是只能用于单用户、单任务的操作系统中,有内部碎片,存储器的利用率极低。

2.固定分区分配(内部碎片,无外部碎片)

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

       图3-4 固定分区分配的两种方法

固定分区分配在划分分区时,有两种不同的方法,如图3-4所示。

·        分区大小相等:用于利用一台计算机去控制多个相同对象的场合,缺乏灵活性。

·        分区大小不等:划分为含有多个较小的分区、适量的中等分区及少量的大分区。

为便于内存分配,通常将分区按大小排队,并为之建立一张分区说明表,其中各表项包括每个分区的起始地址、大小及状态(是否已分配),如图3-5(a)所示。当有用户程序要装入时,便检索该表,以找到合适的分区给予分配并将其状态置为”已分配”;未找到合适分区则拒绝为该用户程序分配内存。

这种分区方式存在两个问题:

一是程序可能太大而放不进任何一个分区中,这时用户不得不使用覆盖技术来使用内存空间;

二是主存利用率低,当程序小于固定分区大小时,也占用了一个完整的内存分区空间,这样分区内部有空间浪费,这种现象称为内部碎片。

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

                       图3-5 固定分区说明表和内存分配情况

3.动态分区分配

大白话:我事先不将内存划分为一个一个的块,而是在我的进程被调入内存的时候根据内存当前的状态来进行分配空间,由于事先不知道内存是什么状态,且随着进程的完成,内存也会进行回收,因此称为内存的动态分配。

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

图3-6动态分区

如图3-6所示,系统有64MB内存空间,其中低8MB固定分配给操作系统,其余为用户可用内存。开始时装入前三个进程,在它们分别分配到所需空间后,内存只剩下4MB,进程4无法装入。在某个时刻,内存中没有一个就绪进程,CPU出现空闲,操作系统就换出进程2,换入进程4。由于进程4比进程2小,这样在主存中就产生了一个6MB的内存块。之后CPU又出现空闲,而主存无法容纳进程2,操作系统就换出进程1,换入进程2。

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

在进行动态内存分配时。有两种方式跟踪内存的使用情况。

一种是位图,另一种是空闲链表。

a)为位图表示   b)为空闲链表表示 

1)位图

将内存划分为小到几字节大到几千字节的分配单元。每个分配单员对应于位图中的一位。0表示空闲,1表示占用。(或者相反)

这个分配单元该设置为多少才合适呢?

内存单元设置的小,位图就会很大;位图设置的大,位图就会较小。

每次在将占有K个内存单元的进程调入内存的时候都需要进行搜索位图,这一个操作比较耗时。

2)使用空闲链表

使用一个链表来记录已分配内存段和空闲段。链表的一个节点表示一个进程或者一个空闲区。(空闲区H,进程P,起始地址,长度,指向下一结点的指针)

在进程装入或换入主存时,如果内存中有多个足够大的空闲块,操作系统必须确定分配哪个内存块给进程使用,这就是动态分区的分配策略,考虑以下几种算法:

·        首次适配(First  Fit)算法:空闲分区以地址递增的次序

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。