深入理解计算机系统读书笔记

第1章

1.1 信息就是位+上下文

  • 源程序实际上就是一个由值0和1组成的位(又称位比特)序列,8个位被组织成一组,称为字节(表示程序中的文本字符)。程序是以字节序列的方式存储在文件中的,每个字节都有一个整数值,对应于某些字符,每个文本行都是以一个看不见的换行符’\n‘来结束。只由ASCII字符构成的文件称为文本文件,所有其他文件都称为二进制文件。
  • 系统中的所有信息———包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示。区分不同的数据对象的唯一方法就是读到这些数据对象时的上下文。

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

  • 程序为了能够在系统上运行必须转化为一系列的低级机器语言指令,然后这些指令按照一种称为可执行目标程序的格式打包,并以二进制磁盘文件的形式存放起来。目标程序也称为可执行目标文件
  • Unix系统,从源文件到目标文件的转化是由编译器驱动程序完成
    linux> gcc -o hello hello.c
    -GCC编译器驱动程序读取源程序文件hello.c,把它翻译成可执行目标文件hello。如图:
    在这里插入图片描述
    1)、预处理阶段: 修改原始C程序。
    2)、编译阶段:编译器翻译文本文件,包含一个汇编语言程序。
    3)、汇编阶段:汇编器(as)将编译阶段的文本文件翻译成机器语言指令,将这些指令打包成可重定位目标程序的格式,并保存在目标文件hello.o中。
    4)、链接阶段:连接器(ld)负责处理合并标准C库中的函数合并,比如printf函数。结果得到一个可执行的目标文件,被加载到内存中有系统执行。

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

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

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

运行源程序被编译系统翻译成可执行目标文件。

1.4.1 系统的硬件组成
  • 总线
    • 贯穿整个系统的一组电子管道,它携带信息字节并负责在各个部件间传递。现在大多数机器的字长4个字节(32位)或8个字节(64位).
  • I/O设备
    • 是系统与外界联系的通道。通过一个控制器或适配器与I/O总线相连。控制器和适配器的区别主要在于它们的封装方式。控制器是I/O设备本身或者系统的主印刷电路板(主板)上的芯片组。而适配器则是一块插在主板插槽上的卡。两者的功能都是在I/O总线和I/O设备之间传递信息。
  • 主存
    • 用来存放程序和程序处理的数据。
  • 处理器
    • 中央处理单元(CPU),是解释或执行主存中指令的引擎。处理器的核心是一个大小为一个字的存储设备(或寄存器),也就是程序计数器(PC)。
      CPU指令可能执行的操作:加载、存储、操作、跳转。
1.4.2 运行程序

在这里插入图片描述
在这里插入图片描述

  • 一些目标文件中的代码和数据被加载到主存,处理器就开始执行程序的mian程序中的机器语言指令。这些指令将“hello,word\n”字符串中的字节复制到寄存器文件,再从寄存器文件中复制到显示设备,最终显示在屏幕上。步骤如图:
    在这里插入图片描述

1.5 高速缓存

  • 程序的机器指令最初是存放在磁盘上的,当程序加载时,它们被复制到主存;但处理器运行程序时,指令又从主存复制到处理器。复制的过程减慢了程序的工作。
  • 高速缓存存储器(cache或高速缓存),解决处理器与主存之间的差异。
    在这里插入图片描述

1.6 存储设备形成的层次结构

在这里插入图片描述

1.7 操作系统管理软件

在这里插入图片描述

  • 可以把操作系统看成是应用程序和硬件之间插入的一层软件。
  • 操作系统的两个基本功能:(1)防止硬件被失控的应用程序滥用;(2)向应用程序提供简单一致的的机制来控制复杂而又通常大不相同的低级硬件设备。主要通过进程、虚拟内存、文件来实现这两个功能。
  • 文件是对I/O设备的抽象表示,虚拟内存是对主存和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示。
1.7.1 进程
  • 进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程就好像独占地使用硬件。
  • 并发运行是指一个进程的指令与另一个进程的指令是交错执行。
  • 无论实在单核还是多核系统,,一个CPU看上去都像是在并发的执行多个进程,这是通过处理器在进程间来回切换的。操作系统的这种机制叫做上下文切换
  • 进程的上下文切换
    在这里插入图片描述
1.7.2 线层
  • 一个进程实际上由多个线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局的数据,线程一般比进程更高效。
1.7.3 虚拟内存
  • 虚拟内存是一个抽象的概念,,它为每个进程提供了一种抽象,每个进程看到的内存地址是一致的。
    在这里插入图片描述
1.7.4 文件
  • 文件就是字节序列,包括每个I/O设备、键盘、显示器,甚至网络都可以看成是文件。系统中所有的输入输出都是通过使用一小组称为Unix I/O的系统函数调用读写文件来实现的。

1.8 系统之间利用网络进行通信

  • 现代系统经常通过网络和其他系统连接到一起。网络相当于I/O设备。当系统从主存复制一串字节到网络适配器,数据流经过网
  • 络到达另一台机器,相似地,系统可以读取其他机器发送来的数据,并把数据复制到自己的主存中。

1.9 重要主题

1.9.1 Amdahl定律

在这里插入图片描述

1.9.2 并发和执行
  • 并发指一个同时具有多个活动的系统,并行指的是用并发来使一个系统运行得更快。
  • 1、线程级并发
    • 使用线程可以在一个进程中执行多个控制流。
    • 多核处理器将多个CPU(核)集成到一个电路芯片上。
      在这里插入图片描述
    • 超线程也称为同时多线程,是一项允许一个CPU执行多个控制流的技术。
  • 2、指令级并行
    • 可以同时执行多条指令
  • 3、单指令、多数据并行
    • 允许一条指令产生多个可以并行执行的操作,这种方式称为单指令、多数据,即是SIMD并行

1.10 小结

在这里插入图片描述

第二章

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三章

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2月阅读笔记

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4月阅读笔记

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值