【操作系统】第五章:虚拟内存(Part1:交换[swapping]和覆盖[overlay]技术)

简介: 【操作系统】第五章:虚拟内存(Part1:交换[swapping]和覆盖[overlay]技术)

目录


  • 虚存的起源
  • 覆盖技术
  • 交换技术


正文


虚存的起源


(从二维方块到3D和动画CG)电子游戏所占的内存越来越大,对计算机要求的性能也就越来越过。也就说程序规模的增长远大于储存器容量增长的速度。

我们理想中的存储器:更大更快且非易失性存储器。实际的物理硬件是很难获取的。

b56d94bed4364ad0cfd5aebcdf08b5bd_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

如图所示,快速访问的存储器都靠近CPU但是容量低且造价高。从下往上,意味着价格越来越高,容量越来越小,速度越来越快。硬盘存储空间 够大,但是速度不够,所以我们只能把程序放到内存上去执行;那么有没有什么办法能够把硬盘空间用于执行程序?===>虚存【把不常用的数据放入硬盘,把常用的数据放入内存,使得有限的内存放经常访问的数据,形成一种虚拟的大内存的感觉】

这种方式需要硬件MMU(内存管理单元)和OS内核一起完成。

7f457fa4e16c72b54d7bbc07d2492c26_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

覆盖技术:常用的代码和数据放入内存,不常用的数据和代码放入硬盘

.交换:内存中会跑多个程序,把一些当前优先级不高的程序放到硬盘中,使当前执行的程序会有一个更大的内存去执行。交换技术可由OS完成,但是开销比较大,因为需要导出整个程序到硬盘和导入内存,程序越大,导入导出的代价越大。

虚存技术:只把程序的一部分数据导入导出硬盘,减少交换技术的开销。以页和段为粒度,来把数据和代码导入导出,从而有效使用有限的物理空间。


覆盖技术


目标:在较小的可用内存中运行较大的程序

依据程序逻辑结构,将程序划分为若干功能相对独立的模块;将不会同时执行的模块共享同一块内存区域。【在不同区间,这些程序块可以不同时运行】某一段时间某一个区间执行,另一个时间另一个区间执行。但是这些函数分时共享一个内存空间。

必要部分:一定要有的代码和数据常驻内存,他来负责决定某个时间段把相应区间的函数导入或者导出内存

可选部分(不常用功能):其他程序执行中放入外存中或放在其他程序模块中,只在需要用到时装入内存

不存在调用关系的模块可相互覆盖,共用同一块内存区域

就发火给.gif

如图所示,他们之间的逻辑关系是:A调用BC,B调用D;C调用E或者F

A是常驻内存,因为他要调用其他所有函数。B和C都被A调用,且BC不会相互调用,这说明他们是隔离且独立的,所有可以把BC分在一个区,同理DEF分为另一个区。

内存总110K,程序总容量190K,也就说想把这个程序全部装入内存,空间是不够的。此时根据覆盖技术:A作为常驻内存放入常驻区。然后调用B和C中的一个,必然存在先后顺序,且其中一个执行时,另一个一定不执行,则只在需要时进行导入和导出操作即可【代码是只读的,他只需要释放空间不需要其他开销】

同理根据相互独立原则,还可以找出多种不同的覆盖方式。比如B和EF相互独立,C和D相互独立的。即他们之间不会相互调用,所以他们可以共享一个覆盖区。则此时覆盖区0为50K空间(装BEF),覆盖区1为30K空间(装CD),则比着如图所示的分区方法,总内存使用空间量还要少10K。

20 K [ 常 驻 ] + ( 50 + 40 ) K [ 覆 盖 ] < 20 K [ 常 驻 ] + ( 30 + 50 ) K [ 覆 盖 ]

缺点:开销大。

1.设计的开销,程序猿需要考虑怎么把一个大的程序根据逻辑关系划分出一个个小的相互之间可以覆盖的功能模块,增加了程序猿的负担

2.不同执行阶段的对内存的导入和导出其实就是对硬盘的读写操作,这个过程时间开销也很大。


交换技术


189e432b94be1096b8852442af584682_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

导入导出的开销相对来说是比较大的,一般最小粒度也大于了一个页。逻辑如下:

监督法耶特.gif

交换存在的问题:

1.交换时机:如果程序执行过程中频繁交换,其实对整个系统的负荷很大。每一次的硬盘操作会有较长的时间开销,会耽误程序的快速执行,所以只有当且仅当内存空间不够用时,才会进行交换操作,而且要尽量减少这种操作。

2.所需空间[交换区的大小]:必须足够大以存放所有用户进程的所有内存映像的拷贝,必须对这些内存映像直接存取。假设一个内存中可以跑10程序,那么极端的情况下可能会把9个程序导出去,所以所需空间的预设计就要求比较大。

3.程序的重定位:程序执行时换出再换入后,内存位置可能发生了变化,这时候当前空闲空间和换出位置不同,那么寻址就可能出现问题。一般来说,采取动态映射的方法可以比较好的处理这个问题。【类似上一章讲解的虚拟地址和物理地址之间的映射表】

交换技术由操作系统来完成,对程序猿是透明的,程序猿不需要了解什么时候换入和换出,由OS自主管理。

交换和覆盖的比较

8be6d245b0bfe84380427db7dc2afe01_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

简单概括:

覆盖:小范围一个程序内

交换:大范围多个程序间


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