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

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

教材学习内容总结

目录内容:ls

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

  • 概念:虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。

  • 作用:

    • 将主存看做是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动区域。
    • 为每个进程提供了一致的地址空间,从而简化了存储器管理。
    • 保护每个进程的地址空间不被其他进程破坏。

2.理解地址翻译的概念

  • 概念:把一个虚拟地址转换为物理地址的任务。

3.理解存储器映射

  • 概念:Linux通过将一个虚拟内存区域与一个磁盘上的对象(object)关联起来,以初始化这个虚拟内存区域的内容。

  • Linux中的普通文件:一个区域可以映射到一个普通磁盘文件的连续部分,例如一个可执行目标文件。

  • 匿名文件:一个区域也可以映射到一个匿名文件,匿名文件是由内核创建的,包含的全是二进制零。

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

  • 概念:当运行时需要额外虚拟存储器时,使用动态存储器分配器维护一个进程的虚拟存储器区域。
  • 分配器有两种:
    • 显示分配器:要求应用显式地释放任何已经分配的块。
    • 隐式分配器:要求分配器检测一个已分配块何时不再被程序所使用,就释放这个块。也叫做垃圾收集器。

5.理解垃圾收集的概念

  • 垃圾收集器是一种动态存储分配器。自动释放程序已经不再需要的已分配块。

  • 垃圾收集器将存储器视为一张有向可达图。

  • Mark%Sweep垃圾收集器:由标记(mark)阶段和清除(sweep)阶段组成。

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

  • 间接引用坏指针

  • 引用指针,而不是所指向的对象

  • 误解指针运算

  • 引起存储器泄露

教材学习中的问题和解决过程

  • 问题1:malloc()从哪里获得的内存空间?

  • 问题1解决方案:从堆里面获得空间。当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。

代码调试中的问题和解决过程

  • 问题1:无法打开Y86-64模拟器界面

  • 问题1解决方案:将两个GUI路径分别设置为TKLIBS=-L/usr/lib -ltk8.5 -ltcl8.5和TKINC=-I/usr/include/tcl8.5(原因是Y86-64模拟器的Makefile中配置GUI相关路径错误导致的)

上周考试错题总结

  • 错题1:

    • Unix/Linux中,对于代码fd=open("foo",O_WRONLY,0766),umask=022,下面说法正确的是(AC)
      A . 进程对foo是只写的
      B . 同组成员能写foo
      C . 使用者可以执行foo
      D . 任何人都可以写foo

    • 解析:因为九个权限可以用0777表示,07(使用者)7(同组成员)7(其他人)7(111)(读:写:执行),文件实际权限是mode&~mask。

  • 错题2:

    • 有关磁盘操作,说法正确的是(ACD)
      A . 对磁盘扇区的访问时间包括三个部分中,传送时间最小。
      B . 磁盘以字节为单位读写数据
      C . 磁盘以扇区为单位读写数据
      D . 读写头总处于同一柱面

    • 解析:对磁盘扇区的访问时间中传送时间最小;磁盘以扇区为单位读写数据;磁盘操作中读写头总处于同一柱面。

其他

这一章的内容有点难,花的时间比预计多了一些,但是书本上的东西认真看还是可以理解的。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:15小时

  • 实际学习时间:20小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

原文地址:https://www.cnblogs.com/tutu233/p/10037616.html