2017-2018-1 20155205 《信息安全系统设计基础》第一周学习总结
关于教材每一章的问题
1.系统的硬件组成之间是如何进行工作的,对于一个共同的工作是如何分工的?
2.编码形式是如何和现实世界中的数字对应的?
3.这里所学的和汇编的机器编码是一样的吗?为什么使用栈这个数据结构?
4.流水线原理具体是什么?有没有什么局限性?
5.优化程序性能的常用方法或原则是什么?
6.分区表之间是如何关联的?
7.链接的具体过程是什么?它的作用是什么?
8.系统调用处理异常的函数有哪些?
9.高速缓存和虚拟内存如何联系,怎样结合?
10.系统级I/O与上学期JAVA学的I/O有什么区别或共同点?
11.如何搭建Web服务器?
12.并发编程是什么?有什么优点?如何较好的利用它?
教材学习内容总结
- gcc把源程序翻译成可执行文件的四个阶段(ESC,iso)
1.预处理
gcc -E hello.c -o hello.i
2.编译
gcc -S hello.i -o hello.s
3.汇编
gcc -c hello.s -o hello.o
4.链接
gcc hello.o -o hello
- 四种断点
名称 | 用法 |
---|---|
行断点 | b+行号 |
函数断点 | b+函数名 |
临时断点 | tb+行号 |
条件断点 | b if |
- 其他命令及操作(摘自使用gcc编译gdb调试)
step / s 下一步,直接执行下一条程序
continue / cont 下一段,如果遇到函数,不会进入函数,逐过程,有点类似VS里面的F10
run 运行
finish 结束调试
print / p 显示某个变量的值
p *array@len 输出数组
p i 输出i的值
enable 恢复失效的断点
disable 使断点失效
clear 清除断点
backtrace / bt 查看堆栈信息
- 相关的输出格式
x 十六进制格式
d 十进制格式
u 十六进制无符号
o 八进制显示
t 二进制显示
a 十六进制显示
c 字符格式显示
f 浮点数格式显示
教材学习中的问题和解决过程
- 问题1:为什么gcc hello.c后会出现a.out文件?所有程序编译后都会出现a.out吗?
- 问题1解决方案:通过参考linux c/c++ a.out的由来知道,而这个神秘数字是Berkeley fast文件系统的作者Kirk McKusick的生日。a.out文件中的神秘数字是0407。0407是PDP-11的一条无条件转移指令的二进制编码,这个数字会让执行器跳过 a.out头文件,进入程序的第一个真正的可执行指令。PDP-11是当时最正统的Unix机器,在a.out要规定神秘数字时,0407就被选择。
代码调试中的问题和解决过程
- 问题1:输入gcc -C hello.s -o hello.o出现下图错误
- 问题1解决方案:将大写C改成了小写c后运行成功。
代码托管
上学期结束时是5691,现在是5756,如图所示:
上周考试错题总结
- 错题1:linux中,内核虚拟内存在虚拟地址空间的低端。(错误)
结对及互评
本周结对学习情况
其他(感悟、思考等,可选)
- 本学期娄老师更改了教学方式,在课上给我们讲了实践性很强的知识点,这样使我在自学的过程中对相关知识点的掌握更加快速又准确!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 65/65 | 1/1 | 10/10 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:15小时
-
实际学习时间:10小时
-
改进情况:本周参与校庆演出,真用了很多时间。
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)