信息安全系统设计基础第十四周学习总结
第九章 虚拟存储器
9.1 物理和虚拟寻址
1. 物理寻址
计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址PA。第一个字节的地址为0,
接下来的字节的地址为1,再下一个为2,依此类推。
给定这种简单的结构,CPU访问存储器的最自然的方式就是使用物理地址,我们把这种方式称为物理寻址。
2. 虚拟寻址
使用虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址。将一个虚拟地址转
换为物理地址的任务叫做地址翻译。
CPU芯片上叫做存储器管理单元的专用硬件,利用存放在主存中的查询表来动态翻译虚拟地址,该表的内容是由操作系统管理。
9.2 地址空间
1.线性地址空间:地址空间中的整数是连续的一个非整数地址的有序集合:{0,1,2,...}。
2. 虚拟地址空间:在一个带虚拟存储器的系统中,CPU从一个有N = 2 ^ n个地址空间中生成虚拟地址。{0,1,2,3,...,N-1}。
3.一个地址空间的大小是由表示最大地址所需要的倍数来描述的。
4.虚拟存储器的基本思想:允许每个数据对象有多个独立的地址,其中每个地址都选自一个不同的地址空间。
9.3 虚拟存储器作为缓存的工具
1.虚拟存储器被组织为一个由存放在磁盘上N个连续的字节大小的单元组成的数组。每个字节都有一个唯一的虚拟地址,这个唯一的虚拟地址
是作为到数组的索引的。
2.每个虚拟页的大小为P = 2 ^ n字节。物理存储器被分割为物理页(PP),大小也为P字节(物理页也称为页帧)。
3.在任意时刻,虚拟页面的集合都分为三个不相交的子集:未分配的、缓存的、未缓存的
4.页表:一个页表条目的数组。将虚拟地址映射为物理地址,每个页表项(PTE),有一个有效位,标识该地址是否在内存的缓存中,还有物理
页号或磁盘地址。
5.缺页,如果地址不再页表中,则牺牲一条记录,加载进新的地址映射和内容。
9.4 虚拟存储器作为存储器管理的工具
1、存储器映射:将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容,一旦一个虚拟页面被初始化了,
他就在一个由内核维护的专门的交换文件之间换来换去。
2.简化链接、简化加载、简化共享、简化存储器分配
9.5 虚拟存储器作为存储器保护的工具
9.6 地址翻译
翻译整个过程:
地址翻译单元从虚拟地址中拿到虚拟页号,检查TLB,看是否存在TPE的缓存,如果有返回,若没有,查询主存的页表,页表可以实现多级,
拿到物理页号,如没有产生中断,调入地址,内核重新发送解析指令,最终返回物理地址;得到物理地址之后,将物理地址发给L1缓存,L1
没有L2、L3、主存。
9.7 Linux虚拟存储器系统
1. Linux虚拟存储器区域
每个存在的虚拟页存在某个区域中,而不属于某个区域的虚拟页是不存在的,并且不能被进程引用。
2.一个具体区域结构包含的字段:
(1)vm_start:指向这个区域的起始处。
(2)vm_end:指向这个区域的结束处。
(3)vm_prot:描述这个区域的内包含的所有页的读写许可权限。
(4)vm_flags:描述这个区域内页面是与其他进程共享的,还是这个进程私有的(还描述了其他一些信息)。
(5)vm_next:指向链表中下一个区域结构。
9.8 存储器映射
1.再看共享对象
(1)共享区域:
一个映射到共享对象的虚拟存储器区域叫做共享区域。
共享对象的关键点在于即使对象被映射到了多个共享区域,物理存储器也只需要存放共享对象的一个拷贝。一个共享对象物理页面不一定是连续的。
(2)私有对象是使用写时拷贝巧妙技术被映射到虚拟存储器中的。
2. 再看fork函数
当fork函数被当前进程调用时,内核为新进程创建各种数据结构,并分配给它一个唯一的PID。
3. 再看execve函数
execve函数在当前进程中加载并运行包含在可执行目标文件a.out中的程序,用a.out程序有效地替代了当前程序。
4. 使用mmap函数的用户级存储器映射
mmap函数要求内核创建一个新的虚拟存储器区域,最好是从地址start开始的一个区域,并将文件描述符fd指定的对象的一个连续的片映射到这个新区域。
9.9 动态存储分配
1.堆:一个动态存储器分配器维护着一个进程的虚拟存储器区域。
堆是一个请求二进制0的区域;对于每个进程,内核维护着一个变量brk,它指向堆的顶部。
分配器将堆视为一组不同大小的块的集合来维护。每个块就是一个连续的虚拟存储器组块,要么是已分配的,要么是未分配的。
2.显式分配器、隐式分配器
3.不修改已分配的块:分配器只能操作或者改变空闲块。一旦被分配,就不允许修改或者移动它。
4.碎片
外部碎片、内部碎片
5.放置分配的块的策略有:
首次适配、下一次适配、最佳适配
9.10 垃圾收集
垃圾收集器将存储器视为一张有向可达图。
Mark%Sweep垃圾收集器由标记(mark)阶段和清除(sweep)阶段组成。
总结体会
这章内容多,但是书上讲的很详细,仔细看书都可以解决遇到的问题,所以并没有很大的学习障碍。
在学习的过程中提升了自己的归纳整理能力。