操作系统笔记(2)

内存

内存关系需求

重定位
逻辑组织
保护
物理组织
共享

内存分区

内存管理的主要操作的主要操作时处理器把程序装入内存中执行,设计一种称为虚存(虚拟内存)的复杂方案。
虚存基于分段和分页这两种基本技术,或基于这两种技术中的一种。

固定分区

大多是内存管理都假定操作系统占据内存中,而内存中的其余部分则共多个用户进程使用。管理用户内存空间的最简方案就是对他分区,以形成若干边界固定的区域。

分区大小

固定分区的项中选择,一种是使用大小相等的风趣,此时≤分区大小的任何进程都可装入任何可用的分区中。
如果所有分区已满且没有进程处于就绪态或者运行态,则操作系统可以换出一个进程的所有分区,并装入另一个进程,使得处理器有事可做。

放置算法

对于大小相等的分区策略,进程在内存中的放置非常简单。只要存在可用的分区,进程就能装入分区。如果所有的分区都被处于不可运行的状态占据,那么这些进程中的一个必须被换出,以便为新进程让出空间。

对于大小不等的分度策略,把进程分配到分区有两种方法。

①最简单的方法:把每个进程分配到可以容纳他的最小分区。这种情况下,每个分区都需要维护一个调度队列,用于保存从这个分区患处的进程。
优点是,若所有进程都按这种方式分配,可以是每个分区内部浪费的空间(内部碎片)最少化。
缺点是,这样对于很多更小的进程,一些较大的分区会保持闲置
②改进方式:只提供一个调度队列面向所有分区,当一个进程需要装入内存时,选择可以容纳该进程的最小可用分区。若所有分区都已被占据,则必须进行交换。一般优先考虑换出能容按新进程的最小分区中的进程,或考虑一些诸如优先级之类的其他因素。也可以优先选择换出被阻塞的进程而非就绪进程。

动态分区

固定夫存在缺点,为了克服这些缺点,人们提出了一种动态分区的方法。

对于动态分区而言,分区的长度和数量是可变的。最初进程装入内存时,系统会给其分配一块与其所需容量完全相等的内存空间。

这样不断分配之后,内存末尾会剩下一块剩余空间,当装入一个新进程而剩余空间对于其来说太小时,需要换出占用内存比其大的进程,被换出的内存处于就绪挂起状态。另一个时刻,内存中没有一个进程时就虚的,但是处于就绪挂起状态的进程可用。由于内存中没有足够空间容纳该进程,就再换出一个进程,进入该进程。
无标题.png
如上,动态分区方法不错,但是容易形成很多剩余内存空间,造成内存利用率下降。这种现象称之为外部碎片,指在所有分区外的存储空间变成了越来越多的碎片。

克服这种缺点的一种技术就是压缩:操作系统不时地移动进程,使得进程占用空间连续,所有空闲空间连成一片。但是压缩的困难之处在于这是一个非常费时的过程,且会浪费处理器时间。另外压缩需要动态重定位的能力,也就是必须能够把程序从内存的一块区域移动到另一块区域。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章