首页 > 系统相关 >虚拟内存

虚拟内存

时间:2023-09-21 21:44:19浏览次数:60  
标签:覆盖 程序 内存 模块 外存 虚拟内存

看完B站清华大学的操作系统虚拟内存这一部分,进行总结一下。

虚拟内存的起因

(1)目录
起因
覆盖技术(早期)/交换技术(早期)/虚存技术
虚拟内存技术:目标/程序局部性原理/基本概念/基本特征/虚拟页式内存管理

(2)起因

经常出现内存不够了。程序规模的增长大于存储器容量的增长。
理想的存储器:更大,更快,更便宜,非易失性存储。
实际的存储器:把硬盘的空间也用上(扮演内存的作用)不常用的放在硬盘上,常用的放在内存上。
(3)在计算机系统中,尤其是在多道程序设计

 

如果程序太大,超过了内存的容量,可以采用 手动的覆盖技术,只把需要的指令和数据保存在内存中
如果是程序太多,超过了内存的容量,可以采用 自动的交换技术,把暂时不能执行的程序送到外存中
如果想在有限容量的内存中,以更小的页粒度为单位装入更多更大的程序,可以采用 自动的虚拟存储技术 。

覆盖技术:

(1)目标

在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。

(2)原理

把程序按照其自身逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。
必要部分(常用功能)的代码和数据常驻内存
可选部分(不常用功能)在其它程序模块中实现,平时存放在外存中,在需要时才装入内存。
不存在调用关系的模块不必同时装入内存,从而可以相互覆盖,即这些模块共用一个分区。
(3)缺点

由程序员来把一个大的程序划分为若干个小的功能模块,并确定各个模块之间的覆盖关系,费时费力,增加了编程的复杂度。
覆盖模块从外存装入内存,是以时间换空间。

 

交换技术:

(1)目标:多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源。

(2)方法:可将暂时不能运行的程序送到外存,从而获得空闲内存空间。
操作系统把一个进程的整个地址空间的内容保存到外存中换出,,而将将外存中的某个进程的地址空间读入到内存中换入。换入换出内容大小为整个程序的地址空间。

(3)交换技术实现中的几个问题

交换时机的确定:只有当内存空间不够或有不够的危险时换出
交换区的大小:必须足够大以存放所有用户进程的所有内存映像的拷贝,必须能对这些内存映像进行直接存取
程序换入时的重定位:因为换出换入后的内存位置不一定相同,所以最好采用动态地址映射的方法

(4)覆盖与交换技术的比较

覆盖只能发生在那些(程序内)相互之间没有调用关系的程序模块之间,因此程序员必须给出程序内的各个模块之间的逻辑覆盖结构。
交换技术是以在内存中的程序大小为单位来进行的,它不需要程序员给出各个模块之间的逻辑覆盖结构。
交换发生在内存中程序与管理程序或操作系统 之间,而覆盖则会跟你在运行程序的内部。

 

标签:覆盖,程序,内存,模块,外存,虚拟内存
From: https://www.cnblogs.com/huwy-123/p/17721039.html

相关文章

  • Tomcat的增加/查看jvm虚拟内存&设置JRE
    Win 操作系统 第一种方法:修改 tomcat/bin/catalina.bat 文件增加一行 setJAVA_OPTS=-Xms128M-Xmx512M-XX:PermSize=64M-XX:MaxPermSize=128M  第二种方法:在环境变量中设置变量名:JAVA_OPTS变量值:-Xms512m-Xmx512m 第三种方法:前两种方法针对的是bin目录下有catalina.bat......
  • 系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
    虚拟内存虚拟内存是一种操作系统提供的机制,用于将每个进程分配的独立的虚拟地址空间映射到实际的物理内存地址空间上。通过使用虚拟内存,操作系统可以有效地解决多个应用程序直接操作物理内存可能引发的冲突问题。在使用虚拟内存的情况下,每个进程都有自己的独立的虚拟地址空间,它们......
  • 虚拟内存如何与物理内存映射
    转自https://www.cnblogs.com/binlovetech/p/17571929.html笔者之前在自己的专栏《聊聊Linux内核》 里通过大量的篇幅写了一个系列关于内存管理相关的文章,在这个系列文章中,笔者分别通过虚拟内存管理和物理内存管理两个角度算是把Linux内存管理子系统的全貌给大家呈现了出来......
  • COMP SCI 3004操作系统的虚拟内存模拟
    SCI3004COMPSCI3004/7064OperatingSystemsPractical2–VirtualMemorySimulationAimBydoingthispracticalwork,youwilllearnhowtoimplementpagereplacementalgorithms,gainexperienceincreatingandevaluatingasimplesimulator,anddevelopyour......
  • 系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
    虚拟内存虚拟内存是一种操作系统提供的机制,用于将每个进程分配的独立的虚拟地址空间映射到实际的物理内存地址空间上。通过使用虚拟内存,操作系统可以有效地解决多个应用程序直接操作物理内存可能引发的冲突问题。在使用虚拟内存的情况下,每个进程都有自己的独立的虚拟地址空间,它......
  • 进程地址空间(虚拟内存)
    进程地址空间,进程虚拟内存的管理。某个进程地址空间的全部区域可以以红黑树+链表的形式存放。内核线程没有mm_struct没有进程地址空间,没有相关的内存描述符,这也是内核线程的真实含义--它们没有用户上下文。当一个进程被调度时,该进程的mm域指向的地址空间被装载到内存,PCB中的acti......
  • inux 系统中的不同进会程不会分配到相同的虚拟内存地址
    在正常情况下,Linux系统中的不同进程不会分配到相同的虚拟内存地址。这是由于虚拟内存管理机制的设计和实现原则决定的。以下是一些解释:1地址空间隔离:每个进程有自己独立的虚拟地址空间,它们在逻辑上是隔离的。这种隔离性是通过使用独立的页表来实现的。每个进程都有自己的页......
  • 一步一图带你构建 Linux 页表体系 —— 详解虚拟内存如何与物理内存进行映射
    笔者之前在自己的专栏《聊聊Linux内核》里通过大量的篇幅写了一个系列关于内存管理相关的文章,在这个系列文章中,笔者分别通过虚拟内存管理和物理内存管理两个角度算是把Linux内存管理子系统的全貌给大家呈现了出来。但之前的文章都是以专题的形式给大家呈现,采用一种静态的方......
  • ReadyBoost 是什么: ReadyBoost 是一种在 Windows 操作系统中使用外部闪存设备作为虚拟
    ReadyBoost是Windows操作系统中的一个功能,它可以利用闪存驱动器(如USB闪存驱动器)作为辅助内存来提高系统的响应速度和性能。下面是关于ReadyBoost的详细解释:ReadyBoost是什么:ReadyBoost是一种在Windows操作系统中使用外部闪存设备作为虚拟内存缓存的技术。它允许将US......
  • pagefile.sys是Windows操作系统中的一个系统文件,它用于实现虚拟内存功能 。虚拟内存是
    pagefile.sys是Windows操作系统中的一个系统文件,它用于实现虚拟内存功能。虚拟内存是一种由硬盘上的空间模拟出来的内存,它允许操作系统将物理内存(RAM)之外的空间用作扩展内存。当物理内存不足时,操作系统会将一部分数据从物理内存转移到pagefile.sys文件中,以释放物理内存空间给其他......