摘要:虚拟内存,虚拟文件系统,顾名思义两者都是由操作系统提供的一种抽象,本文不是介绍操作系统的具体实现细节,而是对操作系统提供的虚拟内存机制和虚拟文件系统机制的一种概述及设计思想的描述(由于个人的局限性,不足之处在所难免)。本文通过对相关版本linux操作系统关于虚拟内存和虚拟文件系统的主要数据结构的研究,宏观上把握此两种机制的实现原理。
0 引言
操作系统把计算机中的各种资源提供了一个很友好的界面给用户,其中虚拟内存是对实际物理内存的一个抽象,而虚拟文件系统是对文件系统(此处指进行了格式化后的磁盘)的一个抽象。
1 虚拟内存
这部分内容建议大家从计算机(内存管理)发展的角度来理解.以Intel系列为例:8086机是实模式,也就是发出的地址会直接加载到内存进行寻址;现代intel 系列机成为i386系列,是因为从80386型号的CPU开始,已经提供了保护机制,即分页机制(由于虚拟内存是由于分页机制实现的,所以略去分段机制的发展过程。实际上,由于分页机制的出现分段机制已近被束之高阁,但为了保持向上的兼容性,仍然保留着这种机制,只是没有使用)。
以下以分页机制为核心来讨论虚拟内存。
由于此部分内容在《程序员的自我修养》第六章中讲的非常详细,在此只给出逻辑结构图:
!虚拟内存寻址逻辑图
注:虚拟内存机制,需要硬件MMU的支持
2 虚拟文件系统