20155334 2017-2018-1《信息安全系统设计基础》第一周学习总结
2017-2018-1 20155334 《信息安全系统设计基础》第一周学习总结
教材学习内容总结
第一章 计算机系统漫游
对一个C语言程序来说,它是一个高级语言编写的,对于人来说是很方便来进行阅读,理解的。但对于电脑来说,就需要将将原来文本化的代码转化成机器可以直接识别的二进制代码,这一过程需要经过四个阶段的程序(即预处理器、编译器、汇编器以及连接器)共同构成的编译系统 compilation system
来完成。
处理过程以hello.c为例
- 预处理器(ccp)
gcc -E hello.c -o hello.i
文本 - 编译器(ccl)
gcc -S hello.i -o hello.s
文本 - 汇编器(as)
gcc -C hello.s -o hello.o
二进制 - 连接器(ld)
gcc hello.o -o hello
二进制
系统的硬件组成
- 总线 :设计成传送定长的字节块
- I/O设备:每一个I/O设备都通过一个控制器或是适配器与I/O总线相连
- 主存:
- 处理器:
- 加载:从主存复制一个字节或者一个字到寄存器。
- 存储:从寄存器复制一个字节或者一个字到主存。
- 操作:将寄存器里的内容复制到ALU进行算数运算,并将结果存放到寄存器。
- 跳转:从指令本身中抽取一个字,并将这个字复制到程序计数器中。
第七章 连接
连接就是将各种代码和数据片段收集并组合成为一个单一文件的过程。
理解连接器的作用:
- 帮助构造大型程序
- 帮助避免危险的变成错误
- 帮助理解语言的作用域规则是如何实现的
- 帮助理解其他重要的系统概念
- 能够利用共享库
上一周老师在课堂上讲解了如何利用Linux终端进行程序的编写、调试以及利用gcc命令去进行体会编译系统在不同的阶段进行的操作的不同
为了是自己能够更好的理解,我自己在虚拟机上进行了尝试
关于gdb的一些命令符
命令 | 全写 | 作用 |
---|---|---|
b | break | 设断点 |
b+函数名 |
函数断点 | |
b if +条件 |
条件断点 | |
tb+行号 |
临时断点 | |
b+行号 |
行断点 | |
r | run | 开始运行程序 |
n | next | 跳过函数单步运行,优先使用此命令 |
s | step | 进入函数单步运行 |
c | countinu | 从当前断点继续运行到下一个断点 |
q | quit | 退出GDB |
f | finish | 将函数执行完毕 |
使用vim进行C语言程序的编写
gcc命令的运行以及文件的变化
教材学习中的问题和解决过程
-
问题1:学习Linux对信息安全的意义
-
问题1解决方案:一直觉得将Windows系统学会就行了,觉得学习Linux是在浪费时间,直到在人人上看到这样的一句话:“做信息安全一定要熟悉各种信息系统。所以信息安全专业的同学不能只会Windows。目前很多大型企事业单位都使用Linux/Unix服务器。学会Linux可能就为自己创造了一条新的谋生之路。学Linux就要学它与Windows不一样的地方,要学会用黑白的字符界面,简单的才是最实用的。”
-
问题2:
-
问题2解决方案:
代码托管
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 75/75 | 1/1 | 5/4 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)