20145336张子扬 《信息安全系统设计基础》期中总结
教材学习内容总结
学习目标
- 复习 Linux常用命令
- 复习 教材1-7章
man命令
在 Linux 环境中,如果你遇到困难,可以使用man 命令,它是Manual page的缩写。要查看相应区段的内容,就在 man 后面加上相应区段的数字即可。
-a:在所有man帮助手册中搜索
-k xxx(所查找内容) |grep x(标号)
-f:关键字精确搜索,显示给定关键字的简短描述信息
-p:指定内容时使用分页程序
-M:指定man手册搜索的路径
常用命令:
man printf:普通Linux命令
man 1 printf :操作系统提供的服务接口
man 3 printf :函数库,c语言中的函数
man -k sort :排序定位
cheat
cheat+命令可查看命令使用示例
grep
grep -n(显示行号) xxx(所查文本) xxx.xxx(所在文件)
grep -n(显示行号) xxx(所查文本) /usr/include寻找宏
vim
vim相关快捷键
- k、j、h、l功能分别上、下、左、右
- w在指定行内右移光标,到下一个字的开头
- b在指定行内左移光标,到前一个字的开头
- G光标移动到文章的最后
- L将光标移到屏幕的最下行(Lowest)
- x删除光标所在位置后面的一个字符,同delete
- d+空格 删除光标所在位置的字符
- dd 删除整行
- dw 删除一个单词(不适用中文)
- Ctrl+b在文件中向上移动一页(相当于 PageUp 键)
- Ctrl+f在文件中向下移动一页(相当于 PageDown 键)
- u撤消前一条命令的结果
- p小写字母 p,将缓冲区的内容粘贴到光标的后面
- w 保存文档
- q! 强制退出,不保存
- a 在光标后插入编辑
- q 退出
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
- gdb programm(启动GDB)
- gdb programm(启动GDB)
- run 开始运行程序
- bt 打印函数调用堆栈
- p 查看变量值
- c 从当前断点继续运行到下一个断点
- n 单步运行
- s 单步运行
- quit 退出GDB
- display 跟踪变量值的改变
- until 跳出循环
- finish 跳出函数
- help 帮助
库文件
- 动态库的生成:gcc -fPIC -c xxx.c、gcc -shared -o libxxx.so xxx.o
- 共享库的使用:gcc -o main main.c -L. -lxxx
ISA
gcc -O1 -S text.c
-
使用gcc产生一个汇编文件code.s,可以使用vim查看
gcc -O1 -c text.c
-
使用gcc产生目标代码文件。从中可知及其实际执行的程序只是对一系列指令进行编码的字节序列。
objdump -d test.o
- 查看目标代码文件的内容,将他们转换成一种类似与汇编代码的格式。
Y86
Y86指令
字节
halt 0|0 1
nop 1|0 1
rrmovl rA,rB 2|0 |rA|rB 2
irmovl V ,rB 3|0 |F |rB|V 6
rmmovl rA,D(rB) 4|0 |rA|rB|D 6
mrmovl D(rB),RA 5|0 |rA|rB|D 6
OPL rA,rB 6|fn|rA|rB 2
JXX Dest 7|fn|Dest 5
cmovXX rA,rB 2|fn|rA|rB 2
call Dest 8|0 |Dest 5
ret 9|0 1
pushl rA A|0 |rA|F 2
popl rA B|0 |rA|F 2
存储技术
-
RAM
- SRAM的双稳态特性,只要有电,它就会永远地保持它的值
- DRAM对干扰特别敏感,当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。
-
ROM(非易失性存储器)
即使是在断电后,他们依然保存着它们的信息。
-
磁盘存储
由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转
-
局部性原理
他们倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。
-
存储器层次结构的中心思想
对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。
收获
这两个多月里,学习了信息安全设计基础这门课。在这门课中我对计算机有了更深刻的理解:
- 在这门课里我学习了linux操作系统,学会了linux简单的操作命令。试着去使用linux编写c语言程序,在linux下用gcc生成汇编语言,机器语言,还有程序。尝试去掌握汇编语言的阅读方法。使用gdb去进行断点调试。在不断尝试的过程中,我渐渐熟悉了linux的使用。
- 对于计算机的系统我也有了更深入的了解。我们编写的c语言,计算机是通过翻译成汇编语句,然后再转换成机器码进行执行。计算机会不断的从地址里取值,在cpu中进行运算。
- 计算机的存储技术就是cpu>高速缓存>主存>本地磁盘>网络服务器,计算机通常会一级一级的调用数据,将上一级作为下一层的缓存。对于存储器的结构也有了一定的了解。
在这门课程中我的收获还是很多的,最重要的让我明白了要用一个什么样的姿态去对待学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第二周 | 0/0 | 1/2 | 19/20 | |
第三周 | 80/80 | 1/3 | 25/44 | |
第四周 | 110/190 | 1/4 | 23/67 | |
第五周 | 60/250 | 2/6 | 26/93 | |
第六周 | 80/330 | 2/8 | 25/118 | |
第七周 | 60/390 | 1/9 | 25/133 | |
第八周 | 0/390 | 1/10 | 22/155 |