计算机系统漫游 笔记
计算机系统漫游
最近在看深入理解计算机系统,先总结一下自己对第一章的理解
//hello 程序
#include<stdio.h>
int main()
{
printf("hello world");
}
信息
以上面的hello程序为例 ,它的生命周期是从源程序开始的
- 源程序:由值0和1组成的位(比特)序列;8个位是1组,1组被称为字节
上面的程序是以字节序列的方式存储到文件中的。它表示方法说明了系统中所有文件都是由比特构成的
如何区分数据对象?
- 按照读取数据对象时的上下文来区分,唯一的办法
- 上下文:我认为就是该数据上面的数据与它下面的数据,这样就可以确定数据要表示的意义。
编译
1.预处理阶段
- 预处理器根据以#开头的命令,修改C程序,再将刚才的hello程序中的#include<stdio.h>读取插入程序文本中
2.编译阶段
- 将文本文件hello.i翻译为hello.s,它包含一个汇编语言程序
汇编语言程序:用汇编语言编写的一种计算机程序, 属于计算机低级语言程序,是属性为ASM的源文件。汇编语言程序在经过汇编、链接后得到可执行程序即EXE文件
3.汇编阶段
- 汇编器将hello.s翻译成机器语言指令,把这些指令打包为可重定位目标程序,保存到二进制hello.o文件中
hello.o文件
4.链接阶段
- 链接器(ld)将目标文件与其他目标文件链接,例如main程序中使用了函数printf,链接器负责把printf.o合并到main程序中,得到可执行目标文件main
链接时连接目标文件和printf.o是静态链接
运行
Shell程序:是计算机用来解释你输入的命令然后决定进行何种处理的程序,是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务
- Shell程序执行它的指令,等待我们输入一个命令,当我们在键盘输入字符串“./hello”后,shell程序将字符读入寄存器,再放在内存
- 当我们输入回车键,shell程序知道了我们结束了命令的输入,然后shell程序执行一系列的指令来加载可执行的hello文件,这些指定会将hello代码和数据从磁盘复制到主存中
- 一旦主存加载了hello文件的代码和数据,处理器就会执行其中的main函数的代码片段,然后将结果"hello,world"复制到寄存器文档,然后从寄存器文档复制到显示设备,最终显示在屏幕上
高速缓存
-
较大的存储设备比较小的存储设备运行慢;加快处理器的运行速度比加快主存的速度容易便宜;产生了差异。
-
高速缓存存储器,经过L1,L2,L3,来针对这种差异。有特殊的总线连接到处理器,相当于系统多了存储器,
-
高速缓存不是很理解L1,L2,L3与处理器的细节和为什么要做三个高速缓存?
存储设备形成层次结构
上面的保存下面的字,高速缓冲行,磁盘块,文件
系统间网络通信
- 网络可视为一个I/O设备
- 一个设备要使用数据时,数据会由另一个设备经过网络到该设备,我认为在单个设备中相当于一个设备文件通过I/O总线到本地磁盘
客户端与服务器的交互流程
- 用户输入“hello”
- 客户端向远程服务器发送字符串“hello”
- 务器向shell发送“hello”shell再将输出给服务器
- 服务器向客户端发送字符串“hello”
- 客户端打印hello字符串
系统硬件
- 总线:贯穿整个系统的是一组电子管道
- I/O设备:系统与外部世界的联系通道
- 主存:临时存储设备
- 物理:动态随机存取存储器芯片构成
- 逻辑:存储器是一个线性的字节数组,每个字节都有其唯一的地址,字节都有其唯一的地址
- 处理器(*处理单元):是执行存储在主存中指令的引擎
系统软件
- 操作系统
功能:
1.防止硬件被失控的应用程序使用
2.使应用程序可以以简单的方式控制多而复杂的硬件 - 进程与线程
进程是操作系统对一个正在进行的程序的一种的抽象
一个进程实际上可以由多个称为线程的执行单元组成
下面任务管理器大概可以看为进程
3. 文件
文件就是字节序列;
文本文件:只由ASCII字符构成的文件
二进制文件:所有其他文件
4. 虚拟内存
还不是很理解
Amdahl定律
Amdahl定律是我们对系统某个部分加速时,对系统整体性能影响取决于该部分的重要程度与加速程度
并发和并行
-
并发
不是真正意义上的同时进行,但又是客观存在同时进行两件事
例如一个人可以边看手机边看电视 -
并行
多件事情在同时进行,例如一个人可以边坐车边看手机 -
指令级并行
指令集并行基于流水线(Pipeline)技术,
流水线技术我认为就是像汽车工厂装配汽车一样,没有流水线技术以前,是一个一个汽车装配,福特采用了流水线装配,按流程装,可以多个车进行不同的流程
- 线程级并发
相当于边看手机边看电视,然后快速看一眼电视在看手机,两边剧情都可以接上,就是速度够快 - 单指令,多数据并行
在最低层次上,有不同特殊的硬件,允许一条指令产生多个可以并行执行的操作
之前计导老师讲过类似的,就是为某个特殊功能所服务而生产的硬件,但查了资料感觉很复杂。
看了第一章大概了解了一些基本概念