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

教材学习内容总结

第一章 计算机系统漫游

(每小节基本内容概括)

1.1 信息就是位+上下文

文本文件:由ASCII字符构成的文件

二进制文件:其他文件

在不同的上下文中,一个同样的字节序列可能表示不同信息

1.2 程序被其他程序翻译成不同的格式

从源文件到目标文件的转化是由编译器驱动程序完成gcc -o hello hello.c

编译系统:预处理器、编译器、汇编器和链接器

预处理阶段:.c->.i,根据以字符#开头的命令,修改原始的C程序

编译阶段:.i->.s,汇编语言程序

汇编阶段:.s->机器语言指令,打包成可重定位目标程序

链接阶段:可重定位目标程序->可执行目标程序

1.3 了解编译系统如何工作是大有益处的

知道编译系统是如何工作的:优化程序性能、理解链接时出现的错误、避免安全漏洞

1.4 处理器读并解释存储在存储器中的指令

shell命令行解释器,输入的命令行第一个单词不是内置的外壳命令,那么外壳就会假设这是一个可执行文件的名字

1.4.1 系统的硬件组成

总线:贯穿整个系统的一组电子管道,携带信息字节并负责在各个部件间传递

I/O设备: 系统与外界的联系通道,通过一个控制器或适配器与I/O总线相连

主存:临时存储设备,处理器执行程序时,用来存放程序和程序处理的数据,由一组动态随机存取存储器(DRAM)芯片组成

处理器:中央处理单元(CPU),解释(或执行)存储在主存中的指令的引擎

1.4.2 运行hello程序

1.5 高速缓存至关重要

高速缓存存储器:静态随机访问存储器(SRAM)实现

1.6 存储设备形成层次结构

每个计算机系统中的存储设备都被组织成了一个存储器层次结构

一层上的存储器作为低一层存储器的高速缓存

1.7 操作系统管理硬件

操作系统两个基本功能:1)防止硬件被失控的应用程序滥用 2)向应用程序提供简单一致的机制来控制复杂而大相径庭的低级硬件设备

操作系统通过几个基本的抽象概念(进程、虚拟存储器和文件)来实现这两个功能

1.7.1 进程

对处理器、主存和I/O设备的抽象表示

进程是操作系统对一个正在运行的程序的的一种抽象

并发运行:一个进程的指令和另一个进程的指令是交错进行的

上下文切换:操作系统实行交错执行的机制

1.7.2 线程

一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据

1.7.3 虚拟存储器
虚拟存储器是一个抽象概念,为每个进程提供了一个假象,即每个进程都在独占地使用主存
每个进程看到的是一致的存储器,称为虚拟地址空间

程序代码和数据:代码和数据区是直接按照可执行目标文件的内容初始化的

堆:堆可以在运行时动态地扩展和收缩

共享库:存放共享库的代码和数据的区域

栈:位于用户虚拟地址空间顶部的是用户栈,编译器用他实现函数调用,用户栈在程序执行期间可以动态地扩展和收缩

内核虚拟存储器:内核总是驻留在内存中,是操作系统的一部分,地址空间顶部区域为内核保留

1.7.4 文件

文件是字节序列,I/O设备的虚拟表示

系统中的所有输入输出都是通过使用一小组称为Unix I/O的系统函数调用读写文件来实现的

1.8 系统之间利用网络通信

1.9 重要主题

1.9.1 并发和并行

并发:一个同时具有多个活动的系统

并行:用并发使一个系统运行得更快

线程级并发:多处理器系统(由单操作系统内核控制的多处理器系统)要求程序是以多线程的方式来书写的,这些线程也可以并行的高效执行

指令级并行:现代处理器可以同时执行多条指令的属性 超标量处理器:处理器可以达到比一个周期一条指令更快的执行速率

单指令、多数据并行:允许一条指令产生多个可以并行执行的操作

1.9.2 计算机系统中抽象的重要性

第七章 链接

链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程,文件可以被加载到存储器并执行

7.1 编译器驱动程序

7.2 静态链接

链接器两个主要任务:符号解析、重定位

7.3 目标文件

可重定位目标文件:包含二进制代码和数据

可执行目标文件:可直接被拷贝到存储器并执行

共享目标文件:特殊类型的可重定位目标文件,可以在加载或者运行时被动态地加载到存储器并链接
目标文件格式:a.out COFF(一般目标文件格式) PE(可移植可执行) ELF(可执行可链接)

7.4 可重定位目标文件

7.5 符号和符号表

全局符号

外部符号

本地符号

7.6 符号解析

7.6.1 链接器如何解析多重定义的全局符号

强符号:函数和已初始化的全局变量

弱符号:未初始化的全局变量

处理多重定义符号规则:1.不允许有多个强符号 2.一个强符号和多个弱符号,选择强符号 3.多个弱符号,从弱符号中任意选择一个

7.6.2 与静态库链接

静态库:编译系统将所有相关目标文件打包成一个单独文件,可用作链接器的输入

静态库以一种称为存档的特殊文件格式存放在磁盘中,存档文件名由后缀.a标识

创建静态库:使用AR工具gcc -c XX.c ar rcs libXX.a(静态库名)XX.o(添加的程序)

使用静态库:编译连接输入文件和静态库gcc -O2 -c XX.c(调用静态库程序名) gcc -static -o p2 XX.o(调用静态库程序名) libXX.a(静态库)

7.6.3 链接器如何使用静态库来解析引用

7.7 重定义

合并输入模块并为每个符号分配运行时的地址

重定义时两步:重定位节和符号定义 重定位节中的符号引用

7.7.1 重定位条目

汇编器遇到对最终位置未知的目标引用

7.7.2 重定位符号引用

重定位符号引用

重定位绝对引用

7.8 可执行目标文件

7.9 加载可执行目标文件

7.10 动态链接共享库

共享库(共享目标):目标模块,在运行时,可以加载到任意的存储地址,过程称为动态链接,由动态链接程序执行

共享库的生成 gcc -fPIC -c xxx.c
gcc -shared -o libxxx.so xxx.o

共享库的使用:gcc -o main main.c -L. -lxxx

7.11 从应用程序中加载和链接共享库

分发软件

构建高性能的Web服务器

7.12 与位置无关的代码(PIC)

编译库代码:与位置无关的代码,使用-fPIC选项指示GNU编译系统生成PIC代码

PIC数据引用

全局偏移量表

PIC函数调用

7.13 处理目标文件的工具

AR:创建静态库,插入、删除、列出和提取成员

STRINGS:列出一个目标文件中所有可打印的字符串

STRIP:从目标文件中删除符号表信息

NM:列出一个目标文件的符号表中定义符号

SIZE:列出目标文件中节的名字和大小

READELF:显示一个目标文件的完整结构,包含SIZE和NM的功能

OBJDUMP:所有二进制工具之母,显示一个目标文件的所有信息,反汇编

LDD:列出一个可执行文件在运行时所需要的共享库

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

在虚拟机git找不到网址

本周代码托管截图

其他(感悟、思考等,可选)

老师给了很多东西,但是不知道先看哪个,是按照顺序看么?内容太多无法一时消化感觉闭卷考试还是很难。每次写博客都是先看一些理论知识,但是到最后时间越少,实践起来就特别紧张,但是实践才是最容易提升和发现问题的地方,希望自己下次注意。看理论知识时无法很好地与实践相结合导致实践时还是很陌生无从下手浪费了很多时间。

时间: 2024-11-13 02:48:54

20145309信息安全系统设计基础第2周学习总结的相关文章

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

教材学习内容总结 输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程. Unix I/O是一个简单低级的应用接口,可以把所有的输入输出当作对文件的读写来执行. 打开文件:标准输入描述符为0.标准输出描述符为1.标准错误描述符为2. 改变当前的文件位置:文件位置是从文件开头起始的字节偏移量. 读写文件:从当前文件位置开始.当大于文件长度的时候出发EOF条件. 关闭文件. open函数 flages参数指明进程打算如何访问该文件 mode参数指定新文件的访问权限位 read函数:从描述符为fd

20145309信息安全系统设计基础第12周学习总结后篇

指针与声明 声明 1.C语言中变量的声明 类型(type) 声明符(declarator) 2.最简单的声明是变量 3.指针数组 指针数组是一个数组 数组里的元素都是指针 例:int *daytab[13] 4.数组指针 数组指针是一个指针 指针指向一个类型和元素个数都固定的数组 例:int (*daytab1)[13] 5.指针函数 指针函数是函数 函数的返回值是指针类型 例:int *comp() 6.函数指针 函数指针是指针 指针指向函数 函数名就是函数指针 例:int (*comp1)(

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

总结 知识点总结 常用的Linux命令 Linux中命令格式为:command [options] [arguments]其中[]表示是可选的,即组成结构为:命令 [选项] [参数] man命令 man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助.配置文件帮助和编程帮助等信息. 常用选项: -a:在所有的man帮助手册中搜索 -k:根据关键字搜索联机帮助,是一种模糊搜索 -f:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息 -P:指定内容时使用

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

考试知识汇总 1.判断:实验楼环境中所有的默认系统用户名和密码均为 shiyanlou.(x ). 2.填空:Linux Bash中,Ctrl+a快捷键的作用是(将光标移至输入行头,相当于Home键). 3.判断:Linux Bash中, 可以使用man printf查看C语言中printf函数的帮助文档. (x) 4.填空:在Ubuntu中,使用(sudo apt-get install ddd)来安装ddd软件. 5.填空:在 Linux 里面可以使用使用(chmod)命令修改文件的权限.

20145309信息安全系统设计基础第11周学习总结前篇

教材学习内容总结 异常 异常:处理器中的变化(事件)触发从应用程序到异常处理程序的突发的控制转移 异常处理程序:在任何情况下,当处理器检测到有事件发生时,它就会通过一张叫做异常表的跳转表进行一个间接过程调用,到一个专门处理这类时间的操作系统子程序 当 exception handler处理结束之后,会有三种结果: ·处理程序将控制返回给事件发生的时候正在执行的指令 ·处理程序将控制返回给如果没有发生异常将会执行的下一条指令 ·处理程序终止被终端的程序 所有的到Linux系统调用的参数都是通过寄存

20145309信息安全系统设计基础第10周学习总结前篇

教材学习内容总结 附录A--错误处理 (1).Unix风格的错误处理:函数返回值包括错误代码,也包括有用的结果 (2).Posix风格的错误处理:返回0表示成功,返回非0表示失败:任何有用的结果都返回在通过引用传递进来的函数参数中. (3).DNS风格的错误处理:函数失败时返回NULL指针,并设置全局变量h_errno 标准I/O(高级输入输出函数) fopen/fclose:打开和关闭文件 fread/fwrite:读和写字节 fgets/fputs:读和写字符串 scanf/printf:复

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

1.打开文件 应用程序向内核发出请求→要求内核打开相应的文件→内核返回文件描述符 文件描述符:一个小的非负整数,用来在后续对此文件的所有操作中标识这个文件.有三个已经被指定了的如下: 标准输入--0(STDIN_FILENO) 标准输出--1(STDOUT_FILENO) 标准错误--2(STDERR_FILENO) 括号中是常量表示形式,使用时需要加头文件<unistd.h> 也就是说,在Unix生命周期一开始,0.1.2就被占用,以后的open只能从3开始--习题10.1. 在UNIX下还

20145309信息安全系统设计基础第11周学习总结后篇

进程 异常是允许操作系统提供进程的概念所需要的基本构造块. 进程:一个执行中的程序的实例. 上下文是由程序正确运行所需要的状态组成的,这个状态包括存放在存储器中的程序的代码和数据,它的栈.通用目的寄存器的内容.程序计数器.环境变量以及打开文件描述符的集合. 进程提供给应用程序的关键抽象: 一个独立的逻辑控制流,独占地使用处理器: 一个私有的地址空间,独占地使用存储器系统. 并发流:一个逻辑流的执行在时间上与另一个流重叠. 并发:多个流并发地执行的一般现象. 多任务:一个进程和其他进程轮流运行的概

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

1.转移控制-- call指令:后接被调用过程的起始的指令地址.效果是将返回地址入栈,并跳转到被调用过程的起始处. ret指令:从栈中弹出地址,并跳转到这个位置. 练习题: 找出下列代码的错误之处? movb $0xf,(%bl) ---目的操作数只能是一个寄存器或者一个存储器地址.(%bl)表示一个值 movw (%eax),4(%esp)---目的操作数与源操作数不能都是存储器 movb %si, 8(%ebp)---指令后缀与寄存器地址不匹配 int arith(int x,int y,i