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

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

教材学习内容总结

理解虚拟存储器的概念和作用

  • 虚拟内存提供了三个重要的能力:
    • 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存。
    • 它为每个进程提供了一致的地址空间,从而简化了存储器管理。
    • 它保护了每个进程的地址空间不被其他进程破坏。
  • 程序员需要理解虚拟内存
    • 虚拟内存是核心的:有助于理解计算机系统的工作方式
    • 虚拟内存是强大的:给与应用程序强大的能力
    • 虚拟内存是危险的:合理地管理分配内存可以减少出错风险。

理解地址翻译的概念

  • 地址翻译:一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)之间的映射:MAP: VAS → PAS ∪ ∅
    • MAP = A' ,如果虚拟地址A处的数据在PAS的物理地址A'处
    • MAP = ∅ ,如果虚拟地址A处的数据不在物理存储器中
  • CPU中的一个控制寄存器,页表基址寄存器指向当前页表,n 位的虚拟地址包含两个部分:一个 p 位的虚拟页面偏移(VPO) 和一个(n-p)位的虚拟页号,页表条目中的物理页页号和虚拟地址中的VPO串联起来,就得到了相应的物理地址。

理解存储器映射

  • 存储器映射:Linux通过将一个虚拟存储器区域与一个磁盘上的对象(object)关联起来,以初始化这个虚拟内存区域的内容的过程。
  • 虚拟内存区域可以映射到两种对象中的一种:
    • Linux 文件系统中的普通文件
    • 匿名文件
  • 一旦一个虚拟页面被初始化了,它就在一个由内核维护的专门的交换文件(swap file)之间换来换去。交换文件也叫交换空间,或交换区域。交换空间限制能够分配的虚拟页面总数。

掌握动态存储器分配的方法

  • 当运行时需要额外虚拟存储器时,使用动态内存分配器维护一个进程的虚拟存储器区域。
  • 分配器有两种基本风格。两种风格都要求应用显式地分配块。不同在于由哪个实体来负责释放已分配地块:
    • 显示分配器:要求应用显式地释放任何已经分配的块。
    • 隐式分配器:要求分配器检测一个已分配块何时不再被程序所使用,就释放这个块。也叫做垃圾收集器。

理解垃圾收集的概念

  • 动态内存分配器,自动释放程序不再需要的已分配块。
  • 垃圾收集器将内存视为一张有向可达图,从根节点出发,不可达的堆节点视为垃圾。两个节点的指向关系是其中一个节点包含另一个的位置信息。

了解C语言中与存储器有关的错误

  • 间接引用坏指针
    • 在进程的虚拟地址空间中有较大的洞,没有映射到任何有意义的数据,如果试图引用一个指向这些洞的指针,操作系统就会以段异常来终止程序。
    • 典型的错误是:scanf("%d",val);,没有加&符号
  • 读未初始化的内存
    • 虽然bass存储器位置总是被加载器初始化为0,但对于堆存储器却并不是这样的。
    • 常见的错误就是假设堆存储器被初始化为0.
  • 允许栈缓冲区溢出
    • 如果一个程序不检查输入串的大小就写入栈中的目标缓冲区,程序就会出现缓冲区溢出错误。
  • 假设指针和指向他们的对象大小是相同的。
  • 造成错位错误。
  • 引用指针,而不是他所指向的对象。
  • 误解指针运算
    • 忘记了指针的算术操作是以它们指向的对象的大小为单位来进行,而这种大小单位不一定是字节。
  • 引用不存在的变量
  • 引用空闲堆块中的数据
  • 引起存储器泄露
    • 当不小心忘记释放已分配块,而在堆里创建了垃圾时,就会引起存储器泄露。

代码托管

学习进度条

| | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|
| -------- | :----------------😐:----------------😐:---------------: |:-----😐
| 目标 | 1000行 | 30篇 |400小时 | |
| 第一周 | 156/200 | 2/2 | 20/20 | |
| 第二周 | 121/200 | 2/2 | 18/30 | |
| 第三周 | 107/200 | 2/2 | 15/30
| 第四周 | 111/200 | 2/2 | 16/30
| 第五周 | 101/200 | 1/1 | 18/30
| 第六周 | 110/200 | 2/2 | 19/30
| 第七周 | 90/200 | 1/1 | 18/30
| 第八周 | 93/200 | 1/1 | 15/30
| 第九周 | 265/200 | 1/1 | 25/30

posted @ 2018-12-02 23:47  treebeard  阅读(104)  评论(0编辑  收藏  举报