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

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

学习任务

  • 找出全书你认为最重要的一章,深入重新学习一下,要求(期末占10分):
  • 完成这一章所有习题
  • 详细总结本章要点
  • 给你的结对学习搭档讲解你的总结并获取反馈
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《信息安全系统设计基础》第十三周学习总结”,博客(随笔)要通过作业提交,截至时间本周日 23:59。

选择章节和要点

  • 我认为本书最重要的是第九章——虚拟内存

  • 本章的要点我认为是动态内存分配,和垃圾收集。


完成所有习题:

9、1

虚拟地址位数(n) 虚拟地址数 (N) 最大可能的虚拟地址
8 28 = 256 28-1 = 255
16 216 = 64K 216-1 = 64K-1
32 232 = 4G 232-1 = 4G-1
48 248 = 256T 248-1 = 256T-1
64 264 = 16384P 264-1 = 16384P-1

9、2

n P =2p PTE的数量
16 4K 16
16 8K 8
32 4K 1M
32 8K 512K

9、3

P VPN位数 VPO位数 PPN位数 PPO位数
1KB 22 10 14 10
2KB 21 11 13 11
4KB 20 12 12 12
1KB 19 13 11 13

9、4

A:虚拟地址格式:00 0011 1101 0111

B

参数
VPN 0xf
TLB索引 0x3
TLB标记 0x3
TLB命中?(是/否)
缺页?(是/否)
PPN 0xd

C、物理格式地址:0011 0101 0111

D、

参数
CO 0x3
CI 0x5
CT 0xd
高度缓存命中?(是/否)
告诉缓存字节返回 0x1d

9、6

请求 块大小(十进制字节) 块头部(十六进制)
malloc(1) 8 0x9
malloc(5) 16 0x11
malloc(12) 16 0x11
malloc(13) 24 0x19

9、7

对其要求 已分配块 空闲块 最小块大小(字节)
单字 头部和脚部 头部和脚部 12
单字 头部,没有脚部 头部和脚部 8
双字 头部和脚部 头部和脚部 16
双字 头部,没有脚部 头部和脚部 8

本章要点详述

动态内存分配

malloc和free函数

系统调用malloc函数,从堆中分配块:


void *malloc(size_t size);

成功返回指针,指向大小至少为size字节的存储器块,失败返回NULL

系统调用free函数来释放已分配的堆块:


void free(void *ptr);

无返回值

分配器的要求和目标

要求:


处理任意请求序列

·立即响应请求

·只使用堆

·对齐块

·不修改已分配的块

目标:


最大化吞吐率(吞吐率:每个单位时间里完成的请求数)

·最大化存储器利用率——峰值利用率最大化

碎片

  • 内部碎片:发生在一个已分配块比有效载荷大的时候,易于量化

  • 外部碎片:发生在当空闲存储器合计起来足够满足一个分配请求,但是没有一个单独的空间块足以处理这个请求时发生。难以量化,不可预测

隐式空闲链表

格式:由一个字的头部,有效荷载,和可能的额外填充组成:

将堆组织成一个连续的已分配块和空闲块的序列:

垃圾收集

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

  • 垃圾收集器将存储器视为一张有向可达图,图的节点被分配为一组根节点和一组堆节点。

C程序中常见的与存储器有关的错误

误解指针运算:忘记了指针的算术操作是以它们指向的对象的大小为单位来进行,而这种大小单位不一定是字节

引起存储器泄露:当不小心忘记释放已分配块,而在堆里创建了垃圾时,就会引起存储器泄露

读未初始化的存储器:bass存储器位置总是被加载器初始化为0

间接引用坏指针:在进程的虚拟地址空间中有较大的洞,没有映射到任何有意义的数据,如果试图引用一个指向这些洞的指针,操作系统就会以段异常来终止程序

给你的结对学习搭档讲解你的总结并获取反馈

结对同学博客

实验测试反馈:

1、实验5:使用openssl进行混合密码系统加密时,会话秘钥的分发最可能用到()

A .
AES_encrypt

B .
RSA_public_encrypt

C .
AES_decrypt

D .
RSA_private_decrypt

E .
AES_cbc_encrypt

F .
RSA_private_encrypt

G .
RSA_public_decrypt

正确答案: B D 我的答案: A E F

解析:非对称算法的应用:
秘钥分发:用对方公钥加密,对方用自己的私钥解密
签名验签:签名主要是用自己私钥加密,对方用自己公钥验签

原因:当时AES和RSA对于混合密码系统加密的对应关系没有理解特别清楚。

2、实验3中,在Ubuntu虚拟机中编译多线程程序时,gcc使用()选项

A .-g

B .-lthread

C .-pthread

D .-lpthread

正确答案: C 你的答案: D

解析:实际环境中只有-pthread可用

原因:当时记得在实验中编译的语句里有过-L,所以选择了D。

3、实验2中,SM1_Crypto(miqian, 16, 0, 0, 0,mihou);语句的功能是()

A .初始化

B .加密

C .解密

D .传递秘钥

正确答案: B 你的答案: D

解析:SM1_Crypto(miqian, 16, 0, 0, 0,mihou);加密
SM1_Crypto(miqian, 16, 1, 0, 0,mihou);解密

原因:这个。。。是因为纯粹不会。。

4、实验1中使用mount命令时,会涉及到()的修改。

A ./etc/fstab

B ./etc/hosts

C ./etc/passwd

D ./etc/exports

正确答案: D 你的答案: A

解析:nfs服务器的配置,配置文件/etc/exports:

ro 该主机对该共享目录有只读权限

rw 该主机对该共享目录有读写权限

root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

no_root_squash 客户机用root访问该共享文件夹时,不映射root用户

all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户

anonuid 将客户机上的用户映射成指定的本地用户ID的用户

anongid 将客户机上的用户映射成属于指定的本地用户组ID

sync 资料同步写入到内存与硬盘中

async 资料会先暂存于内存中,而非直接写入硬盘

insecure 允许从这台机器过来的非授权访问

原因:mount命令用于加载文件系统到指定的加载点。而fstab文件的作用文件/etc/fstab存放的是系统中的文件系统信息。当时考试时记混了。

5、有关socket 接口中的connect(),下面说法正确的是()

A .这个函数用于客户端编程

B .这个函数用于服务器端编程

C .调用connect会发生阻塞,连接成功程序会继执行

D .调用connect()成功返回的文件描述符可以用来数据传输

正确答案: A C D 你的答案: A C

解析:p654

原因:我当时记得调用connect()不仅能建立连接,而且还会向服务器传送数据,但后来上网查了后,想起来connect()只能建立连接。

其余还有两道题纯粹是自己手滑。。,知道正确选项但却选错了。。。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 2000行 15篇 200小时
第一周 150/150 1/1 17/17
第二周 70/220 1/2 12/29
第三周 100/320 1/3 10/39
第四周 100/420 1/4 10/59
第五周 80/500 2/6 22/81
第六周 300/800 2/8 30/111
第七周 200/1000 1/9 25/136
第八周 500/1500 2/11 30/166
第九周 500/2000 2/13 36/202
第十周 100/2100 0/13 20/222
第十一周 200/2300 2/15 35/257
第十三周 300/2600 2/17 25/282
posted @ 2017-12-17 23:39  Csj-rup  阅读(323)  评论(0编辑  收藏  举报