计算机系统概论课程笔记
学期知识图谱: 编译:数据的机器表示,汇编基本指令,程序的机器表示 链接:程序连接,内存布局,栈溢出攻击 启动:创建虚存空间、_start运行 运行:虚存与虚存管理、异常与异常控制流、动态内存分配 退出:进程管理(子进程exit、父进程回收) 其他:信号处理、文件IO、线程与并发 区分不同数据对象的唯一方法是我们读到这些对象的上下文 基本知识 关于硬件 PC(程序计数器):指向当前执行的指令(执行完后更新为下一条要执行的指令)。在 x86-64 架构下称为 RIP。 寄存器:处理器内部以名字访问的快速存储单元。 整数寄存器可存储地址或整数数据。 条件码寄存器:保存最近执行的算术或逻辑指令的状态信息。 内存:以字节编码的连续存储空间。 指令集 指令集是软硬件的接口,包含:指令集组成;指令集架构(ISA):实现软硬件解耦。 操作系统 作用:1.防止应用程序被失控的应用滥用。 2.提供简单一致的机制控制低级硬件设备。 其他 Amdahl’s 定律 假设系统运行一个应用程序所需的时间为 $T_{\text{old}}$,其中某部分占比为 $a$,其性能提升比例为 $k$。 优化后的总执行时间为:$T_{\text{new}} = T_{\text{old}} \left[ (1 - a) + \frac{a}{k} \right]$ 加速比为:$S = \frac{T_{\text{old}}}{T_{\text{new}}} = \frac{1}{(1 - a) + \frac{a}{k}}$ 编译流程 .c – 编译 → .s(汇编代码) .s – 汇编 → .o(目标文件) .o – 链接 → 可执行程序 并发与并行 并发:同时具有多个活动的系统。 并行:利用并发来提高系统运行速度。 数据单位与位模式 bit:一个二进制位。 byte:8 位。 word:16 位(1 word = 2 bytes,为早期 x86 十六位系统的遗留)。 位模式:长度为 $n$ 的位序列,可表示 $2^n$ 个数。 C 语言运算符 逻辑运算符(&&, ||):具有短路效应,返回 0 或 1。 按位运算符(&, |, ^, ~, <<, >>):返回运算结果的二进制数。 移位运算: 逻辑右移:高位填充 0(适用于无符号数)。 算术右移:高位填充符号位(适用于有符号数,但对于负数可能不向零取整)。 在 Java 中,>> 表示算术右移,>>> 表示逻辑右移。 ...