20145311 《信息安全系统设计基础》第二周学习总结

20145311 《信息安全系统设计基础》第二周学习总结

教材学习内容总结

重新学习了一下上周的一部分命令:
grep main wyx.c(grep的全文检索功能)
ls > ls.txt :ls内容输出到文本
find pathname -mtime -n/+n
find -size -n/+n (find的功能还是比较强大)

简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分,必要时可以查阅相关手册

学习了一下如何使用vim+gcc+gdb,将这三者进行结合从而在linux bash的环境下进行c语言编程

vim:一种文本编辑器,用来在其中编写c语言代码(不需要鼠标许多快捷操作)
gcc:编译器,对代码进行预处理、编译、汇编、生成可执行文件
预处理:-E hello.i
编译:-s hello.s
汇编:-c hello.o

gcc :支持编译的一些源文件后缀名
后缀     源文件
.c     C语言源文件
.C .cc .cxx     C++源文件
.m     Object-C源文件
.i     经过预处理后的C源文件
.ii     经过预处理后的C++源文件
.s .S     汇编语言源文件
.h     预处理文件(头文件)
.o     目标文件
.a     存档文件

Tips: gcc预处理源文件的时候(第一步),不会进行语法错误的检查 语法检查会在第二步进行,比如花括号不匹配、行末尾没有分号、关键字错误......

实验楼的例子:

gdb:调试工具
最基本的命令有: gdb programm(启动GDB)  gdb+可执行文件
b 设断点(4种断点:行断点、函数断点、条件断点、临时断点)
run(r) 开始运行程序
bt 打印函数调用堆栈
p 查看变量值
c 从当前断点继续运行到下一个断点
n(next) 单步运行
s(step) 单步运行

display 跟踪变量值的改变

先next再step

until:直到循环结束

finish:运行结束函数
quit 退出GDB

开始调试:

调试中列出代码(l):

查看断点(info break):

多模块编程:

Makefile: 多文件的好处:可以将一个大项目分成多个小的部分,独立开来,利于结构化管理。在修改和维护的时候,优势就更明显了 可以将一个大项目分成多个小的部分,独立开来,利于结构化管理。在修改和维护的时候,优势就更明显了

例子:

makefile

教材第一章:

信息就是位+上下文:源程序实际上就是由01比特组成的位序列,由ASCII码组成的文件称为文本文件, 其他文件都称为二进制文件 所有的信息实际上都是由位表示的,区分不同数据对象的唯一方法是上下文。

了解编译系统如何工作的好处:优化程序性能、理解链接是出现的问题、避免安全漏洞 外壳在处理命令时,如果命令行的第一个单词不是一个内置的外壳命令,那么外壳就会假设这是一个 可执行文件的名字,它会加载并运行这个文件。

系统的硬件组成: 总线、I/O设备、主存、处理器(加载(主存到寄存器)、存储(寄存器到主存)、操作(ALU)、跳转(程序计数器PC))

存储器层次结构:上一层的存储器作为第一层存储器的高速缓存

虚拟存储器:程序代码和数据、堆、共享库、栈、内核虚拟存储器

教材第七章:

链接是将各种代码和数据部分收集起来并组合成一个单一文件的过程 ,这个文件可被加载(或被拷贝)到存储器并执行 链接由被叫做链接器的程序自动执行,链接分为静态链接和动态链接

为了构造可执行文件,链接器必须完成两个主要任务:符号解析、重定位

目标文件的三种形式:可重定位目标文件、可执行目标文件、共享目标文件 重定位由两步组成:重定位节和符号定义、重定位节中的符号引用

处理目标文件的工具: AR:创建静态库,插入、删除、列出和提取成员
STRINGS:列出一个目标文件中所有可打印的字符串。
STRIP:从目标文件中删除符号表信息
READELF:显示一个目标文件的完整结构,包括ELF头中编码的所有信息,包含了size和nm的功能
OBJDUMP:二进制工具之母,能够显示一个目标文件中所有的信息,有反汇编的作用
LDD:列出一个可执行文件在运行时所需要的共享库

静态链接器是由像GCC这样的编译驱动器调用的

教材学习中的问题和解决过程

第七章链接那部分没怎么看懂

本周代码托管(一部分)

代码托管

参考资料

    • 《深入理解计算机系统V2》学习指导
    • ...
时间: 2024-08-01 22:45:05

20145311 《信息安全系统设计基础》第二周学习总结的相关文章

信息安全系统设计基础第二周学习总结(一)

Linux下C语言编程基础实验报告 学习任务 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 学习内容 1. 快捷键 2. vim 3. gcc 4. gdb 5. make与makefile 学习过程记录 第一部分 第一讲第一节:移动光标 H左.j下.k上.l右 第一讲第二节:VIM的进入和退出 <E

20135304刘世鹏——信息安全系统设计基础第二周学习总结

第一节.Linux基础 1.Linux命令 Linux中命令格式为:command [options] [arguments] 选项:是调整命令执行行为的开关,选项不同决定了命令的显示结果不同 参数:决定了命令的显示结果不同 例如:ls .中.为参数:ls -a中-a为选项 2.man命令 1 Executable programs or shell commands(普通的Linux命令) 2 System calls (系统调用,操作系统的提供的服务接口) 3 Library calls (

20135218 信息安全系统设计基础第二周学习总结

深入理解计算机系 Linux基础 一.实验说明 环境登录  无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 二.实验步骤 三种知识: 元知识:这门课程思考问题框架是什么?遇到老问题,它会怎样分析?遇到新问题,它会怎样分析? 硬知识:这门课程的主要知识点是什么?适合用思维导图组织吗? 软知识:这门课程的哪些知识点需要哪些实践环节来强化理解和记忆? 1. Linux命令 Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,

20135220谈愈敏--信息安全系统设计基础第二周学习总结

<深入理解计算机系统>实验一 在我的理解中: 元知识:思考问题的能力 硬知识:可见的知识点 软知识:实践中的经验 后面的常用命令是老师上课中讲到的. 一边看提供的材料一边在实验楼里实践,我的实验顺序如下: vim编辑器实验1234 普通模式(Normal mode):在普通模式中,用的编辑器命令,比如移动光标,删除文本等等.这也是Vim启动后的默认模式. Vim强大的编辑能来自于其普通模式命令.普通模式命令往往需要一个操作符结尾.例如普通模式命令dd删除当前行,但是第一个"d&quo

信息安全系统设计基础第二周学习总结——20135308

本周,我学习了vim的使用方法. VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,VI来说,一开始就需要相当大的技能,但一旦掌握这些技能,则你将会越来越熟练,这跟五笔打字很类似.我们建议通过实践练习来学习具体来说通过VIMTUTOR来学习.只要在命令行中输入vimtutor,然后跟着教程练习就可以了. 大写“K”可以用来查找函数的帮助信息:查看 man page,命令模式下,将光标放在函数名上,按"K"可以直接察看 man page. 几个设置 :set nu 显示行

信息安全系统设计基础第二周学习总结

学习目标 1. 熟悉Linux系统下的开发环境    2. 熟悉vi的基本操作    3. 熟悉gcc编译器的基本原理    4. 熟练使用gcc编译器的常用选项    5 .熟练使用gdb调试技术    6. 熟悉makefile基本原理及语法规范    7. 掌握静态库和动态库的生成 内容一:vim编辑器的使用 1.vim编辑器的三种模式 Ⅰ正常模式:(按Esc或Ctrl+[进入) 左下角显示文件名或为空 Ⅱ插入模式:(按i键进入) 左下角显示--INSERT-- Ⅲ可视模式:左下角显示—V

20135337——信息安全系统设计基础第二周学习总结

知识点:一.Linux基础    这节实验的核心内容:基于搜索——学会使用:man.cheat.man-k.find(找到路径).locate(神速般的find).whereis.which(使用的命令工具装在哪儿).grep(全文搜索.正则表达式).二.VIM1.vi有三种模式:命令行模式.插入模式.底行模式. a)vim教程:比如:d 删除操作符:-w 单词(如:dw 从光标出删除至下一个单词末尾(不含第一个字符)).b)移动光标: [[ 转到上一个位于第一列的"{" ]] 转到下

信息安全系统设计基础第二周学习总结(20135213)

1.教材第一章,第七章学习:阅读并消化教材内容(有部分考试内容) 2.<嵌入式Linux应用程序开发标准教程>第三章3.1-3.5的学习(本周大部分考试内容都从这出,特别是与教材重复内容) 3.完成实验并发Blog 练习vimtutuor 至少一遍 使用vim 输入以下代码,联系使用“K”查找帮助文档: 练习gcc编译运行代码. 练习gdb调试代码 . 把上述代码中除了main函数外的代码制作成一个静态库math.a和一个共享库math.so. 编写makefile,让代码编译,上述静态库和共

20135234马启扬-——信息安全系统设计基础第二周学习总结

Linux基础 1.Linux命令 command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数 选项(options)或参数(arguments) 选项是调整命令执行行为的开关,选项不同决定了命令的显示结果不同. 参数是指命令的作用对象. 2. man命令 man是manul的缩写 帮助文档 3.cheat 命令 cheat命令是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序. 它提供显示Linux命令使用案例

LINUX信息安全系统设计基础第二周学习总结

1.Terminal(终端) Linux 系统还提供了一个叫做终端模拟器的程序(Terminal),下面几个比较常见的终端模拟器,例如 gnome-terminal,kconsole,xterm,rxvt,kvt,nxterm 和 eterm,目前我们的实验中的终端程序是 xfce  桌面环境自带的 xfce-terminal.不过要注意的是这里所说的终端(Terminal)和控制台(Console)是有区别的. 在物理机系统上你 [Tab] 使用Tab键来进行命令补全,Tab键一般键盘是在字母