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

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

教材学习内容总结

1.物理寻址
计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址PA。第一个字节的地址为0,接下来的字节的地址为1,再下一个为2,依此类推。给定这种简单的结构,CPU访问存储器的最自然的方式就是使用物理地址,我们把这种方式称为物理寻址。
2.虚拟寻址
使用虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址。将一个虚拟地址转换为物理地址的任务叫做地址翻译。
CPU芯片上叫做存储器管理单元的专用硬件,利用存放在主存中的查询表来动态翻译虚拟地址,该表的内容是由操作系统管理。

虚拟存储器的三个重要能力:

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

虚拟存储器的基本思想:允许每个数据对象有多个独立的地址,其中每个地址都选自一个不同的地址空间

虚拟存储器作为存储器管理的工具

操作系统为每个进程提供了一个独立的页表,也就是一个独立的虚拟地址空间。
多个虚拟页面可以映射到同一个共享物理页面上。
存储器映射:将一组连续的虚拟页映射到任意一个文件中的任意位置的表示法。
按需页面调度和独立的虚拟地址空间的结合简化了链接和加载、代码和数据共享,以及应用程序的存储器分配。
    简化链接:独立的地址空间允许每个进程的存储器映像使用相同的基本格式,而不管代码和数据实际存放在物理存储器的何处。
    简化加载:虚拟存储器使得容易想存储器中加载可执行文件和共享文件对象。
    简化共享:独立地址空间为操作系统提供了一个管理用户进程和操作系统自身之间共享的一致机制。
    简化存储器分配:虚拟存储器为向用户进程提供一个简单的分配额外存储器的机制。

地址翻译:

1.页面命中时,CPU执行步骤:

第一步:处理器生成一个虚拟地址,并把它传送给MMU
第二步:MMU生成PTE地址,并从高速缓存/主存请求得到他
第三步:高速缓存/主存向MMU返回PTE
第四步:MMU构造物理地址,并把它传送给高速缓存/主存
第五步:高速缓存/主存返回所请求的数据字给处理器

2.处理缺页,要求硬件和操作系统协作完成

第一步到第三步同上
第四步:PTE中的有效位是0,MMU触发异常,传递CPU中的控制到操作系统内核中的缺页异常处理程序
第五步:程序确定物理存储器中的牺牲页,如果页面被修改,则换出到磁盘
第六步:程序页面调入新的页面,并更新存储器中的PTE
第七步:程序返回到原来的进程,再次执行导致缺页的指令

3.结合高速缓存和虚拟存储器

主要的思路:地址翻译发生在高速缓存查找之前

4.利用TLB加速地址翻译

翻译后备缓冲器TLB:是一个小的,虚拟寻址的缓存,其中每一行都保存着一个由单个PTE组成的块,具有高度的相连性

5.用来压缩页表的常用方法是使用层次结构的页表,这种方式从两个方面减少了存储器要求:

第一点:节约,如果一级页表中的PTE是空的,那么相应的二级页表就不会存在
第二点:减压,只有一级页表存在主存中,只有经常使用的二级页表才需要缓存在主存中

Linux虚拟存储器: 每个存在的虚拟页存在某个区域中,而不属于某个区域的虚拟页是不存在的,并且不能被进程引用。 一个具体区域结构包含的字段:

(1)vm_start:指向这个区域的起始处。 (2)vm_end:指向这个区域的结束处。 (3)vm_prot:描述这个区域的内包含的所有页的读写许可权限。 (4)vm_flags:描述这个区域内页面是与其他进程共享的,还是这个进程私有的(还描述了其他一些信息)。 (5)vm_next:指向链表中下一个区域结构。

Linux缺页异常处理:

碎片:虽然有未使用的存储器,但是不能用来满足分配请求。 内部碎片:发生在一个已分配块比有效载荷大的时候,易于量化。 外部碎片:发生在当空闲存储器合计起来足够满足一个分配请求,但是没有一个单独的空间块足以处理这个请求时发生。难以量化,不可预测。

垃圾收集器是动态存储分配器,自动释放程序不在需要的已分配块 makr&sweep垃圾收集器有标记阶段和清除阶段

Mark&Sweep垃圾收集器

  • Mark&Sweep垃圾收集器由标记阶段和清除阶段组成,标记阶段标记出根节点所有可达的和已分配的后继,清除阶段释放每个未被标记的已分配块。
  • 在对Mark&Sweep的描述中使用下列函数:
    • ptr isPtr(ptr p):如果p指向一个已分配块中的某个字,那么就返回一个指向这个块起始位置的指针b,否则返回NULL。
    • int blockMarked(ptr b):如果已经标记了块b,就返回true。
    • int blockAllocated(ptr b):如果块b是已分配的,就返回true。
    • void markBlock(ptr b):标记块b。
    • int length(ptr b):返回块b的以字为单位的长度(不包括头部)。
    • void unmarkBlock(ptr b):将块b的状态由已标记的改为未标记的。
    • ptr nextBlock(ptr b):返回堆中块b的后继。

C程序中常见的与存储器有关的错误 间接引用坏指针:在进程的虚拟地址空间中有较大的洞,没有映射到任何有意义的数据,如果试图引用一个指向这些洞的指针,操作系统就会以段异常来终止程序。 读未初始化的存储器 允许栈缓冲区溢出 造成错位错误 误解指针运算 引用不存在的变量

本周代码托管

其他(感悟、思考等,可选)

这章是关于虚拟存储器的,这是计算机的一个重要的抽象,从而将计算机中的物理存储空间抽象了出来。

当然这也可能引发一些错误,例如上面所说到的c语言中的一些错误,在了解了这些知识后能够更好地帮助我们去避免一些因为存储而出现的错误

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 100/100 1/2 10/10
第二周 150/200 2/4 8/18
第三周 200/250 1/5 5/23
第五周 50/300 1/6 9/32
第六周 20/320 1/7 8/40
第七周 20/340 1/8 6/46
第八周 60/400 2/10 6/52
第九周 80/480 1/11 8/60
第十周 60/540 2/13 6/66
第十一周 80/620 1/14 6/72
第十二周 50/670 1/15 5/77
第十三周 50/720 1/16 6/83
第十四周 0/720 1/17 5/88

参考资料

时间: 2024-10-12 22:49:03

20145311 《信息安全系统设计基础》第十四周学习总结的相关文章

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

第九章 虚拟存储器 虚拟存储器的三个重要能力: 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存 它为每个进程提供了一致的地址空间,从而简化了存储器管理 它保护了每个进程的地址空间不被其他进程破坏 第一节 物理和虚拟寻址 1.物理地址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组,每字节都有一个唯一的物理地址PA. 根据物理地址寻址的是物理寻址. 2.虚拟地址 虚拟存储器被组织为

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

第九章  虚拟存储器 一.虚拟存储器提供了三个重要能力: 1.将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据: 2.为每个进程提供了一致的地址空间,从而简化了存储器管理: 3.保护了每个进程的地址空间不被其它进程破坏. 二.理解虚拟存储器的原因: 1.虚拟存储器是中心的:它是硬件异常.硬件地址翻译.主存.磁盘文件和内核软件的交互中心: 2.虚拟存储器是强大的:它可以创建和销毁存储器片.可以映射存储器片映射到磁盘某个部分等等: 3

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

第九章 虚拟存储器 虚拟存储器的三个重要能力: 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存. 它为每个进程提供了一致的地址空间,从而简化了存储器管理 它保护了每个进程的地址空间不被其他进程破坏. 1.物理和虚拟寻址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组. 每个字节都有唯一的物理地址. 第一个字节的地址为0,接下来的字节地址为1,在下一个为2,依次类推. 给定这种简单

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

第九章 虚拟存储器 虚拟存储器是硬件异常.硬件地址翻译.主存.磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的.一致的和私有的地址空间. 通过一个很清晰的机制,虚拟存储器提供了三个重要的能力: (1)它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存. (2)它为每个进程提供了一致的地址空间,从而简化了存储器管理. (3)它保护了每个进程的地址空间不被其他进程破坏. 9.1 物理和虚拟寻址

20135234马启扬-——信息安全系统设计基础第十四周学习总结

第九章 虚拟存储器 主要作用: 将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据: 为每个进程提供了一致的地址空间,从而简化了存储器管理: 保护了每个进程的地址空间不被其它进程破坏 9.1 物理和虚拟寻址 1.物理地址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组,每字节都有一个唯一的物理地址PA. 根据物理地址寻址的是物理寻址. 2.虚拟地址 虚拟存储器被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成

2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)

2017-2018-1 20155305 <信息安全系统设计基础>第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客) 课堂提交题目要求 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 代码码云链接补交 源代码main函数 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.

2018-2019-1 20165336《信息安全系统设计基础》第四周学习总结

2018-2019-1 20165336<信息安全系统设计基础>第四周学习总结 1.教材学到的知识点 Y86-64中程序员(汇编程序员.编译器等)可见的状态包括程序寄存器.条件码.程序状态.程序计数器(PC).内存 Y86-64中有15个程序寄存器分别是%eax %ecx %edx %ebx %esp %ebp %esi %eadi ZF SF OF PC Stat DMEM Y86-64指令支持的整数操作的长度是8字节 Y86-64的指令编码长度是1-10字节,指令编码长度从1-6个字节不等

2018-2019-1 20165214 《信息安全系统设计基础》第四周学习总结

20165214 2018-2017-1 <信息安全系统设计基础>第四周学习总结 教材学习内容总结 1.ISA的概念:一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构.不同的处理器具有不同的ISA. 2.什么是冒险:一条指令的位置或操作数依赖于其他仍在流水线中的指令. 3.Y86-64有15个程序寄存器,其中%rsp被入栈.出栈.调用和返回指令座位栈指针.标志位ZF.SF.OF保存着最近的算数或逻辑指令所造成影响的有关信息. 4.Y84-64只包括8字节整数操作.指令的字节级编码需

2019-2020-1 20175320 《信息安全系统设计基础》第四周学习总结

2019-2020-1 20175320 <信息安全系统设计基础>第四周学习总结 一.教材学习内容总结 本周我们了解了在计算机系统中信息的表示与处理的方法,主要包括了以下三个方面:进制转换.位的概念与运算.信息的表示.数值运算以及信息的存储. 进制转换 进制转换已经在前面各门课程中多次提及,这里我就不再赘述了. 位的概念 该部分主要介绍了位向量的概念,并介绍了位运算以及逻辑运算,并介绍了两种移位方式,这部分需要注意的是: 注意位运算符号与逻辑运算符号的区别,以及两者计算结果数据类型的区别. 移

2018-2019-1 20165326 《信息安全系统设计基础》第四周学习总结

第四周学习总结 1.程序员可见状态 15个程序寄存器(RF) 3个条件码(CC) 程序状态(Stat) 程序计数器(PC) 内存(DMEM) 2.Y86指令 在Y86当中,寄存器也是有8个,每一个寄存器可以存储一个字,也就是一个32位二进制.条 件码是一个一位二进制的寄存器,保存着最近的算术或逻辑运算所造成的影响的信息.PC则是程序计数器,记录当前正在执行的指令的地址.存储器则是一个很大的字节数组,保存着程序和数据,Y86的程序可以使用虚拟地址(类似于数组的下标)来访问存储器,硬件和操作系统会将