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

教材学习内容总结

先记录一下第四周老师上课讲的内容:

  1. 学习Linux命令,可以提高效率。
  2. 系统调用
  3. 通过系统调用实现who命令。

who命令用来查看当前登录的用户信息。
借助man手册来查看who命令。
man手册是分章节的,第一节是可执行程序或shell命令,第二节是系统调用,第三节是库调用。所以我们在查看man手册时可以使用man -K key1 | grep key2 | grep key3的方式来过滤其他信息,提高查找效率。

举个栗子:printf是linux命令,也是库函数,所以在查看时注意区分,man 1 printf是查看linux命令里的printf,man 2 printf是查看库函数里的printf。

查看man手册时,注意看see also。
man还可以查看文件,在用man who查看who命令时,发现了utmp这个文件,可以再用man命令去查看utmp文件。知道了这是一个存放用户登录记录的文件,想要通过系统调用读取该文件,再用man查看系统调用的read :man -k read | grep 2 | grep file。先看用到的头文件,然后看函数原型,就知道怎么用了。在read的see also里发现了,write,这下读写都搞定了。

locate 头文件,可以看见文件被定义在哪里。

grep -nr 宏名 头文件位置,可以查看头文件里的宏定义。

然后是我看书上第二章的总结:

在看到寻址和字节顺序这一节的时候,我用书上实例程序,看了一下我自己的机器对不同数据值的字节表示,如下图所示:

image

我的机器是Linux64,采用的小端法,使用的8字节地址。

32位程序和64位程序的区别在于该程序的编译方式,而不是运行它的机器类型。

int32_t和int64_t数据大小是固定的,不随编译器和机器设置而变化。

字节对象的地址为所使用字节中最小的地址。排列一个字节对象的字节有两种规则——大端法和小端法。(在不同类型的机器之间通过网络传送二进制数据时需要协调)

位向量的一个重要作用就是表示有限集合,也就是编码集合。

位运算就是按位进行布尔运算,常见用法是实现掩码运算(从一个字中选出一些位的集合)

区别逻辑运算符与位运算符,逻辑运算符非0即为1,逻辑运算的返回结果只有1或者0,逻辑运算符如果对一个参数求值就能确定结果,则不会对第二个参数求值。

逻辑右移在左端补0.算术右移在左端补最高有效位。

C语言里有无符号数和有符号数,有符号数通过补码表示。

测试了书上48页的代码结果如下:

image

可见12345和-12345虽然仅一个正负之差,但其二进制表现却有很大差异。

补码数的符号拓展:

image

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

  • 问题1:第48页的练习题2.18,在看这个反汇编列表的时候,不理解$,%rsp,%rax,%rid什么意思
  • 问题1解决方案:去网上查了一下,知道了$表示偏移地址,rsp,rax,rid是寄存器。

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

  • 问题1:在学习补码的时候,需要用到前面定义的show_bytes函数和自定义byte_pointer类型,虽然我同时编译了两个.c文件,但仍然提示我找不到这两个符号的定义。

image

解决方案:将这两个符号放到头文件里定义一下就okay了。

代码托管

image

结对及互评

点评模板:

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

本周结对学习情况

- [结对同学学号1](博客链接)
- 结对照片
- 结对学习内容
    - XXXX
    - XXXX
    - ...

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

读教材第一遍也许读不懂,但隔几天,多读几遍就会有新的理解,再写写书上的示范程序,对内容的理解就更好了。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

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

参考资料

posted on 2017-10-15 19:34  20155225江智宇  阅读(152)  评论(1编辑  收藏  举报