20145209 《信息安全系统设计基础》第2周学习总结
20145209 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
实验楼实验知识总结
编辑器(vim)
一·完成对所录入文字的编辑功能,最常用的是vi(vim)和emacs
二·vi的三种模式及用法
1.命令行模式:最初进入的默认模式,可上下移动光标进行删除字符或整行删除,也可进行复制粘贴,但无法编辑。
2.插入模式:可以编辑,按[Esc]键回到命令行模式。
3.底行模式:可以进行保存或退出,或设置编辑环境。
三·vim教程总结
:q!会舍弃所做的任何改动;
按下A以启用编辑,按下esc退出;
光标放在欲删除的单词处,按下dw可以删除单词;c$可以删除到行末;输入d$,删除从当前光标到文末;数字+dd,删除几行;
w,表示向前移动几个单词(不含该单词),而e表示移动到前面第几个单词(含本词);
按下p将最后一次删除的内容插入到光标所在位置的上方;
输入r和一个字符,替换光标所在位置的字符;
输入cw或者ce之后,可以改变单词直到单词末尾(ce是把光标所在的位置上的单词也删除);
Ctrl +g可以查询当前行,用G跳到文末或者gg跳到文首之后,输入行号+G就可以返回;
/后输入字符即可查找,按下n进行下一次查找;光标放在某{,(,[处,按下%可以查找配对的另一半乎可以输;
😒/old/new/g可以将整行中的单词进行替换;:%s/old/new/g可以将整个文档中的单词进行替换;
:!后加上外部命令,即在vim中执行外部命令;
按下v后,就可以选中部分文本了;:r FILENAME就可将文本内容粘贴到光标方;
输入大写的O,将在光标上方打开一行并进入插入模式,输入小写的o,将在光标下方打开一行并进入插入模式;
输入a可在光标之后插入;按下R后,就可以连续替换多个字符;按下v后,可以在高光状态下选中文本,然后按下y复制,按下p粘贴;也可以直接在正常状态下按yw选中一个单词;在:set hls is之后,输入/单词 可以显示出文件中所有的待查找单词;
:set ic之后,则不区分查找的大小写;
按下tab键可以补全文件名。
编译链接器(gcc)
指源代码转化成生成可执行代码的过程,最常用的编译器是gcc。
gcc的编译流程
预处理阶段:头文件和宏定义,—E可以让gcc在预处理结束之后停止编译过程,因此可以看到预处理的过程。
一般格式为:gcc [选项] 要编译的文件 [选项] 目标文件 gcc -E hello.c -o hello.i
编译阶段:gcc将代码翻译成汇编语言,使用选项-S只进行编译而不进行汇编,结果生成汇编代码。gcc -S hello.i -o hello.s
汇编阶段:将.s文件转成目标文件,使用选项-c可以看到汇编代码转换为二进制目标代码。gcc -c hello.s -o hello.o
链接阶段:默认搜索链接到libc.so.6函数库当中,调用库文件中已经实现的函数。
gcc编译选项分析:常用选项 -I dir :在头文件的搜索路径列表中添加dir目录,当用户希望添加放置在非默认位置的头文件时可以通过该选项来指定。
用gcc编译
编译链接器(gdb)
一·gdb调试器,可方便的设置断点、单步跟踪。
二·gdb的使用流程
1.查看文件:键入l(list)查看所载入的文件。
2.设置断点:
按行设置断点:b+对应行号即可,可设置多个断点,运行到设置断点的一行程序会自动停止。
函数断点:按函数设置断点只需把函数名列在命令“b”之后。
条件断点:b 行数或函数名 if 表达式。
3.查看断点情况:info b,在断点键入bt可查到调用函数(堆栈)的情况。
4.运行代码:r+行号可从指定行开始运行代码,默认从头执行。
5.查看变量值:p+变量值即可。
6.单步运行。
7.恢复程序运行。
教材学习中的知识总结
第一章
1.信息就是位+上下文,系统中所有信息——包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网上传送的数据,都是由一串位表示的,区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。ASCII字符构成的文件是文本文件,所有其他文件都是二进制文件。
2.Hello程序的生命周期从高级C语言程序开始,每条C语句被转化为一系列“低级机器语言”指令,然后这些指令按照“可执行目标程序”的格式打包,并以二进制磁盘文件的形式存放起来,目标程序也称为“可执行目标文件”。
3.源文件到目标文件的转化由编译器驱动程序完成,unix> gcc -o hello hello.c 这里GCC编译器驱动程序读取源文件并把它翻译成一个可执行目标文件。翻译过程分为四个阶段:预处理、编译、汇编、链接,预处理器、编译器、汇编器、链接器一起构成编译系统。
4.系统的硬件组成:总线、I/O设备、内存、处理器。
5.文件就是字节序列。
6.并发:一个同时具有多个活动的系统。并行:用并发使一个系统运行地更快,并行可以在计算机系统多个抽象层次上运用。按照系统层次结构由高到低的顺序强调三个层次:线程级并发、指令级并行、单指令多数据并行。
7.在处理器里,指令集结构提供了对实际处理器硬件的抽象。
8.计算机系统是由硬件和系统软件组成的,程序被其他程序翻译成不同的形式,开始时是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件。
9.处理器读取并解释存放在主存里的二进制指令。
10.操作系统内核是应用程序和硬件之间的媒介,提供三个基本的抽象:
文件是对I/O设备的抽象;
虚拟存储器是对主存和磁盘的抽象;
进程是对处理器、主存和I/O设备的抽象。
11.网络提供了计算机系统之间通信的手段。
第七章
1.静态链接器主要任务:符号解析、重定位。
2.目标文件形式:可重定位目标文件、可执行目标文件、共享目标文件。
3.每个可重定位目标模块m都有一个符号表,它包含m所定义和引用的符号的信息,有三种不同的符号:
由m定义并能被其他模块引用的全局符号;
由其他模块定义并被模块m引用的全局符号;
只被模块m定义和引用的本地符号。
代码调试中的问题和解决过程
有的实验不能成功,按照要求输入代码但无法输出正确结果。
本周代码托管截图
其他(感悟、思考等,可选)
本周学习内容主要是练习,在linux中用C语言编译,以前学C语言不是很好,所以现在比较累,而且有的实验还是不成功,以后会多加练习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |