美文网首页
操作系统内存

操作系统内存

作者: asdf____ | 来源:发表于2020-04-17 10:44 被阅读0次
Linux 内存
一、虚拟内存

这个虚拟内存指的是“进程的虚拟内存”,或者说是虚拟地址空间,注意与” Linux 系统的虚拟
内存“区分,”Linux 系统的虚拟内存“指的是常说的 Swap 空间,在第四点会说。
虚拟内存不同于物理内存,进程占用虚拟内存空间大并非意味着程序的物理内存也一定占用很
大。虚拟内存是操作系统内核为了对进程地址空间进行管理设计的一个逻辑意义上的内存空间
概念。我们程序中的指针其实都是这个虚拟内存空间中的地址。既然说虚拟内存是一个逻辑意
义上的内存空间,为了能够让程序在物理机器上运行,操作系统使用了页映射表(page table)
来实现逻辑上的虚拟内存空间到物理内存空间(实际存在的 RAM 内存条上的空间)的映射。内
核会为系统中每一个进程维护一份独立的页映射表。页映射表的基本原理是将程序运行过程中
需要访问的一段虚拟内存空间通过页映射表映射到一段物理内存空间上,这样 CPU 访问对应
虚拟内存地址的时候就可以通过查找页映射表来访问物理内存上的某个对应的地址。页是虚拟
内存空间向物理内存空间映射的基本单元。


页表映射.png

可以参考该页表映射图。其中虚拟内存空间中着色的部分分别被映射到物理内存空间对应相同
着色的部分,而灰色的部分没有被映射到物理内存空间中。这也是按需映射,因为虚拟内存空
间很大,可能其中很多部分在一次程序运行过程中根本不需要访问,所以也就没有必要将虚拟
内存空间中的这些部分映射到物理内存空间上。
总结一下就是,虚拟内存是一个逻辑内存空间,在程序运行过程中虚拟内存空间中需要被访问的
部分会被映射到物理内存空间中。虚拟内存空间大只能表示程序运行过程中可访问的空间比较大,不代表物理内存空间占用也大。

二、驻留内存

驻留内存是指那些被映射到进程虚拟内存空间的物理内存。在上图中,物理内存空间中被着色
的部分都是驻留内存。比如,A1、A2、A3 和 A4 是进程 A 的驻留内存;B1、B2 和 B3 是进程
B 的驻留内存。进程的驻留内存就是进程执行时实际占用的物理内存。一般我们所讲的进程占用
了多少内存,其实就是说的占用了多少驻留内存而不是多少虚拟内存。因为虚拟内存大并不意味
着占用的物理内存大。

三、共享内存

共享内存是指进程共享的物理内存。在上图中进程 A 虚拟内存空间中的 A4 和进程 B 虚拟内
存空间中的 B3 都映射到了物理内存空间的 A4/B3 部分。因为我们的多个进程在执行时很可能
会依赖一些实现基础功能的库,而这些库加载到物理内存后只会存在一份,如果某个进程运行
时需要某个库,那么就会将这个库加载到的物理内存映射到当前进程的虚拟内存空间中。多个
进程之间通过共享内存的方式相互通信也是这样实现的。这么一来,就会出现不同进程的虚拟
内存空间会映射到相同的物理内存空间。这部分物理内存空间其实是被多个进程所共享的,所
以称为共享内存。某个进程占用的内存除了和别的进程共享的内存之外就是自己的独占内存了。
所以要计算进程独占内存的大小时就用它所占的物理内存大小减去它和其它进程共享的内存大
小即可。

四、Swap 内存

Swap 内存是指“Linux 系统的虚拟内存”,Swap 空间实际上就是硬盘上的一块空间,可以是一
个分区,也可以是一个文件,或者是它们的组合。当进程执行需要载入数据到内存时,如果物
理内存仍然足够,通常是不会用到 Swap 空间的,如果物理内存吃紧不够用了,就会把当前内
存中暂时不用的数据换出保存到 Swap 空间,之后进程执行又需要 Swap 空间中的数据时,就
会再次换入到内存中。由于 Swap 空间实际上就是磁盘上的空间,所以频繁的换入换出会出现
大量的磁盘 IO,会导致严重的性能问题。

相关文章

  • 内存

    操作系统对内存管理哪些内容: 1. 操作系统负责内存空间的分配和回收 2. 操作系统需要提供某种技术从逻辑上内内存...

  • 内存与性能

    申请与释放内存 申请内存的过程 用户态使用malloc向操作系统申请内存 操作系统查找页面是否有空闲内存,如果有则...

  • 【操作系统】3.1 内存管理基础

    1.内存管理的介绍 问题:操作系统的内存管理主要是做什么? 操作系统的内存管理主要负责①内存的分配与回收(mall...

  • 内存管理——分页、分段

    参考 怎样通俗的理解操作系统中内存管理分页和分段?计算机操作系统 - 内存管理

  • linux操作系统基础知识有哪些

    内容来源(公众号:PHP版WEB项目)linux操作系统基础知识:1、操作系统区分物理内存和虚拟内存;2、了解内存...

  • 内存

    操作系统的物理内存: —— 常说的 “内存条”数据从磁盘中加载到内存后,才能被CPU访问。【操作系统的代码和数据...

  • Android内存泄漏问题

    一、垃圾回收 一般来说,程序使用内存遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然...

  • Linux C 内存管理

    32位操作系统内存最大空间为 2^32 = 210*2102^104 = 4GB; 64位操作系统的内存分布 ​ ...

  • 考研计算机操作系统思维导图

    操作系统 文件管理 内存管理

  • 机器代码层面的函数调用

    2018.04.18 CPU 发出指令把硬盘程序指令搬到内存,操作系统给程序指令分配内存。然后操作系统会告诉 CP...

网友评论

      本文标题:操作系统内存

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