深入理解计算机系统——计算机系统漫游
前言
入坑计算机原理嘛,漫游慢慢游
思维导图
1.1 信息就是位+上下文
什么是位? 一个程序的生命周期是从一个源程序开始的,源程序实际上就是一个有值 0 和 1 组成的 位(比特 序列,8个位 为一组称为字节 每个字节表示程序中的某些文本字符
位<字节<字符 这样子的组成关系吧
系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传的数据,都是由一串比特表示是的
什么是上下文?在不同的上下文中,一个同样的字节 可能表示一个整数、浮点数、字符串或者是机器指令
1.2程序被其他程序翻译成不同的格式
hello程序的生命周期是一个高级c 语言程序开始的,为了看的懂,每一条C语句需要被其他程序转化为一系列低级机器指令,即为可执行目标文件
1.3了解编译系统如何工作是大有益处的
- 优化程序性能
- 理解链接时出现的错误
- 避免安全漏洞
总是说要优化,如果了解计算机是如何编译的,是不是能够从底层优化呢?带着疑问阅读后面章节
1.4 处理器读并解释储存在内存中的指令
这个是指我们常用的运行命令的shell,hello程序被编译成可执行目标文件,shell加载并运行 输出hello程序它的消息 然后等待下一个命令行
1.4.1 系统的硬件组成
这个我认为就是 电脑的组成啊(有鼠标键盘 显示器 主板 内存 CPU) 然后后面的章节会讲详细讲到他们是怎么密切配合工作的
1.4.3 hello 程序运行
hello程序放在磁盘上
程序加载,从磁盘复制到主存
当处理器运行程序,从主存复制到处理器
数据串“hello Word”开始时在磁盘上,复制到主存上,然后再从主存复制到显示设备
哇 复制来复制去的 是不是额外的开销,是不是可以提升一下速度呢?(高速缓存)
1.5高速缓存至关重要
结论:高速缓存存储器存在的应用程序员能够利用高速缓存将程序的性能提高一个数量级
在处理器和一个较大较慢的设备(主存)之间插入一个更小更快的存储设备(高速缓存)的想法已经成为一个普遍的观念
1.6存储设备形成层次结构
这个图告诉我,高速缓存器可以加很多个,那就是有好多级啊 然后通过需求来提高哪一级的性能么?
1.7 操作系统管理硬件
这个是讲 I/O 设备
运行hello程序都没有直接访问键盘啊 鼠标显示器这些的 它们依靠着操作系统提供服务
操作系统有两个基本功能 一是防止硬件失控的应用程序滥用 二是 向应用程序提供简单一致的机制来控制复杂又通常大不相同的低级硬件设备
1.7.1 进程
进程是操作系统对一个正在运行的程序的一种抽象
实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密的合作
1.7.2 线程
线程:一个进程可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。 多线程之间比多进程之间更容易共享数据,线程一般也比进程更高效。
1.7.3虚拟内存
虚拟内存:虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的内存都是一样的,称为虚拟地址空间。
- 文件:文件就是文字序列。每个I/O设备,都可以看成是文件。
1.8 系统之间利用网络通信
网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种I/O设备。
1.9 重要主题
- Amdahl定律:主要思想是当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。
- 并行和并发:想要计算机做的更多、想要计算机做的更快是计算机整个发展历史中的两个持续动力。并发指一个同时具有多个活动的系统;并行指的是用并发来使一个系统运行的更快。
- 抽象在计算机系统中有很大的重要性。