操作系统基础:内存管理概述【上】

简介: 操作系统基础:内存管理概述【上】



🏕️1 内存管理基础概念

🏡1.1 总览

🏡1.2 内存管理应有的功能

🏖️1.2.1 内存空间的分配和回收

示意图:

🏖️1.2.2 从逻辑上扩充内存

试想,随便下载一个大软件,其大小远远超过我们的内存大小,那么为什么这个软件可以运行呢?原因是操作系统采用了虚拟内存,即使物理空间较小,但是逻辑空间却可以很大。

🏖️1.2.3 地址转换

提供地址转换功能,负责程序的逻辑地址与物理地址的转换

三种装入方式为:

🏖️1.2.4 内存保护

提供内存保护功能,保证各进程在各自存储空间内运行,互不干扰。

使进程只可以访问属于自己的空间,不能去访问系统内核、其他进程的内存空间。那么,如何才可以实现内存保护呢?

以下图的进程1为例子

(1)设置上下限寄存器。

例如,进程1的实际物理地址为100-279,那么下限寄存器应该存放100,上限寄存器应该存放279。

(2)重定位寄存器、界地址寄存器

重定位寄存器存放进程的实际物理地址的下限,界地址寄存器存放进程所需的最空间。例如,进程1的重定位寄存器存放100,界地址寄存器存放179-0=179。

🏡1.3 知识总结

🏕️2 覆盖与交换

🏰2.1 总览

🏰2.2 覆盖技术

🏖️2.2.1 覆盖技术的基本思想

🏖️2.2.2 例子

如图,这是一个程序的结构调用图。可以看到,A是程序运行所必须的代码段,因此放在固定区内;B、C不可能同时运行,因此可以分配同一个覆盖区,D、E、F同理。如图所示

因此,本来应该将代码全部放入,但是操作系统只分配了一部分空间就实现了全部放入的结果,因此从逻辑上看,操作系统的内存大小是被拓展了的。

🏖️2.2.3 缺点

🏰2.3 交换技术

🏝️2.3.1 基本思想

比如说,假设内存中有进程1、2、3,如图

此时内存紧张,进程1、2需要暂时换出外存,因此在内存保留它们的PCB后(方便操作系统的后续管理)将它们置于挂起队列,空出的内存空间给更为紧张的进程使用。

🏝️2.3.2 待解决的问题

对于问题1:

磁盘空间的示意图:

对于问题2:

对于问题三

🏰2.4 总结

🏕️3 连续内存分配

🏠3.1 总览

🏠3.2 单一连续分配

🏖️3.2.1 思想

如图:

🏖️3.2.2 优点

一个进程独占内存,就不会发生进程访问其他进程的内存空间的情况,且即使进程访问了操作系统的内核程序,通常也可以通过重启解决,所以这种方式下不一定需要采取内存保护?

🏖️3.2.3 缺点

🏠3.3 固定分区分配

🏝️3.3.1 基本思想

🏝️3.3.2 分类

根据分配的空间相等与否可以分为以下两类

如图

🏝️3.3.3 特点

🏝️3.3.4 如何管理固定分区

可以通过分区说明表进行管理,其具体内容如图:

这种数据结构可以通过数组或链表实现

🏝️3.3.5 优缺点

🏠3.4 动态分区分配

🏝️3.4.1 基本思想

🏝️3.4.2 记录内存使用情况的数据结构

可以采取空闲分区表、空闲分区链表示

(1)空闲分区表

例子:

(2)空闲分区链

例子:

🏝️3.4.3 空闲分区的分配

分配算法在下一小节进行详细描述

🏝️3.4.4 分区的分配和回收

假设操作系统采用空闲分区表管理分区(使用空闲分区链同理)

(1)分配操作

假设起始表内容如下:

①假如一个空闲分区的大小大于进程申请的空间,那么直接修改内容和即可。 假设一个4MB的进程进入,需要分配到分区1中,那么分区表应该修改如下:

②假如一个空闲分区的大小等于进程申请的空间,那么需要删除该内容。假设一个4MB的进程进入,需要分配到分区3中,那么分区表应该修改如下:

(2)回收操作

①回收分区的后面(后面)有空闲分区

直接修改表项内容

②回收分区的后面没有空闲分区

增加一个表项内容

③回收分区的前后均为空闲分区

合并表项内容

注意:各表项的排序不一定按照分区地址的大小进行排序

🕮 4 总结

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

相关文章
|
4天前
|
算法 调度 UED
深入理解操作系统内存管理:原理与实践
【4月更文挑战第23天】 在现代计算机系统中,操作系统的内存管理是保证系统高效、稳定运行的关键组成部分。本文旨在深入探讨操作系统中内存管理的理论基础、关键技术以及实际操作过程,通过对内存分配策略、虚拟内存技术、分页与分段机制等核心概念的详细解析,为读者提供一个清晰、全面的内存管理视角。此外,文章还将通过案例分析,展示内存管理在解决实际问题中的应用,以期加深读者对操作系统内存管理复杂性的认识和理解。
|
20天前
|
算法 程序员
深入理解操作系统内存管理:分页系统的优势与挑战
【4月更文挑战第7天】 在现代操作系统中,内存管理是一项至关重要的任务,它确保了计算机能够高效、安全地运行各种程序。分页系统作为内存管理的一种技术,通过将物理内存分割成固定大小的单元——页面,为每个运行的程序提供了一种独立且连续的内存地址空间。该技术不仅简化了内存分配,还允许更高效的内存使用和保护。本文探讨了分页系统的核心原理,优势以及面临的挑战,旨在为读者揭示其在操作系统设计中的重要性。
|
1天前
|
算法
深入理解操作系统的内存管理
【4月更文挑战第26天】 在现代计算机系统中,操作系统的内存管理是确保系统高效、稳定运行的关键组成部分。本文将深入探讨操作系统内存管理的核心技术,包括虚拟内存、物理内存分配策略、分页和分段机制以及内存交换技术。通过分析这些技术的工作原理及其优缺点,读者将获得对操作系统如何优化内存使用和管理的深刻理解。
|
2天前
|
算法
探索现代操作系统的虚拟内存管理
【4月更文挑战第25天】 操作系统的心脏——虚拟内存管理,是确保多任务并发执行和系统稳定性的关键。本文将深入剖析虚拟内存的核心机制,包括分页、分段、请求调页以及交换技术。我们将探讨虚拟内存如何允许操作系统使用有限的物理内存来模拟更大的地址空间,以及这一过程对性能的影响。此外,文章还将介绍一些高级话题,比如内存分配策略、页面置换算法以及虚拟内存的优化方法。
|
3天前
|
存储 算法
深入理解操作系统的内存管理机制
【4月更文挑战第24天】 在现代计算机系统中,操作系统扮演着资源管理者的角色,其中内存管理是其核心职责之一。本文将探讨操作系统如何通过内存管理提升系统性能和稳定性,包括物理内存与虚拟内存的概念、分页机制、内存分配策略以及内存交换技术。我们将透过理论与实践的结合,分析内存管理的关键技术及其对系统运行效率的影响。
|
10天前
|
存储 算法 数据安全/隐私保护
深入理解操作系统的内存管理机制
【4月更文挑战第17天】 在现代计算机系统中,操作系统扮演着资源管理者的角色,其中内存管理是其核心职能之一。本文探讨了操作系统内存管理的关键技术,包括虚拟内存、物理内存分配与回收、分页和分段机制,以及内存交换技术。通过分析这些机制的原理和实现,我们旨在加深读者对操作系统如何有效管理和保护内存资源的理解。
10 1
|
11天前
|
算法
深入理解操作系统的内存管理机制
【4月更文挑战第15天】 本文将探讨操作系统中至关重要的一环——内存管理。不同于通常对内存管理概念的浅尝辄止,我们将深入研究其核心原理与实现策略,并剖析其对系统性能和稳定性的影响。文章将详细阐述分页系统、分段技术以及它们在现代操作系统中的应用,同时比较它们的效率与复杂性。通过本文,读者将获得对操作系统内存管理深层次工作机制的洞见,以及对设计高效、稳定内存管理系统的理解。
|
15天前
|
存储 大数据 量子技术
深入理解操作系统的内存管理
【4月更文挑战第12天】 在现代计算机系统中,操作系统扮演着关键角色,它负责协调和管理硬件资源,确保系统运行的高效与稳定。其中,内存管理是操作系统的核心功能之一,它涉及物理内存的分配、虚拟内存的映射以及内存保护等关键操作。本文旨在深入剖析操作系统内存管理的基本原理与实践,探讨其对系统性能和安全性的影响,并简述当前的挑战与创新方向。
|
17天前
|
存储 监控 算法
深入理解操作系统的内存管理
【4月更文挑战第10天】本文旨在深度剖析操作系统中的核心组件之一——内存管理。通过对其机制、策略和现代操作系统中的应用进行探讨,读者将获得对系统如何高效利用和管理内存资源的清晰理解。文章不仅覆盖了基础理论,还涉及了高级话题,如虚拟内存技术和内存优化策略,为希望深入了解操作系统内部工作原理的技术人员提供了宝贵的知识储备。
|
19天前
|
存储 算法
深入理解操作系统内存管理:原理与实践
【4月更文挑战第8天】 在现代计算机系统中,操作系统扮演着关键角色,特别是在内存资源的管理上。本文将深入探讨操作系统中的内存管理机制,包括虚拟内存、物理内存的分配与回收,以及页面置换算法等关键技术。通过分析不同内存管理策略的优势与局限性,本文旨在为读者提供一套系统的内存管理知识框架,帮助理解操作系统如何高效、安全地管理有限的内存资源以满足多任务处理的需求。