软件基础
2.1 编程语言
2.1.1 汇编语言
CPU从主存读取出来执行的指令对人类来说是根本不可理解的。
Intel 80486指令中的16进制数0x89E5表示将ESP寄存器的内容拷入EBP寄存器。
汇编器可以将人们可以理解的源文件汇编成机器代码。汇编语言需要显示的操作寄存器和数据,并且与特定的处理器相关。
Linux中只有很少一部分用汇编语言写。
Ldr r16,(r15) ;将寄存器15所指示的地址中的值加载到寄存器16中
Ldr r17,4(r15) ;将邻接单元内容加载到寄存器17中。
beq 16,r17,100 ;比较寄存器16和寄存器17中的值,如果相等则调转到标号100处。
2.1.2 C语言
与具体机器无关,可移植。
C支持许多类型的变量,变量是一个通过符号名称引用的内存位置。指针式那些包含其他数据内存位置或者地址的变量。
2.2 操作系统
2.2.1 内存管理
2.2.3 设备驱动
设备驱动控制操作系统和硬件设备之间的相互操作。
2.2.4 文件系统
Linux最常用的文件系统就是EXT2文件系统。
2.3 核心数据结构
2.3.1 连接列表
Linked 链表
Chained 双向链表
2.3.1 散列表
散列表是指针的数组或向量,指向内存中连续的相邻数据结合。Linux经常用它来实现caches,缺点是使用和维护单一链表和散列表更复杂。
2.4 抽象接口