[操作系统] 地址空间和交换技术

OS- -内存之地址空间 OS- -内存之虚拟内存 文章目录OS- -内存之虚拟内存一、内存1.无存储器抽象运行多个程序2.一种存储器抽象:地址空间地址空间的概念基址寄存器和变址寄存器交换技术交换过程空闲内存管理 一、内存 主存(RAM)是一件非常重要的资源,必须要认真对待内存。虽然目前大多数内存的增长速度要比旧M7094要快的多,但是,程序大小的增长要比内存的增长还快很多。 不管存储器有多大,程序大小的增长 速度比内存容量的增长速度要快的多。 下面我们就来探讨一下操作系统是如何创建内存并管理他们的。 经过多年的研究发现, 阅读详情

地址空间和交换技术



1. 地址空间的概念

在最初系统中没有对内存的抽象,直接使用物理地址进行存储,这种方法会带来严重的问题。

  1. 如果用户程序可以寻址内存的每个字节,它们就可以容易地破坏操作系统。从而使操作系统停止运行
  2. 想要同时运行多个程序很困难,因为使用物理地址很容易将数据覆盖。

要保证多个应用程序同时存在于内存并且不互相影响,要解决两个问题:保护和重定位。

一个很好的解决方法是创造一个内存抽象:地址空间。地址空间为程序创造了一种抽象的内存,地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(在特殊情况下想要共享除外)。例如,电话号码00000000000 ~ 99999999999就是一个地址空间。

2. 基址寄存器和界限寄存器

使用地址空间的困难点在于给每个程序一个自己的地址空间,假如A程序想要使用的地址为28,B程序想要使用的地址也为28。两个程序同时运行,我们不能让这两个程序相互影响,就要让他们想要使用的**逻辑地址**28对应不同的物理地址。

解决这个问题的一种方法是动态重定位。为每个CPU配置两个特殊的寄存器,基址寄存器和界限寄存器。当程序运行时,程序的起始物理地址装载到基址寄存器,长度装载到界限寄存器。这样程序在执行命令时,如果使用逻辑地址就会被解释为基址寄存器存储的物理地址。例如,此时程序想要访问逻辑地址28,使用命令 “JMP 28”,此时基址寄存器中的值为16412,硬件自动把这条指令解释为”JMP 16412”。

使用这种方法的缺点是,每次访问内存都需要进行加法和比较

3. 内存超载

当所有要执行的进程所需要的内存大于计算机的物理内存时,就不能把所有进程一直保存在内存中。这种情况叫做内存超载。要想解决这种问题,有两种方法。

  1. 交换技术
    即把一个进程完整调度内存,使该进程运行一段时间,然后把它存回磁盘。空闲进程主要存储在磁盘上,就不会占用内存。

  2. 虚拟内存
    可以使程序在只有一部分被调入内存的情况下运行。

4. 交换技术

内存交换技术

如图所示,阴影区域表示未使用的内存。开始时内存中只有进程A。之后创建进程B和C或者从磁盘将它们还如内存。d图显示A被交换到磁盘,D被调入到内存,然后B被调出,A再次被调入。

1. 预留空间

通过图片可见,使用这种方法,内存中有很多小的空闲区(阴影),这些小的空闲区大部分无法放置合适的进程,就会造成浪费。通过把所有进程向下移动,将这些空闲区合在一起,可以节省空间,这种方法叫做内存紧缩。但是这个操作会耗费大量CPU时间。

使用这种方法我们需要注意一个问题,即如果进程大小不是一成不变的而是动态的该怎么解决。若该进程与空闲区相邻,可以使用空闲区来将该进程所占内存扩大。但如果该进程与其他进程相邻,则无法扩大,此时只能交换出一个或多个进程。

为了解决这个问题,在为进程分配内存空间时,可以为它们分配一些额外的内存。而写回磁盘时,只写回实际使用的内存。

动态内存分配

a图为给进程分配多余空间的普通方法。如果进程有两个可增长段,如数据段和堆栈段,则可以使用b中的方法。

2. 空闲内存管理

在动态分配内存时,操作系统必须对内存进行追踪和管理。

  1. 使用位图的存储管理
    内存被划分为几个字到几千字节的分配单元,每个分配单元对应于为位图中的一位,0表示空闲,1表示占用(或者相反)。分配单元越小,位图越大。32n位的内存需要n位位图。再决定把一个占k个分配单元的进程调入内存中时,存储管理器需要搜索位图,在位图中找出有个k个连续为0的串。缺点是比较耗时。

    空闲内存管理

  2. 链表存储管理
    链表中的结点或者是一个进程,或者是两个进程间的空闲区。每一个结点包含:空闲区,进程的指示标志、起始地址、长度。当进程终止时,更新非常直接,如果邻居没有空闲去,只把自己变为空闲区就可以。如果邻居有空闲区则把该进程原有的地址与空闲区合并。所以双链表更好,因为便于找到前后邻居并合并。

    链表存储管理

5. 链表存储管理中用来创建进程的算法

假设存储管理器知道要为进程分配多大内存。

  1. 首次适配
    存储器沿着段链进行搜索,找到第一个足够大的空闲区,将空闲区的一部分给进程使用,另一部分变为新的空闲区(除非大小正好一样)。这种方法速度很快。

  2. 下次适配
    工作方式与首次适配相似,但是不同于首次适配每次从头开始寻找,下次适配会记录下上次分配的位置,然后从上次分配过的地方开始。

  3. 最佳适配
    搜索整个链表,找到能容纳进程的最小空闲区。浪费时间,并且会产生许多无用的小空闲区。

  4. 最差适配
    与最佳适配相反,该方法总是总是分配最大空闲区给进程。

    如果想要增加以上4个算法速度,可以为进程和空闲区维护各自的链表。但会增加内存释放速度,因为要将结点从进程链表删除,并加入到空闲区链表。
    
    可以将空闲区链表进行增序排序,以减少最佳适配的速度。当单独维护空闲区时,可以直接用空闲区存储信息,每个空闲区的第一个字可以为大小,第二个字可以指向下一个空闲区。
    
  5. 快速适配:为常用大小的空闲区维护单独列表。例如有一个n项的表。表的第一项指向大小4KB空闲区,第二项为8KB,第三项为12KB。以此类推,21KB的空闲区可以放在代表20KB链表中,也可以单独放置在特别链表中。

参考书目:现代操作系统第三版

(C++)模拟请求分页虚拟存储管理中的硬件地址变换过程 请求分页虚拟存储管理技术是把作业地址空间的全部信息存放在磁盘上。当作业被选中运行时,先把作业的开始几页装入主存并启动运行。为此在为作业建立页表时,应说明哪些页已在主存,哪些页不在主存。 立即下载

相关推荐

【重磅更新】CT/MRI LI-RADS 2024:肝细胞癌局部区域治疗后反应评估的核心突破与临床实践指南

减少过度治疗:辐射 LRT 的 Nonprogressing 类别避免了 “持续强化 = 存活” 的误判,降低不必要的再治疗风险;提高检出效率:非辐射 LRT 的辅助特征升级减少了 Equivocal 比例,更早识别存活肿瘤;统一评估语言:标准化的分类标准为放射科、肝病科、肿瘤科、肝移植科的多学科协作(MDT)提供了统一 “沟通工具”,助力治疗方案的精准制定。

楚山之石的博客 1225

操作系统:地址空间及其转换机制

本章介绍了内存的地址空间,讲解了地址转换机制

weixin_57341232的博客 2779

Win11下Android模拟器报HAXM未安装?三步搞定虚拟化配置(附终端命令)

本文详细解析了Win11下Android模拟器HAXM报错的解决方案,从虚拟化配置到终端命令实战。通过检查BIOS设置、调整Windows功能及执行PowerShell命令,三步搞定虚拟化配置问题,有效提升模拟器性能。特别针对Win11与HAXM的兼容性问题提供了专业指导。

weixin_29215815的博客 143

操作系统覆盖技术与交换技术的思想

无

一名在校大三学习JAVA 949

CH376S模块实战:如何通过串口轻松实现单片机与U盘的数据交互

本文详细介绍了如何利用CH376S模块,通过串口通信实现单片机与U盘的数据交互。文章从模块原理、硬件连接到核心指令集进行了全面解析,并提供了基于STM32的实战代码示例。CH376S模块极大地简化了USB协议和文件系统的复杂性,使开发者能快速为嵌入式设备添加便捷的数据存储与导出功能,适用于数据记录、配置导入等多种应用场景。

weixin_29165725的博客 457

Opencv全景图像处理实战:柱面与透视展开技术详解

本文详细解析了使用OpenCV实现全景图像处理的两种核心技术:柱面展开与透视展开。通过原理拆解与实战代码演示,指导开发者将360度环绕的鱼眼或球面图像转换为可用的平面视图,适用于街景展示、车载环视、室内测量等计算机视觉应用场景。

weixin_29081163的博客 582

操作系统-内存管理(覆盖与交换技术,内存空间的分配与回收(连续分配方式管理方式))

邻近适应算法的规则可能会导致无论低地址、高地址部分的空闲分区都有相同的概率被使用,也就导致了高地址部分的大分区更可能被使用,划分为小分区,最后导致无大分区可用(最坏适应算法的缺点)缺点:每次都选最大的分区进行分配,虽然可以让分配后留下的空闲区更大,更可用,但是这种方式会导致较大的连续空闲区被迅速用完。为了避免最好适应算法产生的大量内存碎片,在分配内存时优先使用最大的连续空闲区,这样分配后剩余的空闲区就不会太小,更方便使用。缺点:每次都选最小的分区进行分配,会留下越来越多的、很小的、难以利用的内存块。

dodamce的博客 2224

TDDFT计算软件Octopus学习笔记(二):基态计算(Si)

本文以硅为例,来进行基态计算。

陈啸的博客 7305

【操作系统学习笔记(七)】之 交换,覆盖技术,虚拟存储,高速缓冲存储

文章目录本文章由公号【开发小鸽】发布!欢迎关注!!!一. 交换技术和覆盖技术(一) 存储扩容概述(二) 覆盖技术1. 概述2. 原理3. 优缺点(三) 交换技术1. 原理2. 优缺点二. 虚拟存储(一) 局部性原理1. 时间局部性2. 空间局部性(二) 虚拟存储(三) 虚拟存储的优势(四) 虚拟存储的分类1. 请求分页(1) 概述(2) 抖动(3) 缺页中断(4) 影响缺页的因素(5) 多级页表(6) 页面调度策略(7) 页面淘汰算法(8) 常驻集2. 请求分段3. 请求段页式三. 高速缓冲存储器(一) 概

开发小鸽 2504

SAP Fiori 会话超时全解析:从 Launchpad 到 Identity Authentication 的统一策略

SAP Fiori会话超时机制解析与配置策略 本文深入探讨SAP Fiori项目中的会话超时机制,分析其对系统安全和用户体验的双重影响。文章系统拆解了SAP Fiori Launchpad与SAP Cloud Identity Services之间的会话超时工作原理,重点介绍了两种超时机制:服务器驱动的超时(通过SESSION_TIMEOUT_STOP_DATA_REFRESH参数控制)和UI驱动的超时(通过SESSION_TIMEOUT_INTERVAL_IN_MINUTES参数控制)。文中结合制造业产线

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 212

YOLOv8改进,YOLOv8主干网络替换为ShuffleNetV2

ShuffleNet V2的设计原则:1.减少内存访问成本:通过优化数据传输路径,减少内存访问延迟,提高整体运算速度。2.考虑平台特性:针对不同硬件平台的特性进行优化设计,确保在目标平台上的高效运行。3.结构简洁高效:采用简洁而高效的模块设计,降低计算复杂度,同时保持或提升模型的预测准确性。下图,以四种不同计算复杂度水平下的准确性(在ImageNet验证集上的分类),速度和FLOPs的测量结果。(a, c) 为GPU结果,批量大小为8。(b, d) 为ARM结果,批量大小为1。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1564

什么是交换空间?

操作系统把物理内存(physical RAM)分成一块一块的小内存,每一块内存被称为页(page)。当内存资源不足时,Linux把某些页的内容转移至硬盘上的一块空间上,以释放内存空间。硬盘上的那块空间叫做交换空间(swap space),而这一过程被称为交换(swapping)。物理内存和交换空间的总容量就是虚拟内存的可用容量。 用途: 物理内存不足时一些不常用的页可以被交换出去,腾给系统。 程序启动时很多内存页被用来初始化,之后便不再需要,可以交换出去。 ...

HappySundlut的博客 3252

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

操作系统之内存管理(1)

地址空间是进程可用于寻址内存的一系列地址集合,为程序提供抽象的内存环境,类似进程对 CPU 的抽象。每个进程默认拥有独立地址空间,相互隔离,避免因访问相同物理地址冲突,不过也存在进程共享地址空间的特殊场景。

2301_80937785的博客 1023

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

一文彻底搞懂操作系统“内存管理“【地址空间+重定位+虚拟内存+分页】

虚拟内存的核心思想 : 每个进程都有自己独立的地址空间, 这个空间被分为多个块, 每一块称为页或者页面。这些页都有连续的地址范围,被映射到物理内存;并不是所有的页都在内存中才能运行程序;当程序运行时,如果发现缺少了某个页,操作系统会将其缺失的部分装入内存重新执行失败的指令。 2.3.1.分页(下面默认计算机都使用了虚拟内存技术) 大部分的虚拟内存都使用了一种称为分页的技术,看下面这条指令 MOV REG,1000 //将地址为1000的内存单元复制到REG中 由程序产生的地址称为虚拟地址,它们

Kevinnsm的博客 2843

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

操作系统(二)内存地址空间与虚拟内存

计算机基本硬件结构 CPU 内存, 设备 操作系统的内存管理功能 抽象 逻辑地址空间 保护 独立地址空间 共享 访问相同的内存 虚拟化 更多的地址空间 在等待的进程可以先放在硬盘上去(虚拟地址空间) 操作系统管理内存不同方法 程序重定位 分段 分页 虚拟内存 按需分页虚拟内存 实现高度依赖硬件 MMU 地址空间 物理地址空间,硬件支持的地址空间 主存,磁盘 逻辑地址空间-一个运行得程序所...

loycine的博客 1048

操作系统处理内存超载的通用方法

前几天碰到一个题,操作系统如何处解决可寻址逻辑地址空间大而物理内存小的矛盾。      这个题目我就简单理解为操作系统处理内存超载的方法。     如果计算机的内存足够大,可以保存所有进程,那么问题似乎就不是问题,实际上,所有进程所需的内存数量总和通常要远远超出储存器能够支撑的范围。当一个系统在计算机引导完成后会启动几十个进程,单单的一个用于查看该程序的更新进程就会吃掉几兆的内存,后台还有

许润宏的专栏 2026

现代操作系统之存储管理(上)

操作系统中管理分成存储器的部分成为存储管理器。他的任务是有效地管理内存,即记录哪些内存是正在使用的,哪些内存是空闲的;在进程需要时为其分配内存,在进程使用完后释放内存。 无存储器抽象  最简单的模型,及存储器模型就是物理内存,不过有三种变体: 操作系统位于RAM的地步操作系统位于内存顶端的ROM设备驱动程序位于内存顶端的ROM,而操作系统中其它部分位于下面的RAN的底部

diaotai的博客 447

操作系统原理,物理内存“扩充”技术,内存紧缩,覆盖,交换,虚拟内存思想

当内存空间不足以存放下进程是,需要使用到内存“扩充”技术,但不是真的扩充了内存。 一、内存“扩充”技术 1、内存紧缩技术:在可变分区型的操作系统中调节进程在内存中的位置,将进程间的外碎片合成为可用的内存空间并利用。 2、覆盖技术overlaying 2、交换技术swapping 4、虚拟内存技术virtual memory二、覆盖技术(早期操作系统) 1、应对问题:程序大小超过了物理内存总和 2、解决方案:程序的不同部分在内存中共享一块区域并相互覆盖 2.1、操作系统按照程序自身的逻...

ganfanren00001的博客 3910

操作系统之内存管理

操作系统之内存管理 操作系统中管理分层存储体系的部分称为存储管理器,它的任务是有效地管理内存,记录哪些内存正在使用,哪些内存是空闲的,在进程需要时为其分配内存,在进程使用完后释放内存。 接下来介绍一些由简单到复杂的存储管理方案,由于最底层的高速缓存的管理由硬件来完成,我们只需要关注由软件部分完成的内存模型抽象即可。 无存储器抽象 最简单的存储器抽象就是根本没用抽象,每个程序直接访问物理内存:从0到某个上限的地址集合,每个地址对应一个可容纳一定数目二进制位的存储单位,通常是8个。使用这种方案的有三种变体:

Nbin_Newby的博客 791

存储管理——现代操作系统学习笔记

前言:操作系统需要对内存创建抽象模型以及管理内存,让程序员更方便的使用内存。 1、无内存抽象 在很久以前,程序员都直接访问物理内存,例如:mov r1,1000。

欢颜的专栏 671

操作系统学习笔记005

存储管理 为什么要对内存资源进行管理? 内存时计算机中一种重要的资源,内存容量并不能无限大、速度也不能无限快、也不能永久性的存储数据,价格也并不便宜。正因为这样,所以要合理高效的利用内存的资源。 1、分层存储器体系”(memory hierarchy) 在这个体系中,计算机有若干兆(MB)快速、昂贵且易失性的高速缓存(cache),数千兆(GB)速度与价格适中且同样易失性的内存,以及几兆兆(TB)低速、廉价、非易失性的磁盘存储,另外还有诸如DVD和USB等可移动存储装置。操作系统的工作是将这个存储体系抽象为

hui1097的博客 624

操作系统对内存管理

转自:https://blog.youkuaiyun.com/shanghairuoxiao/article/details/70256247 为什么叫内存的抽象? 如果看过设计模式的人可能会知道,设计模式中提到最多的概念之一就是抽象,纯虚的基类作为接口就是对各种派生类对象的抽象。调用接口的用户,并不知道内部如何实现,因此内部实现的方法可能也有多种。地址空间也可以这样理解,32位机上,创建进程时操作系统为...

gaojing303504的博客 1325

【OS操作系统】Operating System 第五章:虚存技术

OS操作系统系列文章目录 目录OS操作系统系列文章目录第五章:虚存技术虚拟内存的起因覆盖技术交换技术覆盖技术和交换技术的对比虚拟内存管理技术 第五章:虚存技术   虚拟内存的起因   起因:经常出现内存不够的情况;且程序规模的增长远大于存储器容量的增长速度;   理想的存储器:更大、更快、更便宜、非易性存储;   实际的存储器   同时,也会把硬盘的空间也用上,不常用的信息存储在硬盘上,常用的存储在内存上;   在OS中,面对多道程序运行的情况,可能会出现内存不够的问题,解决办

Blacktone的博客 545

操作系统 第三章 内存管理

第三章 内存管理 3.1 无存储器抽象 ​ 意为物理内存直接面向程序,程序直接访问物理内存。(程序内部的逻辑指令所指向的地址,就是物理内存中实际的地址。)因此这种情况下真个内存中只能同时运行一个程序。 ​ 无存储器抽象也出现了几种变体, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iO1BhFbm-1628474261105)(C:\Users\10332\AppData\Roaming\Typora\typora-user-images\image-20210609103

LonelyFish212的博客 950

操作系统的存储管理概述

现代操作系统采用“分层储存器体系“ 计算机拥有若干兆快速、昂贵且易失性的高速缓存,价格与速度适中的同易失性的内存以及不易失访问速度慢的大容量的磁盘存储 操作系统中分层存储器体系的部分称为存储管理器。任务是记录哪些内存正在使用,哪些可分配,在进程需要时分配内存,进程使用完毕释放内存。   1.地址空间 早期的操作系统是直接将物理地址直接暴露给进程,但是缺陷很多。为了要保证多个应用程序同时处于

hero_zouzongling的专栏 684
上一篇: [操作系统] 调度
下一篇: [操作系统] 虚拟内存
LLLZHLIU
博客等级 码龄10年 19粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值