2017-2018-1 20155215 《信息安全系统设计基础》第6周学习总结
2017-2018-1 20155215 《信息安全系统设计基础》第6周学习总结
教材学习内容总结
-
现代系统通过使控制流发生来对这些情况做出反应,这些突变被称为异常控制流(ECF)。
- ECF是操作系统用来实现I/O、进程和虚拟存器的基本机制
- 应用程序通过使用一个叫做陷阱或者系统调用的ECF形式,向操作系统请求服务
- ECF是计算机系统中实现并发的基本机制
- 软件异常机制——C++和Java有try,catch,和throw,C中非本地跳转是setjmp和longjmp
-
进程
-
逻辑流
-
并发流
-
错误处理包装函数:
- 系统会使用错误处理包装函数,系统级函数是小写,他们的包装函数名大写,包装函数调用基本函数,有任何问题就终止,如果没有问题和基本函数是一样的。
-
进程状态
- 运行
- 停止
- 终止
man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
man
有一个
-k
选项,这个选项让你学习命令,编程时有了一个搜索引擎,可以举一反三。
比如我需要一个排序功能的函数,我就可以输入
man -k sort
来查找。而
man -k key1 | grep key2| grep 2
就是多关键字查找的意思,用|分隔符分开,输入多个关键字达到更好的查找我想要的函数的目的。
grep -nr XXX /usr/include :查找宏定义,类型定义
grep 命令可以对文件全文检索,比如你接手一个C语言项目,里面有上百个C源文件,想找找main函数在那个文件中,你可以通过
grep -n main *.c
,快速找到main在哪个C文件中并指出在第几行。
而且grep支持正则表达式,正则表达式也是一个重要的元知识。
我们可以通过
cheat grep
来学习grep命令。
而
grep -nr XXX /usr/include
则是可以帮助我们查找XXX在哪个头文件中定义。
完成head,tail的使用,相关API的分析,伪代码,产品代码,测试代码的编写
-
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
-
命令参数有:
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数
教材学习中的问题和解决过程
-
问题1:我对于错误处理函数和系统调用错误处理,有一些不够理解的地方。
-
问题1解决方案:我上网查了之后,了解到了下面这些信息:
-
错误处理函数
- perror - strerror
perror和strerror函数都是用来打印错误提示信息的,它们的原型分别是:
include <stdio.h>
void perror(const char *s);
它先打印s指向的字符串,然后输出当前errno值所对应的错误提示信息,例如当前errno若为12,调用perror("ABC"),会输出"ABC: Cannot allocate memory"。
代码调试中的问题和解决过程
-
问题1:git出错
-
问题1解决方案:
- 问题2:我在输入课本上的P507页的代码时,发现生成汇编文件始终不成功。
- 问题2解决方案:
暂时没有找到解决方法。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
1.假设下面位串是基于IEEE格式的5位浮点表示,一个符号位,2个阶码位,两个小数位。下面正确的是()
A .
3.5的表示是[01011]
B .
-1.0的表示[01111]
C .
0.5的表示是[00011]
D .
1.5的表示是[00110]
正确答案: A D 你的答案: A C
2.有关三位数x,y的乘积xy截断为四位,下面说法正确的是()
A .
无符号的[100][101]结果为4
B .
无符号的[100][101]结果为-4
C .
有符号的[100][101]结果为-4
D .
有符号的[100]*[101]结果为4
正确答案: A C 你的答案: B D
3.我们用一个十六进制的数表示长度w=4的位模式,把数字解释为补码,关于其加法逆元的论述正确的是()
A .
0x8的加法逆元是-8
B .
0x8的加法逆元是0x8
C .
0x8的加法逆元是8
D .
0xD的加法逆元是3
E .
0xD的加法逆元是0x3
正确答案: A B D E 你的答案: B E
4.我们用一个十六进制的数表示长度w=4的位模式,对于数字的无符号加法逆元的位的表示正确的是()
A .
0x8的无符号加法逆元是0x8
B .
0xD的无符号加法逆元是0xD
C .
0xF的无符号加法逆元是0x1
D .
0xF的无符号加法逆元是1
正确答案: A C D 你的答案: A C
5.0<=x,y<2^w, 则
A .
x+y的最大值是2^w
B .
x+y的最大值是2^w-1
C .
x+y的最大值是2^w-2
D .
x+y的最大值是2^(w+1)
E .
x+y的最大值是2^(w+1)-1
F .
x+y的最大值是2^(w+1)-2
正确答案: F 你的答案: B
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
本周结对学习情况
- [结对同学学号1](博客链接)
- 结对照片
【】
其他(感悟、思考等,可选)
这周的内容
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 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小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)