【随笔】虚拟内存的理解
什么是操作系统?
操作系统的本质是一组软件,但不是随便什么软件都能叫操作系统。
操作系统是一组管理计算机软软硬件资源、以方便用户使用计算机的软件集合。所以,怎么管理计算机软硬件资源就是操作系统的核心。
操作系统管理计算机软硬件资源,是将物理资源抽象成虚拟资源,以达到时分复用或空分复用的目的。所以,操作系统管理资源的核心点有三个:抽象、虚拟和复用(时分复用和空分复用)。
CSAPP中几个重要的抽象:
- 进程:抽象了处理器、内存和IO设备,都是将物理资源抽象成虚拟资源,然后时分复用和空分复用,对于处理器而言,分时系统本质就是时分复用,硬件多线程(或超线程)处理器就能做到空分复用;虚拟内存和文件就不用赘述了。
- 虚拟内存:抽象了主存和IO设备;
- 文件:抽象了IO设备;
什么是虚拟内存?
从OS来看,虚拟内存是这样一种技术,“将物理内存抽象成虚拟内存,以空分复用和时分复用的方式让每个运行中的进程认为自己独占并且拥有连续可用的内存”。
虚拟内存主要解决的两个痛点:
- 连续内存:通过虚拟地址空间,让进程在虚拟地址上连续,虚拟地址映射到的物理地址可以不连续;
- 全部加载:部分加载技术,让进程在虚拟地址上全部加载,但是虚拟地址映射的物理地址等到实际使用的时候才通过缺页异常来分配物理内存;