计算机系统SPOC版

计算机系统课程组@湖南大学

目录

  • 1 计算机系统漫游
    • 1.1 课程介绍
    • 1.2 引论
      • 1.2.1 《计算机系统》概论
      • 1.2.2 计算机简化模型
      • 1.2.3 一个原型系统
    • 1.3 Hello World
      • 1.3.1 基础知识
      • 1.3.2 程序的存储与编译
      • 1.3.3 程序的运行过程
    • 1.4 本章小结
    • 1.5 讨论一:操作环境及GDB;C++与C语言的异同
  • 2 汇编入门
    • 2.1 汇编初步
      • 2.1.1 汇编基础知识
      • 2.1.2 第一个汇编程序
      • 2.1.3 MOV指令
      • 2.1.4 比例变址寻址
      • 2.1.5 绝对寻址
      • 2.1.6 间接寻址
      • 2.1.7 变址寻址
      • 2.1.8 传送数据至内存
      • 2.1.9 获取变量在内存的地址
    • 2.2 汇编进阶
      • 2.2.1 栈操作指令
      • 2.2.2 算术逻辑运算指令
      • 2.2.3 跳转与条件传送
      • 2.2.4 循环指令
    • 2.3 本章小结
    • 2.4 本章拓展
    • 2.5 讨论二:编译环境与整数及浮点数运算
  • 3 位字节与信息存储
    • 3.1 位字节信息存储
    • 3.2 整数的表示与运算
      • 3.2.1 有符号数与无符号数
      • 3.2.2 整数的扩展与截断
      • 3.2.3 整数运算-加法&减法
      • 3.2.4 整数运算-乘法&除法
      • 3.2.5 整数的表示-sizeof代码演示
    • 3.3 浮点数的表示与运算
    • 3.4 本章小结
    • 3.5 讨论三:数据及程序的机器级表示
  • 4 程序的机器级表示
    • 4.1 基本
      • 4.1.1 基础知识
      • 4.1.2 数据传送与寻址方式
      • 4.1.3 算术操作
    • 4.2 控制
      • 4.2.1 条件码
      • 4.2.2 条件分支
      • 4.2.3 循环
      • 4.2.4 Switch
    • 4.3 函数调用
      • 4.3.1 过程与栈帧
      • 4.3.2 sum代码演示
      • 4.3.3 sum调用
      • 4.3.4 嵌套与递归
      • 4.3.5 swap函数及小结
    • 4.4 数据
      • 4.4.1 复杂数据的机器级表达
    • 4.5 X86-64简介
    • 4.6 本章小结
    • 4.7 讨论四:缓冲区溢出攻击;程序,递归、链表的机器级表示
  • 5 CPU设计
    • 5.1 指令集结构及计算机硬件基本组成
      • 5.1.1 指令集结构
      • 5.1.2 计算机硬件基本组成
    • 5.2 RTL语言及其数字系统描述
    • 5.3 CPU设计规范
    • 5.4 VSCPU设计
      • 5.4.1 硬布线方式
      • 5.4.2 微程序控制方式
    • 5.5 自学拓展-RSCPU设计
    • 5.6 拓展-简单CPU的缺点&8085CPU
    • 5.7 讨论五:CPU设计
  • 6 优化程序性能
    • 6.1 基础优化
      • 6.1.1 编译器的局限性
      • 6.1.2 CPE与第一个程序
      • 6.1.3 高级语言层次优化程序性能
    • 6.2 进阶优化
      • 6.2.1 冯诺伊曼体系结构
      • 6.2.2 从机器代码角度优化程序性能
      • 6.2.3 读写相关
      • 6.2.4 阿姆达尔定律
    • 6.3 本章小结
    • 6.4 本章小测
  • 7 存储器层次结构
    • 7.1 存储器层次结构
      • 7.1.1 存储器技术
      • 7.1.2 访问主存
      • 7.1.3 磁盘结构
      • 7.1.4 磁盘访问时间
      • 7.1.5 访问磁盘的过程
      • 7.1.6 存储技术发展趋势
      • 7.1.7 局部性原理
      • 7.1.8 存储器层次结构
    • 7.2 高速缓存
      • 7.2.1 高速缓存概念
      • 7.2.2 基本结构和参数
      • 7.2.3 映射规则
      • 7.2.4 直接映射高速缓存
      • 7.2.5 组相联高速缓存
      • 7.2.6 全相联高速缓存
      • 7.2.7 写入与性能指标
      • 7.2.8 存储器山
      • 7.2.9 空间局部性
      • 7.2.10 时间局部性
    • 7.3 本章小结
    • 7.4 本章小测
    • 7.5 讨论六:程序性能优化
  • 8 链接
    • 8.1 符号解析与目标文件
      • 8.1.1 链接概论
      • 8.1.2 链接工作与符号解析
      • 8.1.3 目标文件
    • 8.2 重定位与库文件
      • 8.2.1 重定位
      • 8.2.2 静态链接库
      • 8.2.3 可执行文件与共享库
    • 8.3 本章小结
    • 8.4 本章小测
    • 8.5 讨论七:神奇的链接器
  • 9 异常控制流
    • 9.1 异常与进程
      • 9.1.1 异常基本概念
      • 9.1.2 异常分类
      • 9.1.3 进程基本概念
      • 9.1.4 进程回收
    • 9.2 信号与非本地跳转
      • 9.2.1 加载运行程序
      • 9.2.2 信号基本概念
      • 9.2.3 信号处理
      • 9.2.4 非本地跳转
    • 9.3 本章小结
  • 10 虚拟存储器
    • 10.1 概念与系统
      • 10.1.1 基本概念
      • 10.1.2 功能
      • 10.1.3 地址翻译
    • 10.2 动态内存分配
    • 10.3 本章小结
    • 10.4 讨论八:进程,信号与虚存
  • 11 拓展学习
    • 11.1 深入理解攻击
      • 11.1.1 SQL注入攻击
      • 11.1.2 键盘记录器
      • 11.1.3 缓冲区溢出攻击
      • 11.1.4 修改返回地址(破解)
      • 11.1.5 直接修改可执行文件
  • 12 课程实验
    • 12.1 数据实验
    • 12.2 炸弹实验
    • 12.3 缓冲区实验
    • 12.4 链接/外壳实验
    • 12.5 Linux GDB和DEBUG初探(选做)
    • 12.6 模型机
    • 12.7 性能实验
    • 12.8 高速缓存实验
高速缓存

7.2 高速缓存-课件