notes for CSAPP chapter 1

1. 计算机系统漫游

跟踪“hello world”程序的生命周期,来开始对系统的学习

1.1 信息就是位+上下文

系统中的所有信息都是由一串比特表示的,区分不同数据对象的唯一办法就是读到这些数据对象时的上下文

1.2 程序被其他程序翻译成不同的格式

在Unix系统上,从源文件到目标文件的转化是由编译器驱动程序完成的
linux> gcc -o hello hello.c
在这里,GCC读取hello.c,并把它翻译成可执行目标文件hello
如图所示,执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)一起构成了编译系统(compilation system)
在这里插入图片描述

1.3 了解编译系统如何工作大有益处

  • 优化程序性能
  • 理解链接时出现的错误
  • 避免安全漏洞

1.4 处理器读并解释存储在内存中的指令

要想在unix运行可执行文件hello,将文件名hello输入到称为shell的应用程序中

linux> ./hello
hello, world
linux>

1.4.1 系统的硬件组成

在这里插入图片描述

  1. 总线
  2. I/O设备
  3. 主存
  4. 处理器

1.4.2 运行hello程序

键盘输入"./hello",shell程序将字符读入寄存器,再存到内存
敲回车后,shell加载可执行的hello文件,从磁盘到主存
//直接存储器读取技术DMA,可以使数据不通过处理器直接从磁盘到主存
处理器开始执行hello程序,"hello, world\n"字符串从主存复制到寄存器,再复制到显示设备,最终显示

1.5 高速缓存至关重要

高速缓存cache弥补了处理器和主存的差异
//利用好cache可以极大地提升程序性能

1.6 存储设备形成层次结构

寄存器
高速缓存(SRAM)
主存(DRAM)
本地磁盘
远程存储(web服务器,分布式文件系统)

1.7 操作系统管理硬件

操作系统是应用程序和硬件之间插入的一层软件

  1. 防止失控的应用程序滥用硬件
  2. 向应用程序提供简单的机制来操作复杂的低级硬件

1.7.1 进程

进程是操作系统对一个正在运行的程序的一种抽象

1.7.2 线程

现代系统中,一个进程实际上可以由多个称为线程的执行单元组成

1.7.3 虚拟内存

虚拟内存为每个进程提供了一种假象,即每个进程都在独占内存

1.7.4 文件

文件向应用程序提供了了一个统一的视图,来看待系统中可能含有的各式各样的I/O设备

1.8 系统之间利用网络通信

1.9 重要主题

1.9.1 Amdahl定律

加速比 S = T o l d / T n e w = 1 ( 1 − α ) + α / k 加速比S=T_{old}/T_{new}=\frac{1}{(1-\alpha)+\alpha/k} 加速比S=Told/Tnew=(1α)+α/k1

1.9.2 并发和并行

并发指一个具有多个活动的系统
并行指的是用并发来是一个系统运行得更快

  1. 线程级并发
  2. 指令级并发
  3. 单指令、多数据并行

1.9.3 计算机系统中抽象的重要性

文件是对I/O设备的抽象,虚拟内存是对程序存储器的抽象,而进程是对一个正在运行的程序的抽象
虚拟机是对整个计算机的抽象

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值