美文网首页
对操作系统虚拟内存机制的理解

对操作系统虚拟内存机制的理解

作者: zcxzcxczcx | 来源:发表于2020-05-09 12:09 被阅读0次

1.如果把二进制程序全部加载到内存中,会出现一种情况就是明明内存还有空间,但是不够二进制程序的大小,所以也加载不了,这样很浪费内存,而且会产生外部碎片,所以就改良成2中描述的方案。

2.采用页表的方式对内存进行管理。分页将物理内存和可执行程序划分成很小的区块,这个区块定义为页,每个页的大小为4k,二进制程序中不足4k的页默认为4k。操作系统会为每个进程维护一个页表。页表主要记录进程的页号与内存中的页号的对应关系。这样的话就没有要求二进制程序加载到物理内存中必须是连续的,不会产生外部碎片,但是因为二进制程序中不足4k的页默认为4k,会浪费一点点内存,称为内部碎片。但是因为内存有限,所以加载的二进制程序有限,所以可以有了3中的方案解决内存有限的问题。

3.虚拟内存:

概念:磁盘空间开辟空间作为内存的补充。

虚拟地址空间(虚拟内存)被分成了固定大小的页,每一页或者没有映射任何东西,或者被映射到硬盘上的交换文件中,或者映射到物理内存。即未分配、未缓存、已缓存。

程序加载的时候要执行虚拟内存到磁盘空间的映射。

进程可以一部分驻留在内存上,而其他部分存储在虚拟内存上。cpu要执行的虚拟地址从页表中找不到对应的物理页地址时,就会发生页中断(页错误)。此时CPU无法执行,中断处理程序会将虚拟地址所在的虚拟内存的空间,将其加载到内存。CPU再次扫描,程序正常执行。这里会涉及到页面的换入换出,所以讲一下系统抖动。

系统抖动概念:在请求分页存储管理中,从内存刚刚换出某一页面后,根据请求又马上换入该页,这种反复换入换出的现象,叫系统抖动,或系统颠簸。系统抖动是因为页错误太多,频繁出现页中断,浪费CPU大部分时间。为了降低系统抖动,降低页错误次数,就要使用页面置换算法(FIFO),原则是先进先出,但这种算法只是在按顺序访问地址空间时是理想的。因此我们可以使用另一种算法,即最近最久未使用算法(LRU),它是置换最近过去一段时间最久未使用的页面。

虚拟内存的优点: 

a.操作系统同时执行的进程数量会大幅提升。 

b.操作系统可以执行比内存空间大的多的进程。

虚拟内存的缺点: 

a.页中断处理程序执行时,CPU需要等待,会浪费时间。

相关文章

  • 对操作系统虚拟内存机制的理解

    1.如果把二进制程序全部加载到内存中,会出现一种情况就是明明内存还有空间,但是不够二进制程序的大小,所以也加载不了...

  • MMU

    现代操作系统普遍采用虚拟内存管理( Virtual Memory Management) 机制,这需要MMU( M...

  • Linux中MMU内存管理【进阶学习】

    前言 现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的...

  • 启动优化之二进制重排

    涉及的基础知识点 虚拟内存和分页 我们知道,现代操作系统一般都采用虚拟内存管理机制,用分段(segment)和分页...

  • vmstat

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、...

  • linux中物理内存和虚拟内存

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、...

  • Thunk程序的实现原理以及在iOS中的应用(二)

    本文导读:虚拟内存以及虚拟内存的remap机制,以及通过remap机制来实现通过静态指令来构造thunk代码块。 ...

  • 深入理解虚拟内存机制

    概述 现代操作系统了提供了一种对主存的抽象概念,叫做虚拟内存。它为每个进程提供了一个非常大的,一致的和私有的地址空...

  • Linux hugetlb介绍与创建

    引言 随着计算需求规模的不断增大,应用程序对内存的需求也越来越大。为了实现虚拟内存管理机制,操作系统对内存实行分页...

  • iOS逆向实战--024:lldb高级调式

    虚拟内存 早期的操作系统早期的操作系统,并没有虚拟内存的概念。系统由进程直接访问内存中的物理地址,这种方式存在严重...

网友评论

      本文标题:对操作系统虚拟内存机制的理解

      本文链接:https://www.haomeiwen.com/subject/weghnhtx.html