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

第9章 虚拟内存

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

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

为什么要理解虚拟内存?

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

物理和虚拟寻址

地址空间

虚拟内存作为缓存的工具

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

地址翻译

内存映射

伙伴系统

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

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

垃圾收集

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

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

你可能感兴趣的:(csapp 第9章 虚拟内存 阅读笔记)