2017-2018-1 20155328 《信息安全系统设计基础》第十一周学习总结

教材学习内容总结

  • 如果地址空间的整数是连续的,则它是一个线性地址空间。

  • 虚拟页面的集合分为三个不相交的子集:未分配的、缓存的和未缓存的。

  • 页表将虚拟页映射到物理页,是一个页表条目的数组。

  • 虚拟内存简化了链接和加载、代码和数据共享,以及应用程序的内存分配。

  • 地址翻译是一个N元素的虚拟地址空间中的元素和一个M元素的物理地址空间中元素之间的映射。

  • Linux通过将一个虚拟内存区域与一个磁盘上的对象关联起来,以初始化这个虚拟内存区域的内容,此过程称为内存映射。虚拟内存区域可以映射到Linux文件系统中的普通文件和匿名文件其中的一种。

  • 动态内存分配器将堆视为一组不同大小的块的集合来维护。

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

  • 问题1:对垃圾收集不太理解。
  • 解决方法:垃圾收集器将内存视为一张有向可达图。不可达的即为垃圾。垃圾收集器的角色是维护可达图的表达式,并通过释放不可达节点且将它们返回给空闲链表,来定期回收他们。

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

暂未遇到。

代码托管

上周考试错题总结

  • 下面代码中(C)局部性最差

1 #define N 1000
2 3
typedef struct {
4 int vel[3];
5 int acc[3];
6 } point;
7 8
point p[N];

A .
1 void clear1(point *p, int n)
2 {
3 int i, j;
4 5
for (i = 0; i < n; i++) {
6 for (j = 0; j < 3; j++)
7 p[i].vel[j] = 0;
8 for (j = 0; j < 3; j++)
9 p[i].acc[j] = 0;
10 }
11 }

B .
1 void clear2(point *p, int n)
2 {
3 int i, j;
4 5
for (i = 0; i < n; i++) {
6 for (j = 0; j < 3; j++) {
7 p[i].vel[j] = 0;
8 p[i].acc[j] = 0;
9 }
10 }
11 }

C .
1 void clear3(point *p, int n)
2 {
3 int i, j;
4 5
for (j = 0; j < 3; j++) {
6 for (i = 0; i < n; i++)
7 p[i].vel[j] = 0;
8 for (i = 0; i < n; i++)
9 p[i].acc[j] = 0;
10 }
11 }

D .
不确定

  • 下面代码,(A)具有差的空间局部性。
    A .
    1 int sumvec(int v[N])
    2 {
    3 int i, sum = 0;
    4
    5 for (i = 0; i < N; i++)
    6 sum += v[i];
    7 return sum;
    8 }

B .
1 int sumarrayrows(int a[M][N])
2 {
3 int i, j, sum = 0;
4 5
for (i = 0; i < M; i++)
6 for (j = 0; j < N; j++)
7 sum += a[i][j];
8 return sum;
9 }

C .
1 int sumarraycols(int a[M][N])
2 {
3 int i, j, sum = 0;
4 5
for (j = 0; j < N; j++)
6 for (i = 0; i < M; i++)
7 sum += a[i][j];
8 return sum;
9 }

D .
以上都不对

  • 下面说法正确的是(CD)
    A .
    CPU通过内存映射I/O向I/O设备发命令

B .
DMA传送不需要CPU的干涉

C .
SSD是一种基于闪存或Flash的存储技术

D .
逻辑磁盘块的逻辑块号可以翻译成一个(盘面,磁道,扇区 )三元组。

  • 有关磁盘操作,说法正确的是()
    A .
    对磁盘扇区的访问时间包括三个部分中,传送时间最小。

B .
磁盘以字节为单位读写数据

C .
磁盘以扇区为单位读写数据

D .
读写头总处于同一柱面

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

20155325

  • 结对学习内容
    教材第九章

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 40/40 1/1 20/20
第二周 40/40 1/2 18/38
第四周 154/194 2/4 20/58
第五周 48/242 2/6 20/78
第六周 59/301 2/8 19/97
第七周 354/655 2/9 18/115
第八周 455/1100 1/10 15/130
第九周 200/1300 2/11 18/148
第十一周 38/15289 2/13 18/166
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:20小时

  • 实际学习时间:18小时

  • 改进情况:

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

参考资料