csapp 第9章 虚拟内存 阅读笔记

第9章 虚拟内存

虚拟内存是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互

  • 将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,并通过这种方式,高效地使用了主存
  • 为每个进程提供了一致的地址空间,从而简化了内存管理
  • 保护了每个进程的地址空间不被其他进程破坏

为什么要理解虚拟内存?

  • 虚拟内存是核心的
  • 虚拟内存是强大的
  • 虚拟内存是危险的

物理和虚拟寻址

csapp 第9章 虚拟内存 阅读笔记

地址空间

虚拟内存作为缓存的工具

csapp 第9章 虚拟内存 阅读笔记

虚拟内存作为内存管理的工具

地址翻译

csapp 第9章 虚拟内存 阅读笔记

csapp 第9章 虚拟内存 阅读笔记

内存映射

csapp 第9章 虚拟内存 阅读笔记

csapp 第9章 虚拟内存 阅读笔记

csapp 第9章 虚拟内存 阅读笔记

csapp 第9章 虚拟内存 阅读笔记

伙伴系统

优点:快速搜索和快速合并

缺点:要求块大小为2的幂可能导致显著的内部碎片

垃圾收集

C程序中常见的与内存有关的错误

  • 间接引用坏指针
  • 读未初始化的内存
  • 允许栈缓冲区溢出
  • 假设指针和它们指向的对象是相同大小的
  • 造成错位错误
  • 引用指针,而不是它所指向的对象
  • 误解指针运算
  • 引用不存在的变量
  • 引用空闲堆中的数据
  • 引起内存泄漏