计算机系统漫游

Administrator
Administrator
发布于 2023-11-20 / 26 阅读
0
0

计算机系统漫游

[toc]

1.1信息就是位+上下文

  • 源程序 hello.c 是位(比特序列),8 位一组称字节
  • ASCII码,一个字节大小整数(2^8^-1 = 255)表一字符,只有ASCII码字构成 称“文本文件”,其他文件都称 “二进制文件”。

1.2程序翻译

C语句 → 低级机器语言指令 →^可执行目标程序打包^ → 二进制磁盘文件

gcc -o hello hello.c

dfe284e6c9974c23a0803b09a76b8696.png

1.3为何要了解编译系统

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

1.4处理器读解内存指令

  • 运行磁盘的可执行文件

./hello

1.4.1系统硬件

  • 总线:贯穿系统的电子管道i,携带字(word)(字节块),例:字长4个字节的电脑就是32位的。
  • I/O设备 → 控制器(主板上)、适配器(插卡)→ I/O总线
  • 主存:物理:一组动态随机存取存储器(DRAM)芯片组成。逻辑:一个线性字节数组(索引)即每个字节都有其唯一的地址(数组索引)。
  • 处理器(CPU)
    • 程序计数器(PC):大小一个字,任一时刻,PC中存的地址指向主存中的某条机器语言指令(不一定相邻)。
    • 寄存器文件:一些单字长的寄存器组成。
    • ALU:算术/逻辑单元,计算新的数据和地址值。

1.4.2运行hello程序

  • shell读取hello:键盘→I/O桥→总线→寄存→I/O桥→主存 回车后加载到主存,运行可执行文件hello。
  • 将所需的代码和数据从磁盘复制到主存(直接存储器存取技术(DMA)):磁盘→^磁盘控制器^I/O桥→主存
  • 显示:主存→总线接口→寄存器→总线接口→I/O桥→图形

1.5高速缓存至关重要

高速缓存存储器(cache memory),L1、L2,静态随机访问存储器(SRAM)技术。

1.6存储层次

f3c6c4010f6843409d8b123fa5cc9f11.png

1.7操作系统管理硬件

操作系统抽象表示 46a5d7d85d1140f7b3de83d5a2fdd870.png

1.7.1进程

CUP交错执行(多核并发)进程,称为上下文(进程所有状态信息)切换(系统内核(kernel)管理)、

1.7.2线程

一个进程可有多个线程

1.7.3虚拟内存

每个进程都独占主存的假象,虚拟地址空间,地址从小到大:程序代码和数据→堆→共享库→用户栈→内存虚拟内存

1.7.4文件

文件:字节序列,提供统一的视图

1.8 系统间网络通信

主存→网络适配器

1.9重要主题

1.9.1Amdahl定律

定义:我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要程度。 加速比: 截屏2023-11-20 21.59.57.png

点击展开 >S = $\frac{T~old~}{T~new~}$ = $\frac{T~old~}{(1-\alpha)T~old~ + (\alpha *T~old~)/k}$ = $\frac{1}{(1 - \alpha) + \alpha/k}$ >$\alpha$:即为重要程度(某部分占总体)(某部分执行所用时间占总执行时间) k:性能提升比例,如速度由100m/s提升到150m/s,则k = $\frac{150}{100} = 1.5$ <

1.9.2并发和并行

并发(concurrency):同时具有多个活动的系统 并行(parallelism) :用并发是系统运行的更快 截屏2023-11-20 22.00.00.png

点击展开 >1. 线程级并发 以往:单个进程不断切换 现在:多核**超线程(simultaneous multi-threading)** $\left \{\begin{matrix} 常规处理器:20 000个时钟周期切换 \\ 超:单个周期内选择线程执行,四核每核执行2线程的话,就四核八线程(i7) \end{matrix}\right.$
  1. 指令级并行 同时执行多条指令,每阶段执行指令的不同部分,阶段可以并行操作 超标量处理器(superscalar):比一周期一指令更快

  2. 单指令、多数据并行(SIMD并行) 允许一条指令产生多个可以并行执行的操作

1.9.3抽象的重要性

执行模型一致,不同处理器可以执行同样的机器码(性能会不同) 抽象出虚拟机:操作系统、处理器、程序

Compilation System:


评论