*听了学长的讲座之后,发现自己还有很多不会的东西,有些都没有听过,而且自己并不能完整的掌握,现在只能将一些概念,名词了解记录下来。
1.静态链接库
静态链接库的优点:减少编译时间
静态链接库的缺点:需要大空间;占内存/占磁盘
2.共享库&&运行时库
百度动态链接库
动态链接库的优点:
3.ABI
(Application Binary Interfaces 应用程序二进制接口)
应用程序二进制接口是一套规则,规定二进制可执行文件在运行时应如何于某些服务(诸如内核或库函数所提供的服务)交换信息。ABI特别规定了使用哪些寄存器和栈地址来交换信息,以及所交换值的含义,一旦针对某个特定的ABI进行了编译其二进制可执行文件应能在ABI相同的任何系统上运行,与之相反,标准化的API仅能通过编译源代码来保证程序的可移植性。
4.进程建立的步骤
1.创建内存空间(虚拟)
2.映射
3.确定入口
5.plt延时绑定
libc库有很多函数,可是我们写程序的程序的时候并不可能全都用到,如果对所有函数的地址都进行解析定位,会增加进程的启动的时间,所以在用到哪个函数的时候再对函数的位置进行定位,这就是延时绑定。
6.hash表
哈希表根据关键码值(Key value)而直接进行访问的数据结构,提高了查找速度。
百度hash表
7.DPL
(Descriptor Privilege Level 请求特权级)
0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ os
—————————————————————————
1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~驱动
2
—————————————————————————
3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~用户
8.进程地址空间
9.read ELF&&objdump
查看目标文件,可执行文件
先解释一下ELF是什么
百度ELF
我也是第一次接触这两个命令,看了学长的演示,在这些命令下输出的有
Idx name—-size—-VMA—-LMA—-Fileoff(偏移量)—-Algn(对齐)
10. 内核
作用:
1.硬件管理
2.软件
3.安全
内核可分为宏内核,微内核
百度百科宏内核与微内核的区别