20145221 《信息安全系统设计基础》期中总结
知识点梳理
第一周博客链接及主要内容
- 20145221 《信息安全系统设计基础》第1周学习总结
- Shell(命令解析器)重要快捷键
- Linux重要命令
man
find
locate
cheat
grep
which
whereis
- 文件操作
- 文件打包/解压:
zip/unzip
df
:查看磁盘的容量du
:查看目录的容量touch
:创建空白文件mkdir
:创建一个空目录cp
:复制一个文件或目录到指定目录em
:删除一个文件或目录mv
:
- 移动文件(剪切):mv 源目录文件 目的目录
- 文件重命名:mv 旧的文件名 新的文件名
第二周博客链接及主要内容
- 20145221 《信息安全系统设计基础》第2周学习总结
- vim三种常用模式
- vim基本操作
- GCC 使用
- 源文件—预处理—编译—汇编—链接—可执行文件
- 预处理:
gcc –E hello.c –o hello.i
;gcc –E调用cpp - 编 译:
gcc –S hello.i –o hello.s
;gcc –S调用ccl - 汇 编:
gcc –c hello.s –o hello.o
;gcc -c 调用as - 链 接:
gcc hello.o –o hello
;gcc -o 调用ld
- GDB 使用
- 查看文件:
l
- 设置断点:
b
- 查看断点情况:设置完断点后键入
info b
- 单步运行:
n
或s
,s
会进入函数,n
不会进入函数
- Makefile 使用
- makefile文件编写规则
- makefile变量的定义
第三周博客链接及主要内容
第四周博客链接及主要内容
第五周博客链接及主要内容
第六周博客链接及主要内容
第七周博客链接及主要内容
测试错题
试题链接
第一周
- Linux中没有C盘,D盘,其文件系统的目录是由(FHS)标准规定好的。
- Linux Bash中,使用tar命令把home目录打包成home.tar的命令是( tar -cf home.tar ~)
- Linux Bash中,ls . | sort 命令的功能是( 显示当前目录内容并排序 )
- Linux Bash中,set/env/exprot三个命令功能等价 。(x)
第二周
- 实现“Display files,Sorted by size”功能的ls命令是 ( ls –S )
- 查找宏 STDOUT_FILENO 的值的命令是(grep -nr STDOUT_FILENO /usr/include)
- 查找根目录下所有目录的find命令是(find / -type d)
- Linux系统中,链接器程序是(ld)
- (加载器)将可执行文件的内容映射到存储器,并运行这个程序。
- 生成静态库:
gcc -c hello.c
ar rcvs libhello.a hello.c
gcc main.c -o main -L. -lhello (or gcc main.c ./libhello.a -o main)
gcc -fPIC -c hello.c
gcc -shared -o libhello.so hello.o
gcc -o main main.c -L. -lhello
libhello.so 要拷贝到/lib or /usr/lib
第三周
- 计算机将信息按位编码,通常组织成(字节)序列。
- 计算机的(字长)指明整数和指针数所的标称大小。
- (Shannon 或香农)建立了布尔代数和数字逻辑之间的联系。
- IEEE浮点数标准包含符号、尾数、(阶码)三部分。
- GCC中INFINITY表示(无穷大)。
第五周
- (精通细节)是理解更深和更基本概念的先决条件。
- X86-64首先由Intel开发出来的。(X)
- 为单个过程(函数)分配的那部分栈叫(栈帧)
- Linux汇编中,销毁栈帧的语句是(movl %ebp,%esp popl %ebp 或leave)
- Linux汇编中,需要调用者保存的寄存器有(%eax,%edx,%ecx )。
- GDB中以16进制形式打印%eax中内容的命令是(print /x $eax)
第六周
- 解开sim.tar的Linux命令是(tar -xvf sim.tar)
- ALU是一种时序电路。(X)
- 寄存器是一种时序电路。(X)
第七周
- 程序员可以编写(有良好空间和时间局部性)的程序来显著改进程序的运行时间。
- 存储器给出的读访问时间是(局部性)的一个函数。
收获
- 虚拟机的使用
- 在此之前没有接触过虚拟机,或听说过但没有使用过。在学习本门课程之前,自己对虚拟机的使用是很排斥的,感觉有一个windows系统就足够用了。随着慢慢的深入,对虚拟机的感觉在发生着转变,从“课程学习中的被动需要”到“实际应用中的主动需要”。
- 首先,虚拟机可以实现在同一台电脑上安装不同虚拟不同系统这一功能,为我们课程学习以及实际应用提供了更多的选择与方便。
- 有了调查就有了发言权。在使用过Linux一段时间后,发现在很多方面确实比windows操作更加方便,强大的命令行操作以及海量的工具包大大提高了我们学习工作的效率。
- 虚拟机可以干任何主机可以干的事,现在打开电脑,什么活都可以在虚拟机中完成;使用完毕后还可以将虚拟机拷贝备份,移植到任何一台PC机上继续使用,非常方便。
- 对C语言的再认识
- 小小的
hello world
背后尽然暗藏玄机。距第一次正式接触C语言已经有一年多的时间了,但层度之浅,只会点击VC6.0中的“编译”、“运行”两个按钮,学习的不够扎实,停留在表面。 - 通过这半学期的学习,将之前学习的C语言、汇编语言联系了起来,感觉之前的支持全串了起来:高级编程语言C语言可以一句一句的翻译为相应的汇编语言,而汇编语言指令又语机器指令一一对应,从而实现了机器可以将C语言的任何正确的代码编译执行。
- 通过相应的汇编语言,可以从较为底层的这一层次结构理解C语言的编译原理,从而更好的利用局部性优势来发挥代码的最高效率,不仅加深了对系统处理编译的理解,更对以后的编写高效代码具有指导意义。
- 硬件的理解加深
- 我们用的笔记本越来越高级,可我们对它们的了解却越来越少。
- 买电脑之前,我们往往会问问卖家,这台笔记本的CPU型号是多少,内存多大,硬盘多大等等这些问题;只能说我们对操作系统的硬件设施有着一个宏观的印象。而在上个星期的学习中,通过对内存、高速缓存、硬盘等详细的学习,了解到各种存储器及其技术是如何在一个系统中被高效地组织起来并使用的。
不足
- 学习不精
- 《深入理解计算机系统》确实是一本非常翔实的好书,翻译也不错。但是毕竟有些知识过于偏理论,很难理解,或者理解不到位、理解有误等等。
- 我一直相信理论不能理解的事实践一下就好了,实践可以帮我们巩固理论所学,检验理论的正确性,加深我们对理论的认识。但由于各种原因(自己懒惰、没时间、理论过于理论无法实践或不会实践),一直耽搁,导致有些知识点学习不精。有待提高。
课程建议和意见
- 老师面授机宜
- 前面也提到了,有些知识感觉很难理解,我觉得可以以半个月为为单位,科代表组织同学们写下近两周所学的困惑(难以理解的知识点以及工具使用等等),然后汇总给老师,老师有针对性的讲一讲(毕竟有时候自己看越看越不懂越看越没信心),彻底解决这个问题,不然一拖再拖,到了期末还是不懂
- 教学内容是不是可以针对性更强一点
- 有时候老师上课会推荐很多工具,虽然都很有用很方便,但会有一种“哎呀,怎么又有一堆新工具新指令要学”这样的感觉;如果不是很必要的工具,可以放在老师的工具箱汇总博客里,我们自己去发现。
- 老师经常会布置一些课外任务,供同学们去挑战,这样很好,可以锻炼我们自主学习的能力,从中有更大更多的收获。如果以后的这些任务跟我们时下所学的内容更贴切就好了,这样会有种学以致用的感觉,会有继续学习探索的动力;如果相隔甚远或者难度很大,可能会消磨学习的欲望。
- 总之,经过大半年的相处,我们师生之间也磨合的很好了,都能互相适应,所以谈不上有什么课程建议和意见,相比上学期突然接触到的教学模式,这学期已经慢慢适应了。
学习进度条
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | 学习了Linux常用命令 |
第二周 | 79/279 | 1/3 | 30/50 | 了解vim,gcc,gdb基本操作 |
第三周 | 182/461 | 1/4 | 25/75 | 更深层次了解信息处理 |
第四周 | 36/497 | 2/6 | 3/78 | 第二章知识简单的运用 |
第五周 | 194/691 | 1/7 | 28/106 | 汇编知识与了解逆向 |
第六周 | 520/1211 | 1/8 | 27/133 | Y86处理器,了解ISA抽象 |
第七周 | 85/1296 | 1/9 | 21/153 | 理解了局部性原理 |
第八周 | 0/1296 | 2/11 | 20/173 | 期中总结 |
参考资料