操作系统第六篇【存储器管理】(二)

简介: 笔记

可重定位分区分配


动态分区很完美地在内存初次分配阶段解决了内存空间浪费的问题。但是,内存是需要重复利用的。

随着任务的不断运行完毕,内存空间会被回收;同时,操作系统又会不断接收新的任务,内存空间会被分配

于是,当运行一个新任务时,只能从回收回来的分区上分配内存,一方面动态分区技术在一定程度上退化为固定分区,另一方面分配后余下的碎片(小块的内存空间)就被保留了下来,较小的内存空间被分配出去的可能性很小,造成了浪费(碎片)。

最终,内存空间会存在很多小块的空闲空间,而不再有大块的空闲空间,于是当较大型的任务到达时,没有足够的空间供分配(尽管这些小块的空闲内存空间之和比任务所需的空间大)

  • 针对动态分区中碎片之和大于任务所需空间的情况,考虑对内存空间采用紧凑技术进行整理,将已进入内存的任务所占有的内存空间尽量搬到较低的地址,相对的,空闲碎片的会被换到了高地址空间。
  • 当所有进入内存的任务都被搬到较低的地址后,空闲碎片都被移动到了内存空间的高地址空间。
  • 于是,所有的碎片被整合成了一个大块,从而可以装载任务。这就是可重定位的动态分区

将碎片合成一大块---可重定位的动态分区


实现


  • 1)动态重定位依靠硬件地址变换机构完成。
  • 2)地址重定位机构需要基地址寄存器(BR)和程序虚地址寄存器(VR)。
    指令或数据的虚地址(VA),也称为逻辑地址(LA)。内存地址MA(MA),也称物理地址(PA)
    实现逻辑地址到物理地址的转换,可以通过公式MA=(BR)十(VR)完成。

图5-10所示为指令或数据的逻辑地址到物理地址的转换过程

4.jpg5.jpg


优点


  • 1)可以对内存进行非连续分配。
  • 2)动态重定位提供了实现虚拟存储器的基础。
  • 3)有利于程序段的共享。

4 动态重定位分区的分配算法

  • 1)主干是动态分区的分配算法。
  • 2)在动态分区的基础上增加了紧凑技术。
  • 3)内存分配算法,如图5-11所示。


基本分页存储管理


上面的存储都是连续的内存分配技术,我们的分页存储是离散的

与其花费巨大的代价搬家,不如离散地存储在这些碎片中

  • 一种离散存储的方法是面向系统的,将内存用户空间划分为大小相等(2nB,如4KB)的物理块;
  • 另一种方法是面向用户的,将内存空间划分为物理段,32位系统中,以高16位表示段号,低16位表示段内地址

这就是汇编语言中定义一个段时大小不可以超过64KB的根本原因。

离散存储思想产生的原因:

  • (1)紧凑技术的弊端
  • 尽管可重定位分区方式下的紧凑技术使得碎片得以利用,提高了内存空间的利用率。但这是以牺牲时间进行搬家而获得的,代价是很高的。
  • (2)求变创新
  • 从内存连续分配的思想上突破、创新,提出离散的内存分配方式,从而使存在大量碎片和无足够大的连续空间供分配这一矛盾得以缓解

离散存储的基本概念

  • 将一个进程直接分散地装入到许多不相邻的分区中,而无须“紧凑”的分配方式,称为离散分配。
  • 离散分配的种类包括分页存储管理、分段存储管理和段页式存储管理。
  • 不具备页面对换功能的分页存储管理方式称为基本分页存储管理方式


分页存储管理


分页存储管理的基本方法

  1. 页面和物理块
  2. 页面。
  3. 页面大小。

将用户作业的地址空间分成若干个大小相同的区域,称为页面或页,并为每个页从“0”开始编号;

相应地,主存空间也分成与页大小相同的若干个存储块,或称为物理块或页框(frame),并且采用同样的方式为它们进行编号,从0开始:0块,1块,…,n-1块

分页地址中的地址结构如下:

6.png

对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得

7.png


页表


在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表

8.jpg

进程在运行期间,需要对程序和数据的地址进行变换,即将用户地址空间中的逻辑地址变换为内存空间中的物理地址,由于它执行的频率非常高,每条指令的地址都需要进行变换,因此需要采用硬件来实现。页表功能是由一组专门的寄存器来实现的。一个页表项用一个寄存器。

9.jpg

由于页表是存放在内存中的,这使CPU在每存取一个数据时,都要两次访问内存。第一次是访问内存中的页表,从中找到指定页的物理块号,再将块号与页内偏移量W拼接,以形成物理地址。第二次访问内存时,才是从第一次所得地址中获得所需数据(或向此地址中写入数据)。因此,采用这种方式将使计算机的处理速度降低近1/2。可见,以此高昂代价来换取存储器空间利用率的提高,是得不偿失的。

因此,我们采用:具有快表的地址变换机

10.jpg


分段存储管理


用户把自己的作业按照逻辑关系划分为若干个段,每个段都从0开始编址,并有自己的名字和长度。因此,程序员们都迫切地需要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的,这不仅可以方便程序员编程,也可使程序非常直观,更具可读性。

在实现对程序和数据的共享时,是以信息的逻辑单位为基础的

  • 分页系统中的“页”只是存放信息的物理单位(块),并无完整的逻辑意义,这样,一个可被共享的过程往往可能需要占用数十个页面,这为实现共享增加了困难。

信息保护同样是以信息的逻辑单位为基础的,而且经常是以一个过程、函数或文件为基本单位进行保护的。

在实际应用中,往往存在着一些段,尤其是数据段,在它们的使用过程中,由于数据量的不断增加,而使数据段动态增长,相应地它所需要的存储空间也会动态增加。然而,对于数据段究竟会增长到多大,事先又很难确切地知道。对此,很难采取预先多分配的方法进行解决。

目录
相关文章
|
5月前
|
算法
深入理解操作系统的虚拟内存管理
【7月更文挑战第24天】在现代操作系统中,虚拟内存管理是一项至关重要的技术,它允许系统拥有比物理内存更大的地址空间,从而提升多任务处理能力。本文将详细探讨虚拟内存的工作原理、关键技术及其对操作系统性能的影响,帮助读者构建对虚拟内存管理的深入理解。
|
5月前
|
Cloud Native Devops 数据库
云原生架构:未来软件开发的引擎深入理解操作系统的虚拟内存管理
【7月更文挑战第30天】在这篇文章中,我们将深入探讨云原生架构的概念,以及它如何改变软件开发的世界。我们将从云原生的基本概念开始,然后深入到它的关键技术和实践,最后讨论它对软件开发的未来影响。无论你是软件开发者,还是IT专业人士,这篇文章都将为你提供深入理解和掌握云原生架构的重要信息。 【7月更文挑战第30天】在数字世界的构建中,虚拟内存是操作系统不可或缺的一环。本文将探索虚拟内存的核心概念、工作机制及其对现代计算环境的重要性,同时揭示其背后的技术细节和面临的挑战。
52 3
|
5月前
|
缓存 算法
操作系统的虚拟内存管理
【7月更文挑战第29天】本文深入探讨了操作系统中至关重要的虚拟内存管理机制,包括其设计原理、实现方式以及在现代计算机系统中的作用。通过分析分页系统、分段系统、页面置换算法和内存分配策略,揭示了虚拟内存如何优化资源利用,提高系统性能,并确保进程间的安全性与隔离性。此外,文章还讨论了虚拟内存管理面临的挑战及未来的发展方向。
|
5月前
|
缓存 算法 程序员
深入理解操作系统中的虚拟内存管理
【7月更文挑战第14天】本文将深入探讨操作系统中至关重要的组成部分——虚拟内存管理。通过分析其设计原理、实现机制以及性能优化策略,旨在为读者提供一个全面而深入的视角来理解虚拟内存在现代操作系统中的作用和重要性。文章不仅会涵盖虚拟内存的基本概念和功能,还会讨论其在多任务处理、内存保护及系统性能提升方面的贡献。
|
5月前
|
算法 Linux 调度
操作系统中的虚拟内存管理:原理与实现
本文深入探讨了操作系统中虚拟内存管理的核心概念,包括分页、分段、需求分页和页面置换算法。通过分析现代操作系统如Linux和Windows的虚拟内存实现机制,文章揭示了虚拟内存在提升内存利用率、进程隔离和保护内存中的关键作用。同时,讨论了虚拟内存管理面临的挑战,如内存泄漏、碎片化以及性能开销,并提出了相应的优化策略。
|
6月前
|
算法
深入理解操作系统中的虚拟内存管理
【6月更文挑战第19天】在现代操作系统中,虚拟内存管理是一个至关重要的组件。它不仅使得程序能够在有限的物理内存中运行更大的地址空间,还为系统提供了多任务处理能力。本文将深入探讨虚拟内存的概念、实现机制以及它在操作系统中的重要性,同时也会讨论虚拟内存管理中遇到的挑战和解决方案。
84 4
|
5月前
|
Windows 内存技术
nvm 管理和切换 node版本(windows操作系统)
nvm 管理和切换 node版本(windows操作系统)
90 0
|
6月前
|
存储 算法 调度
深入理解操作系统:虚拟内存管理的艺术
【6月更文挑战第29天】在数字世界的无限风光背后,隐藏着一个不为人知的复杂世界——操作系统。本文将揭开操作系统中最为精妙的设计之一——虚拟内存管理的神秘面纱,从基础概念出发,逐步探索其背后的原理与实现机制。我们将通过生动的比喻和实例,带领读者领略虚拟内存如何在有限的物理资源上创造出无限的可能,以及它如何优化系统性能,提升用户体验。准备好了吗?让我们一同潜入操作系统的心脏,一探究竟。
|
6月前
|
缓存 算法 调度
操作系统的虚拟内存管理技术探究
虚拟内存管理是现代操作系统中的一项核心技术,它允许系统使用比物理内存更多的内存。本文将深入探讨虚拟内存的概念、实现机制以及它在操作系统中的应用,旨在为读者提供一个关于虚拟内存管理技术的全面视角。
68 0
|
6月前
|
算法 UED
探索操作系统的虚拟内存管理
在数字时代的浪潮中,操作系统作为计算机系统的核心,其性能和稳定性至关重要。本文深入探讨了操作系统中一个关键组成部分——虚拟内存管理,旨在揭示其工作原理、实现方式以及优化策略。通过分析虚拟内存的概念、分页与分段机制、内存分配算法,以及页面置换策略,本文旨在为读者提供对虚拟内存管理的全面理解,并展示其在现代操作系统中的应用与挑战。
36 0