Linux - 内存管理

作者: 技术灭霸 | 来源:发表于2021-07-24 21:45 被阅读0次

    操作系统的内存管理,主要分为三个方面。

    • 第一,物理内存的管理,相当于会议室管理员管理会议室。
    • 第二,虚拟地址的管理,也即在项目组的视角,会议室的虚拟地址应该如何组织。
    • 第三,虚拟地址和物理地址如何映射,也即会议室管理员如果管理映射表。

    为什么Linux需要虚拟内存?

    虚拟内存是操作系统物理内存和进程之间的中间层,它为进程隐藏了物理内存这一概念,为进程提供了更加简洁和易用的接口以及更加复杂的功能。

    1. 虚拟内存可以利用磁盘起到缓存的作用,提高进程访问指定内存的速度
    2. 虚拟内存可以为进程提供独立的内存空间,简化程序的链接、加载过程并通过动态库共享内存;
    3. 虚拟内存可以控制进程对物理内存的访问,隔离不同进程的访问权限,提高系统的安全性

    虚拟空间一切二,一部分用来放内核的东西,称为内核空间,一部分用来放进程的东西,称为用户空间

    什么是分页?为什么要分页?

    对于物理内存,操作系统把它分成一块一块大小相同的页,这样更方便管理,例如有的内存页面长时间不用了,可以暂时写到硬盘上,称为换出。一旦需要的时候,再加载进来,叫作换入。这样可以扩大可用物理内存的大小,提高物理内存的利用率

    虚拟地址分为两部分,页号和页内偏移。页号作为页表的索引,页表包含物理页每页所在物理内存的基地址。这个基地址与页内偏移的组合就形成了物理内存地址。

    其实Linux倾向于另外一种从虚拟地址到物理地址的转换方式,称为分页(Paging)。

    总结

    一个内存管理系统至少应该做三件事情:
    • 第一,虚拟内存空间的管理,每个进程看到的是独立的、互不干扰的虚拟地址空间;
    • 第二,物理内存的管理,物理内存地址只有内存管理模块能够使用;
    • 第三,内存映射,需要将虚拟内存和物理内存映射、关联起来。
    我们可以把内存管理系统精细化为下面三件事情:
    • 第一,虚拟内存空间的管理,将虚拟内存分成大小相等的页;
    • 第二,物理内存的管理,将物理内存分成大小相等的页;
    • 第三,内存映射,将虚拟内存也和物理内存也映射起来,并且在内存紧张的时候可以换出到硬盘中。

    相关文章

      网友评论

        本文标题:Linux - 内存管理

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