CSAPP笔记(第一章 计算机系统漫游)

第一章讲的比较浅显, 罗列一下

  • 源文件以文本文件的方式保存
  • 不同的上下文中, 同一个字节序列表示不同的意思
  • 源文件被编译系统编译成目标程序, 供系统上执行
  • C语言经过预编译, 编译器, 汇编器, 链接器, 生成目标程序
  • 了解编译原理, 可以帮助我们优化程序性能, 理解链接出错, 避免安全漏洞
  • 计算机内部包括CPU, 存储器, I/O桥, 外设, 他们之间用总线进行通信
  • CPU是个搬运工, 几乎所有的操作都需要CPU参与, 将数据从一个地方搬运到另一个地方
  • DMA可以不需要CPU参与, 直接将数据从磁盘运到主存
  • 各个设备间访问速度的巨大差异, 导致了缓存的诞生, CPU > L1 Cache > L2 Cache > L3 Cache > 内存 > 磁盘 > 网络
  • 操作系统连接应用和硬件, 给应用提供隔离的硬件抽象, 进程, 虚拟存储器和文件
  • 任何时刻, CPU只能执行一个进程, CPU在多个进程间切换来模拟多进程, 切换时需要把当前寄存器的值保存起来, 加载另一个进程的上下文信息到寄存器
  • 实际上, 一个进程由多个线程组成, 线程间共享上下文的代码和数据资源, 线程与CPU直接对应
  • 虚拟存储器使得每个进程都认为只有自己在操作内存, 包含程序代码和数据, 堆, 栈, 共享库, 内核虚拟存储器
  • Linux中, 所有I/O都是文件, 包括磁盘, 键盘, 显示器, 网络
  • 在计算机的发展历史, 有2个目标, 做的更多, 运行的更快
  • CPU单核, 多核, 超线程. 超线程是CPU的一个核同时拥有2套寄存器和高速缓存, 提供2个逻辑线程的抽象
  • CPU中使用流水线技术, 可以大大缩短任务的运行周期
  • 程序抽象的概念是伟大的, 人脑同时容纳的内容是有限的, 只有通过一层一层的抽象, 屏蔽底层细节, 才能做出更多庞大的系统

猜你喜欢

转载自www.cnblogs.com/winwink/p/CSAPP_Note_Chapter1_Introduction.html