信息安全系统设计基础第七周学习总结
一、 Linux命令复习:
- man –k:
man –k <命令> :用于学习命令
关于man命令的区分:
(1)一般命令;(2)系统调用;(3)库函数,涵盖了C标准函数库。可以通过在man后面加上相应区段的数字查看相应段的内容。
- cheat:
查看可用的小抄列表:cheat –l
要访问某个指定命令的小抄,只要运行cheat命令,后面跟上该命令的名称:cheat <command-name>
你可以通过使用“-s”选项,在所有小抄中搜索包含有指定关键词的内容:cheat -s <keyword>
- grep –nr xxx/usr/include:
•••grep -r 参数表示递归搜索子目录中的文件,-n表示打印匹配项行号,-I表示忽略二进制文件。
•grep命令用于打印输出文本中匹配的模式串,它使用正则表达式作为模式匹配的条件。
•要通过grep使用扩展正则表达式需要加上-E参数,或使用egrep。
正则表达式使用举例:
(1)将匹配以'z'开头以'o'结尾的所有字符串
echo 'zero\nzo\nzoo' | grep 'z.*o'
(2)将匹配以'z'开头以'o'结尾,中间包含一个任意字符的字符串
echo 'zero\nzo\nzoo' | grep 'z.o'
(3)将匹配以'z'开头,以任意多个'o'结尾的字符串
echo 'zero\nzo\nzoo' | grep 'zo*'
(4)将匹配所有的数字
echo '1234\nabcd' | grep '[0-9]'
- touch命令创建文件
二、 vi,gcc,gdb,make的使用:
1.vim:
vim模式介绍:
普通模式;插入模式(大多数按键都可向文本缓冲中插入文本);可视模式(移动命令会扩大高亮的文本区域);
选择模式;命令行模式;Ex模式(可以一次执行多条命令)
2.gcc:
能够编译用C,C++和Object等语言编写的程序
gcc编译文件的流程:
预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp(E-i)
编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl(S-s)
汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as(C-o)
链 接:gcc hello.o –o hello ;gcc -o 调用ld
运 行:在Unix外壳的命令中输入"./hello"
常用选项:
-c 只编译不连接,生成目标文件".o"
-S 只编译不汇编,生成汇编代码
-E 只进行预编译,不做其他处理
-g 在可执行预编译,不做其他处理
-o file 将file文件指定为输出文件
-v 打印处编译器内部编译各过程的命令行信息和编译器的版本-I dir 在头文件的搜索路径列表中添加dir目录
3.gdb:
gdb programm(启动GDB)
b 设断点
info b 查看断点情况
run或者r 开始运行程序(若想从制定行开始,可在r后面加上行号)
bt 打印函数调用堆栈
p 查看变量值(例如p n)
c 从当前断点继续运行到下一个断点(恢复程序运行)
n 单步运行(不会进入函数,相当于Visual C++的step over)
s 单步运行(会进入函数,相当于Visual C++的step in)
quit 退出GDB
display 跟踪变量值的改变
until 跳出循环
finish 跳出函数
help 帮助
4.makefile:
使用带宏的 Makefile:
Makefile还可以定义和使用宏(也称做变量),从而使其更加自动化,更加灵活,在Makefile中定义宏的格式为:Macroname = macrotext
使用宏的格式为:$(macroname)
三、 教材知识点:(我觉得老师给的提要是一个复习的很好的依据,于是就大体按照之前的总结重新复习了一遍)
第一章 / 第七章:
1.理解信息就是位+上下文
2.查看源文件可以用od 命令 : od -tc -tx1 hello.c
3.冯式结构,p6 CPU执行指令的操作(加载、存储、操作、跳转)
4.存储系统的核心思想:缓存
5.操作系统核心抽象(文件、虚存、进程、虚拟机)
6.链接器的两个任务、目标文件的三种形式、目标文件格式(a.out COFF PE ELF) :这四种格式,特别是PE,ELF格式要掌握,是研究病毒等恶意代码的基础。
7.ELF文件格式:试试readelf命令
8.理解全局符号的解析:学会多个模块。
9.处理目标文件的工具
第二章:
1.三种数字:无符号数、有符号数(2进制补码)、浮点数
2.进制转换,以二进制作为桥梁
3.gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的代码
4.字节顺序是网络编程的基础,记住小端是“高对高、低对低”,大端与之相反就可以了。
5.区分逻辑运算(结果是1或0)和位运算(结果是位向量)。只要一个与非门,就可以完成所有的逻辑运算。
6.掩码是位运算的重要应用,对特定位可以置一,可以清零
7.要用 “long long”类型,编译是要用 gcc -std=c99
8.利用补码可以把数学运算统一成加法,只要一个加法器就可以实现所有的数学运算。
9.怎么样让正数等于负数:
在负数x后加上U,可以使其转换为(2^w+x)
10.零扩展;符号扩展
截断数字
11.如何让整数运算溢出?如何避免?
算数运算的溢出是指完整的整数结果不能放到数据类型的字长限制中去。两个数的和为2^w或者更大时,就发生了溢出。
12.IEEE浮点标准
13.浮点数的不精确性与舍入
14.整数与浮点数表示同一个数字的关系:
相关区域对应整数的低位,刚好在等于一的最高有效位之前停止,和浮点表示的小数部分的高位相匹配的。
15.整数与浮点数的转换规则
第三章:
1.X86寻址方式经历三代:
DOS时代的平坦模式(不区分用户空间和内核空间,很不安全);8086的分段模式;IA32的带保护模式的平坦模式
2.ISA的定义、PC寄存器
3.一个CPU包含一组8个存储32位值的寄存器,这些寄存器用来存储整数数据和指针。
esi edi可以用来操纵数组,esp ebp用来操纵栈帧。%esp和%ebp保存着指向程序栈中重要位置的指针。
4.操作数:操作数的三种类型:立即数、寄存器、存储器
结果存放的两种可能:寄存器中、存储器中
有效地址的计算方式 Imm(Eb,Ei,s) = Imm + R[Eb] + R[Ei]*s
5.MOV类由三条指令组成,即movb,movw,movl. MOV相当于C语言的赋值“=”。
6.栈:通过push操作把数据压入栈中,通过pop操作删除数据。
7.加载有效地址指令——leal
8.一元操作和二元操作
9.移位操作
SAL
算术左移
;SHL
逻辑左移
;SAR
算术右移(补符号位)
;SHR
逻辑右移(补
0)
源操作数:移位量——立即数或%cl中的数
目的操作数:要移位的数值——寄存器或存储器
10.条件码:
常用条件码:CF:进位标志,ZF零标志 ,SF:符号标志,OF:溢出标志。
16.SET指令根据t=a-b的结果设置条件码
11.跳转与标号
无条件跳转:jmp.<标号> 有条件跳转:
12. if-else 的汇编结构;do-while;while;for;switch
13. call/ret; 函数返回值存在%eax中
第四章:
1.Y86指令集体系结构
(1)程序员可见的状态
Stat:程序执行的总体状态 DMEM:存储器
(2)Y86指令:(详见P232表)
(3)指令编码:(详见P233图)
(4)寄存器标识符:(详见P234表)
(5)Y86异常:处理器停止执行指令。
(5)Y86程序
2.逻辑设计和硬件控制语言HCL
(1)逻辑门
(2)组合电路和HCL布尔表达式
(3)字级的组合电路和HCL整数表达式
3.组合逻辑电路和c语言中逻辑表达式的区别
4.Y86的顺序实现
每个时钟周期上,SEQ执行处理一条完整指令所需的所有步骤。
(1) 将处理组织成阶段:
取指;译码;执行;访存;写回;更新PC。 (具体见书P251)
具体框架分为四类:
a.针对OPl,rrmovl和irmovl 见P252表4.18
b.针对rmmovl和mrmovl 见P253表4.19
c.针对pushl和popl 见P254表4.20
d.针对跳转,call和ret 见P256表4.21
(2)SEQ硬件结构:
(3)SEQ的时序:
(4)SEQ阶段的实现:
取指阶段;译码和写回阶段;执行阶段;访存阶段;更新PC阶段
第六章:
1.存储技术
(10三种常见存储技术:RAM / ROM / 磁盘
(2)RAM:SRAM和DRAM.
(3)非易失性存储器:
ROM中有PROM(可编程ROM)、EPROM(可擦可编程ROM)、EEPROM(电子可擦除PROM)、FLASH(闪存)
(4) 访问主存:
总线事物。(读写事物)
读事物从主存传数据到CPU,写事物从CPU传事物到主存。
(5)磁盘存储
a.磁盘构造:由盘片构成,磁道、扇区、间隙、柱面;磁盘驱动器
b.磁盘容量:决定因素:记录密度、磁道密度、面密度
c.访问时间:寻道时间、旋转时间、传送时间
平均时间 = 平均寻道时间 + 平均旋转延迟 + 平均传送时间
d.总线:系统总线、存储总线、I/O总线
2.局部性
(1)局部性原理
(2)时间局部性和空间局部性
(3)有良好局部性的程序比局部性差的程序运行得更快。
3.存储器层次结构
(1)硬件和软件的基本属性互相补充的很完美。
(2)从高层往底层走,,存储设备变得更慢、更便宜和更大。
(3)系统观(1+1>2)
(4)中心思想:每层存储设备都是下一层的“缓存”。
(5)缓存命中和缓存不命中
4.高速缓存存储器
(1) 高速缓存结构(S,E,B,m)
(2) 直接映射高速缓存:组选择、行匹配、字选择
(3) 组相联高速缓存:每个组都保存有多于一个的高速缓存行。
(4) 全相联高速缓存:是由一个包含所有高速缓存行的组(即E=C/B)组成的。
四、考题复习:
我又看了一遍过去的考试题,内容都是围绕平时的学习范围和课后习题展开的,所以考试时存在的问题基本上都可以在书上找到并自己解决。看一遍过去做过的题很有帮助。
五、期中总结:
1.我的收获:
经过半个学期的学习,我的进步比起大多数人可能还是有所欠缺,但是我觉得自己也是克服了种种自身不足努力的达到了老师的要求,所以对于这一点还是比较值得高兴的。刚开课的时候就被作业量震惊了,也觉得有点多,后来我觉得娄老师说的很有道理,不能把所有的任务拖到最后一天,学习是日积月累的事情。所以自第三周起,我都是早早开始写作业,每次的作业前后花费三天时间,均摊时间后发现果然充裕了很多,学习也可以循序渐进,不着急猛赶。
还有就是对自己能力逐渐有了信心。第一周和第二周的作业让我叫苦不迭,因为我觉得自己根本不可能学会这些东西。再加上之前汇编内容的插入,以及实验楼实验里实验需要我不断请教别的同学,所以我感到力不从心。所幸后来愿意花时间补足,才逐渐入了门。
2.我的不足:
我的不足在早起比较明显,不愿花过多时间,作业也偷懒,拖到最后一天。后来觉得要把学习作为一种习惯而不是负担,才开始改善。
3.课程意见和建议:
我认为老师的方法很好,希望这门课一直像现在这样能让我真正学到有用的东西。