《深入理解计算机系统》(计算机系统漫游)

计算机系统漫游

最近在看深入理解计算机系统,先总结一下自己对第一章的理解
在这里插入图片描述

//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总线到本地磁盘

客户端与服务器的交互流程

  1. 用户输入“hello”
  2. 客户端向远程服务器发送字符串“hello”
  3. 务器向shell发送“hello”shell再将输出给服务器
  4. 服务器向客户端发送字符串“hello”
  5. 客户端打印hello字符串

系统硬件

  1. 总线:贯穿整个系统的是一组电子管道
  2. I/O设备:系统与外部世界的联系通道
  3. 主存:临时存储设备
  • 物理:动态随机存取存储器芯片构成
  • 逻辑:存储器是一个线性的字节数组,每个字节都有其唯一的地址,字节都有其唯一的地址
  1. 处理器(中央处理单元):是执行存储在主存中指令的引擎

系统软件

  1. 操作系统
    在这里插入图片描述
    功能:
    1.防止硬件被失控的应用程序使用
    2.使应用程序可以以简单的方式控制多而复杂的硬件
  2. 进程与线程
    进程是操作系统对一个正在进行的程序的一种的抽象
    一个进程实际上可以由多个称为线程的执行单元组成

下面任务管理器大概可以看为进程
在这里插入图片描述
3. 文件
文件就是字节序列;
文本文件:只由ASCII字符构成的文件
二进制文件:所有其他文件
4. 虚拟内存
还不是很理解

Amdahl定律

Amdahl定律是我们对系统某个部分加速时,对系统整体性能影响取决于该部分的重要程度与加速程度

并发和并行

  • 并发
    不是真正意义上的同时进行,但又是客观存在同时进行两件事
    例如一个人可以边看手机边看电视

  • 并行
    多件事情在同时进行,例如一个人可以边坐车边看手机

  • 指令级并行
    指令集并行基于流水线(Pipeline)技术,

流水线技术我认为就是像汽车工厂装配汽车一样,没有流水线技术以前,是一个一个汽车装配,福特采用了流水线装配,按流程装,可以多个车进行不同的流程

  • 线程级并发
    相当于边看手机边看电视,然后快速看一眼电视在看手机,两边剧情都可以接上,就是速度够快
  • 单指令,多数据并行
    在最低层次上,有不同特殊的硬件,允许一条指令产生多个可以并行执行的操作
    之前计导老师讲过类似的,就是为某个特殊功能所服务而生产的硬件,但查了资料感觉很复杂。

看了第一章大概了解了一些基本概念

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值