20135304刘世鹏——信息安全系统设计基础第八周期中总结
2015-11-01 22:33
211 查看
信息安全系统设计基础期中总结
一、Linux基础知识1.重点需要掌握的命令:
man 命令
1 Executable programs or shell commands(普通的Linux命令)
2 System calls (系统调用,操作系统的提供的服务接口)
3 Library calls (库函数, C语言中的函数)
4 Special files (指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义)
5 File formats and conventions eg /etc/passwd(配置文件帮助)
6 Games(给游戏留的,由各个游戏自己定义)
7 Miscellaneous (给游戏留的,由各个游戏自己定义), e.g. man(7), groff(7)
8 System administration commands (系统管理用的命令,这些命令只能由root使用,如ifconfig)
9 Kernel routines [Non standard]
man-k 命令
多关键字查找
man -k key1| grep key2 | grep key3 | ...
cheat 命令
当你不确定你所运行的命令,尤其是那些使用了许多选项的复杂命令时,你会怎么做?在这种情况下,我们使用man pages来获取帮助。还有一些其它的选择可能包括像‘help’,‘whereis’和‘whatis’这样的命令。但是所有的这些既有优点,也有缺点。
- man pages来查看选项和帮助的时候,里面的描述 实在太冗长了,我们无法在短的时间里理解它的意思 - ‘help’命令可能也不会给你期待的答案。 - ‘whereis’命令几乎不给你任何信息,除了安装二 进制文件的位置(有些时候可能是重要的) - ‘whatis’命令给出一套很严格的答案,它除了说出 查询命令的作用,并没有什么太大帮助。直到在困难中解决问题前,我们已经使用了以上全部选项,但是现在来了一个交互式的备忘录应用程序‘cheat’,它将在其余的命令中脱颖而出。
其他核心命令
find查找一个文件在系统中的什么位置,locate是神速版本的- find(Windows下有个Everything工具和locate类似)
grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识
grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识
2.vim主要操作
h左移 j下行 k上行 l右移
欲进入vim编辑器(从命令行提示符),输入vim文件名<回车>
退出vim,放弃所有修改: :q! <回车>
退出vim,保存所有修改: :wq! <回车>
正常模式删除字符:x
正常模式插入文本:i
按下回到正常模式
欲从当前光标删除至单子、单词末尾:dw
欲从当前光标删除至当前行末尾:d$
欲删除正行:dd
正常模式下一个命令格式:[number] command object
number - 命令执行的次数
command - 要做的事情,比如d代表删除
object - 代表要操作的对象,比如w代表单子、单词,¥代表到行末。
撤销以前的操作:u
撤销在一行中所做的改动:U
撤销以前的撤销命令,恢复以前的操作结果:CTRL-R
重置已经删除的文本内容:p
替换光标所在位置的字符:r
替换当前光标到单词末尾的内容:cw
替换当前光标到行末的内容:c$
更改命令的格式: [number] c object
显示当前光标所在位置和文件状态信息:CTRL -g; Shift -G将
3.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 调用ld4.GDB调试
1.启动gdb的方法有以下几种: a)gdb program也就是执行文件,一般在当前目录下。
b)gdb core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后,core dump后产生的文件。
c)gdb 如果程序是一个服务程序,那么可以指定这个服务程序运行时的进程ID。
2.设置断点
(gdb) break func <-------------------- 设置断点,在函数func()入口处。
(gdb) info break <-------------------- 查看断点信息。
(gdb) r <--------------------- 运行程序,run命令简写
(gdb) n <--------------------- 单条语句执行,next命令简写。
(gdb) c <--------------------- 继续运行程序, continue命令简写。
(gdb) p I <--------------------- 打印变量i的值,print命令简写。
(gdb) bt <--------------------- 查看函数堆栈。
(gdb) finish <--------------------- 退出函数。
(gdb) c <--------------------- 继续运行。
(gdb) q <--------------------- 退出gdb。
3.其他调试命令有:
display 跟踪变量值的改变 until 跳出循环 finish 跳出函数 help 帮助
5.Makefile
定义宏的格式为:macroname = macrotext
使用宏的格式为:$(macroname)
Makefile的一般写法:test(目标文件): prog.o code.o(依赖文件列表)
tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)
第一章 计算机系统漫游
1.信息=位+上下文系统中所有信息都是由一串位表示的,区分不同数据对象唯一方法是读到 这些数据对象时的上下文2.程序被翻译成不同格式
编译系统预处理器、编译器、汇编器、链接器
第二章 信息点表示和处理
1.信息存储进制
字
字节顺序
布尔代数
整数表示
补码
无符号数与有符号数转换
扩展数字的位表示
扩展数字的位表示
整数运算
无符号运算
补码运算
乘以常数
乘以常数
浮点数 标准:IEEE标准754
在float中,s、exp和frac字段分别为1位、k = 8 位和n = 23位,得到一个32位的表示;
在double中,s、exp和frac字段分别为1位、k = 11 位和n = 52位,得到一个64位的表示。
第三章程序的机器级表示
机器级编程的两种抽象(1)指令集结构ISA
是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。
(2)机器级程序使用的存储器地址是虚拟地址
看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。
操作数的三种类型
立即数
寄存器
存储器
2.结果存放的两种可能
寄存器中
存储器中 3.寻址方式
(1)立即数寻址方式
格式:$后加用标准c表示法表示的整数,如$0xAFF
(2)寄存器寻址方式
如%eax,与汇编中学过的AX寄存器类比。
(3)存储器寻址方式
直接寻址方式
寄存器间接寻址方式
寄存器相对寻址方式
基址变址寻址方式
相对基址变址寻址方式
do-while循环
通用形式:
do body-statement while(test-expr); 循环体body-statement至少执行一次。
可以翻译成:
loop: body-statement t = test-expr; if(t) goto loop; 即先执行循环体语句,再执行判断。
2.while循环
通用形式:
while (test-expr) body-statement GCC的方法是,使用条件分支,表示省略循环体的第一次执行:
if(!test-expr) goto done; do body-statement while(test-expr); done: 接下来:
t = test-expr; if(!t) goto done: loop: body-statement t = test-expr; if(t) goto loop; done: 归根究底,还是要把循环改成do-while的样子,然后用goto翻译。
栈帧结构
栈用来传递参数、存储返回信息、保存寄存器,以及本地存储。
1.栈帧
为单个过程分配的那部分栈称为栈帧,通用结构见149页
所以本质上栈帧还是栈。
2.两个指针
最顶端的栈帧以两个指针界定:
寄存器%ebp-帧指针
寄存器%esp-栈指针
栈指针可移动,所以信息访问多相对于帧指针。
3.调用的过程
课本150页过程P调用过程Q的示例。
调用者的帧应该在被调用者的下面,并且调用者返回地址是它的栈帧末尾,这样可以保证被调用者执行完毕全都出栈后,程序能够继续向下执行。
关于被调用者Q用栈的几个用处:
1.保存不能存放在寄存器中的局部变量。
当要对一个局部变量使用地址操作符&的时候,就必须要为它生成一个地址,所以要入栈。这个用法!以前没见过!
2.存放它调用的其他过程的参数。
第四章
1.Y86指令集体系结构具体使用结合练习
异常 halt指令、非法指令、访问非法地址2.HCL硬件控制语言
数字系统
组合逻辑、存储器元素、时针信号表达式
AND:&& OR:|| NOT:!3.Y86的顺序实现
取指、译码、执行、访存、写回、更新PC
第六章 存储器层次结构
RAM随机访问存储器SRAM
1.特点: - a.不需要刷新电路即能保存它内部存储的数据。 - b.集成度较低,需要很大的体积。 - c.存取快。 - d.抗干扰。 - 2.应用:一般用来作为计算机中的高速缓冲存储器
DRAM
1.特点: - 1.每个位存储为对电容的充电。 - 2.周期性的用读出然后写回的方式刷新存储器每个位。 2.应用:一般用来作为计算机中的高速缓冲存储器
磁盘存储
DRAM芯片包装在存储器模块中,它是查到主板的扩展槽中。常见的包装包括168个引脚的双列直插存储器模块,它以64位为块传送数据到存储控制器和从存储控制器传出的数据,还包括72个引脚的单列直插存储器模块,它以32位为块传送数据。
存储器层次结构
存储器层次结构的中心思想是:对于每个k,位于k层的更快更小的存储设备作为位于(k+1)层的更大更慢的存储设备的缓存。
第(k+1)层的存储器被划分成连续的数据对象片,称为块;数据总是以块大小为传送单元在相邻两层之间来回拷贝的;在任何时刻,第k层的缓存包括第(k+1)层块的一个子集的拷贝。
缓存不命中的种类强制性不命中:一个空的缓存称为冷缓存,对任何数据对象的访问都不会命中。通常是短暂事件,不会在反复访问存储器使得缓存暖身之后的稳定状态中出现。
冲突不命中:限制性的放置策略——将第k+1层的某个块限制放置在第k层块的一个小的子集中。
容量不命中:当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
相关文章推荐
- Android中SurfaceView的使用详解
- bzoj1612 【Usaco2008 Jan】Cow Contest 奶牛的比赛
- m个苹果放入n个盘子问题
- pull生成、解析xml
- Daily Scrum 11.1
- 【C语言】【面试题】【笔试题】.字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。
- android手机加速度传感器
- mysql字符串查询大小写问题2
- Python解析json数据结构范例
- 超级简单的java WebService示例
- 《大道至简》第五章读后感
- 数据结构实践项目——树和二叉树(2)
- redis邮件与事务
- Apache和Apache Tomcat的区别
- Linux下端口被占用确认
- BZOJ 1823: [JSOI2010]满汉全席( 2-sat )
- linux笔记:网络命令ping,traceroute,ifconfig,netstat;挂载和卸载命令mount,umount
- 博弈
- java文本写入
- 【干货】贪婪的主力竟然这样操盘