码迷,mamicode.com
首页 > 其他好文 > 详细

信息安全系统设计基础第十四周学习总结

时间:2015-12-13 23:17:56      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

第九章 虚拟存储器

 

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)阶段组成。

总结体会

这章内容多,但是书上讲的很详细,仔细看书都可以解决遇到的问题,所以并没有很大的学习障碍。

在学习的过程中提升了自己的归纳整理能力。

信息安全系统设计基础第十四周学习总结

标签:

原文地址:http://www.cnblogs.com/hzy20/p/5043642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!