深入理解计算机系统 第九章虚拟内存

深入理解计算机系统 第九章虚拟内存_第1张图片
深入理解计算机系统 第九章虚拟内存_第2张图片

9.1 物理和虚拟寻址

深入理解计算机系统 第九章虚拟内存_第3张图片
深入理解计算机系统 第九章虚拟内存_第4张图片

9.2 地址空间

在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第5张图片
深入理解计算机系统 第九章虚拟内存_第6张图片
深入理解计算机系统 第九章虚拟内存_第7张图片

9.3 虚拟内存作为缓存的工具

深入理解计算机系统 第九章虚拟内存_第8张图片
深入理解计算机系统 第九章虚拟内存_第9张图片

9.3.1 DRAM缓存的组织结构

深入理解计算机系统 第九章虚拟内存_第10张图片

9.3.2 页表

深入理解计算机系统 第九章虚拟内存_第11张图片
深入理解计算机系统 第九章虚拟内存_第12张图片
深入理解计算机系统 第九章虚拟内存_第13张图片
深入理解计算机系统 第九章虚拟内存_第14张图片

9.3.3 页命中

深入理解计算机系统 第九章虚拟内存_第15张图片

9.3.4 缺页

深入理解计算机系统 第九章虚拟内存_第16张图片
深入理解计算机系统 第九章虚拟内存_第17张图片
深入理解计算机系统 第九章虚拟内存_第18张图片

9.3.5 分配页面

深入理解计算机系统 第九章虚拟内存_第19张图片
深入理解计算机系统 第九章虚拟内存_第20张图片

9.3.6 又是局部性救了我们

深入理解计算机系统 第九章虚拟内存_第21张图片
深入理解计算机系统 第九章虚拟内存_第22张图片

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

在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第23张图片
深入理解计算机系统 第九章虚拟内存_第24张图片
深入理解计算机系统 第九章虚拟内存_第25张图片
在这里插入图片描述

9.5 虚拟内存作为内存保护的工具

深入理解计算机系统 第九章虚拟内存_第26张图片
深入理解计算机系统 第九章虚拟内存_第27张图片

9.6 地址翻译

深入理解计算机系统 第九章虚拟内存_第28张图片
深入理解计算机系统 第九章虚拟内存_第29张图片
在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第30张图片
深入理解计算机系统 第九章虚拟内存_第31张图片
深入理解计算机系统 第九章虚拟内存_第32张图片
深入理解计算机系统 第九章虚拟内存_第33张图片
深入理解计算机系统 第九章虚拟内存_第34张图片

9.6.1 结合高速缓存和虚拟内存

深入理解计算机系统 第九章虚拟内存_第35张图片
深入理解计算机系统 第九章虚拟内存_第36张图片
深入理解计算机系统 第九章虚拟内存_第37张图片

9.6.3 多级页表

深入理解计算机系统 第九章虚拟内存_第38张图片
深入理解计算机系统 第九章虚拟内存_第39张图片
深入理解计算机系统 第九章虚拟内存_第40张图片
深入理解计算机系统 第九章虚拟内存_第41张图片
在这里插入图片描述

9.6.4 综合:端到端的地址翻译

深入理解计算机系统 第九章虚拟内存_第42张图片
深入理解计算机系统 第九章虚拟内存_第43张图片
深入理解计算机系统 第九章虚拟内存_第44张图片
深入理解计算机系统 第九章虚拟内存_第45张图片
深入理解计算机系统 第九章虚拟内存_第46张图片
深入理解计算机系统 第九章虚拟内存_第47张图片
深入理解计算机系统 第九章虚拟内存_第48张图片
深入理解计算机系统 第九章虚拟内存_第49张图片
深入理解计算机系统 第九章虚拟内存_第50张图片

9.7 案例研究:Intel Core i7/Linux 内存系统

深入理解计算机系统 第九章虚拟内存_第51张图片
深入理解计算机系统 第九章虚拟内存_第52张图片
深入理解计算机系统 第九章虚拟内存_第53张图片
深入理解计算机系统 第九章虚拟内存_第54张图片
深入理解计算机系统 第九章虚拟内存_第55张图片
在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第56张图片
深入理解计算机系统 第九章虚拟内存_第57张图片
深入理解计算机系统 第九章虚拟内存_第58张图片

9.7.2 Linux 虚拟内存系统

深入理解计算机系统 第九章虚拟内存_第59张图片
深入理解计算机系统 第九章虚拟内存_第60张图片
深入理解计算机系统 第九章虚拟内存_第61张图片
深入理解计算机系统 第九章虚拟内存_第62张图片
深入理解计算机系统 第九章虚拟内存_第63张图片
深入理解计算机系统 第九章虚拟内存_第64张图片

9.8 内存映射

深入理解计算机系统 第九章虚拟内存_第65张图片
在这里插入图片描述

9.8.1 再看共享对象

深入理解计算机系统 第九章虚拟内存_第66张图片
深入理解计算机系统 第九章虚拟内存_第67张图片
深入理解计算机系统 第九章虚拟内存_第68张图片
在这里插入图片描述

9.8.2 再看fork函数

深入理解计算机系统 第九章虚拟内存_第69张图片

9.8.3 再看execve函数

在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第70张图片
深入理解计算机系统 第九章虚拟内存_第71张图片

9.8.4 使用mmap函数的用户级内存映射

深入理解计算机系统 第九章虚拟内存_第72张图片
深入理解计算机系统 第九章虚拟内存_第73张图片
深入理解计算机系统 第九章虚拟内存_第74张图片
深入理解计算机系统 第九章虚拟内存_第75张图片
深入理解计算机系统 第九章虚拟内存_第76张图片

9.9 动态内存分配

深入理解计算机系统 第九章虚拟内存_第77张图片
深入理解计算机系统 第九章虚拟内存_第78张图片

9.9.1 malloc和free函数

在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第79张图片
深入理解计算机系统 第九章虚拟内存_第80张图片
深入理解计算机系统 第九章虚拟内存_第81张图片
深入理解计算机系统 第九章虚拟内存_第82张图片

9.9.2 为什么要使用动态内存分配

深入理解计算机系统 第九章虚拟内存_第83张图片
深入理解计算机系统 第九章虚拟内存_第84张图片

9.9.3 分配器的要求和目标

深入理解计算机系统 第九章虚拟内存_第85张图片
深入理解计算机系统 第九章虚拟内存_第86张图片

9.9.4 碎片

深入理解计算机系统 第九章虚拟内存_第87张图片
深入理解计算机系统 第九章虚拟内存_第88张图片

9.9.5 实现问题

深入理解计算机系统 第九章虚拟内存_第89张图片

9.9.6 隐式空闲列表

深入理解计算机系统 第九章虚拟内存_第90张图片
深入理解计算机系统 第九章虚拟内存_第91张图片
深入理解计算机系统 第九章虚拟内存_第92张图片
深入理解计算机系统 第九章虚拟内存_第93张图片
深入理解计算机系统 第九章虚拟内存_第94张图片

9.9.7 放置已分配的块

在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第95张图片

9.9.8 分割空闲块

深入理解计算机系统 第九章虚拟内存_第96张图片

9.9.9 获取额外的堆内存

深入理解计算机系统 第九章虚拟内存_第97张图片

9.9.10 合并空闲块

在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第98张图片

9.9.11 带边界标记的合并

深入理解计算机系统 第九章虚拟内存_第99张图片
深入理解计算机系统 第九章虚拟内存_第100张图片
深入理解计算机系统 第九章虚拟内存_第101张图片
在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第102张图片
深入理解计算机系统 第九章虚拟内存_第103张图片
深入理解计算机系统 第九章虚拟内存_第104张图片

9.9.12 综合:实现一个简单的分配器

深入理解计算机系统 第九章虚拟内存_第105张图片
深入理解计算机系统 第九章虚拟内存_第106张图片
深入理解计算机系统 第九章虚拟内存_第107张图片
深入理解计算机系统 第九章虚拟内存_第108张图片
深入理解计算机系统 第九章虚拟内存_第109张图片
深入理解计算机系统 第九章虚拟内存_第110张图片
深入理解计算机系统 第九章虚拟内存_第111张图片
在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第112张图片
深入理解计算机系统 第九章虚拟内存_第113张图片
深入理解计算机系统 第九章虚拟内存_第114张图片
深入理解计算机系统 第九章虚拟内存_第115张图片
深入理解计算机系统 第九章虚拟内存_第116张图片
深入理解计算机系统 第九章虚拟内存_第117张图片
深入理解计算机系统 第九章虚拟内存_第118张图片
深入理解计算机系统 第九章虚拟内存_第119张图片
深入理解计算机系统 第九章虚拟内存_第120张图片
在这里插入图片描述
在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第121张图片
在这里插入图片描述
在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第122张图片
深入理解计算机系统 第九章虚拟内存_第123张图片
深入理解计算机系统 第九章虚拟内存_第124张图片

9.9.13 显式空闲链表

深入理解计算机系统 第九章虚拟内存_第125张图片
深入理解计算机系统 第九章虚拟内存_第126张图片
在这里插入图片描述

9.9.14 分离的空闲链表

深入理解计算机系统 第九章虚拟内存_第127张图片
深入理解计算机系统 第九章虚拟内存_第128张图片
在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第129张图片
深入理解计算机系统 第九章虚拟内存_第130张图片
深入理解计算机系统 第九章虚拟内存_第131张图片

9.10 垃圾收集

深入理解计算机系统 第九章虚拟内存_第132张图片
深入理解计算机系统 第九章虚拟内存_第133张图片

9.10.1 垃圾收集器的基本知识

深入理解计算机系统 第九章虚拟内存_第134张图片
深入理解计算机系统 第九章虚拟内存_第135张图片

9.10.2 Mark&Sweep垃圾收集器

深入理解计算机系统 第九章虚拟内存_第136张图片
深入理解计算机系统 第九章虚拟内存_第137张图片
深入理解计算机系统 第九章虚拟内存_第138张图片

9.10.3 C程序的保守Mark&Sweep

深入理解计算机系统 第九章虚拟内存_第139张图片
深入理解计算机系统 第九章虚拟内存_第140张图片

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

深入理解计算机系统 第九章虚拟内存_第141张图片

9.11.1 间接引用坏指针

深入理解计算机系统 第九章虚拟内存_第142张图片

9.11.2 读未初始化的内存

在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第143张图片

9.11.3 允许栈缓存区溢出

深入理解计算机系统 第九章虚拟内存_第144张图片

9.11.4 假设指针和它指向的对象是相同大小的

深入理解计算机系统 第九章虚拟内存_第145张图片
深入理解计算机系统 第九章虚拟内存_第146张图片

9.11.5 造成错位错误

深入理解计算机系统 第九章虚拟内存_第147张图片

9.11.6 引用指针,而不是它指向的对象

深入理解计算机系统 第九章虚拟内存_第148张图片

9.11.7 误解指针运算

在这里插入图片描述
深入理解计算机系统 第九章虚拟内存_第149张图片

9.11.8 引用不存在的变量

深入理解计算机系统 第九章虚拟内存_第150张图片

9.11.9 引用空闲堆块中的数据

深入理解计算机系统 第九章虚拟内存_第151张图片
在这里插入图片描述

9.11.10 引起内存泄露深入理解计算机系统 第九章虚拟内存_第152张图片

9.12 小结

深入理解计算机系统 第九章虚拟内存_第153张图片

你可能感兴趣的:(深入理解计算机系统)