文件存储方式
二进制
文本方式
汇编语言为不同高级语言的不同编译器缇欧拱了通用的输出语言
优化程序性能
理解链接时出现的错误
避免安全漏洞
操作者将 hello 键入shell
shell程序读取键盘外设的键值进入寄存器,并放入主存
操作者键入回车
shell程序加载hello
(将hello目标文件中的代码和数据从磁盘复制到内存,数据包括"hello,world\n")
可通过DMA
可通过CPU
CPU开始执行hello程序中的main程序中的及其语言指令.
指令将"hello,world\n"中的每个字节复制到寄存器,然后复制到显式设备(然后显示在屏幕上)
// 做了 外设 和 寄存器间的拷贝2次
键值->寄存器
寄存器->显示设备
// 做了 硬盘 和 主存间的拷贝1次
硬盘->主存
// 做了 主存 和 寄存器讲的拷贝1次 // 其实代码有多少就拷贝了多少次
主存-> 寄存器
// 拷贝很多,导致等待(cpu等待)很多, 需要高速缓存的加持
// 具体等待时间 可以参考 https://blog.csdn.net/l471094842/article/details/105599876/
// cpu register < 1ns
// L1 cache 1ns
// L2 cache 3ns
// L3 cache 12ns
// main memory 65ns
// flash
// 外设
操作者将 hello 回车 键入shell(客户端shell)
--- 客户端shell将hello发送给服务器机器中的服务器程序
--- 服务器程序将 hello 发送给 服务器机器中的 shell程序
shell(服务器)程序将hello进入寄存器,并放入主存
shell(服务器)程序加载hello(在服务器中)
(将hello目标文件中的代码和数据从磁盘复制到内存,数据包括"hello,world\n")
可通过DMA
可通过CPU
CPU(服务器)开始执行hello程序中的main程序中的及其语言指令.
--- 指令将"hello,world\n"中的每个字节复制到寄存器,然后发送给客户端
--- 客户端shell 显示 "hello,world\n"
并发 是一个通用的概念,指一个同事具有多个活动的系统
并行 指的是用并发来使一个系统运行的更更快.
并行 可以在计算机系统的多个抽象层次上运用.
线程级并发
CMP
SMT
实例: GPU
指令级并行
流水线 : 接近一个时钟周期一条指令
超标量 : 达到比一个周期一条指令更快
多发乱序???
实例 : CPU
单指令,多数据并行
SIMD
实例: DSP ARMv6的SIMD及ARMv7v8的NEON
x86计算机系统示意图
每组总线都包括
地址总线
数据总线
控制总线
arm 有什么不一样吗?
其他架构的呢???
抽象
不同编程语言提供不同形式和等级的抽象
指令集架构提供了对实际处理器硬件的抽象
文件是对IO的抽象
虚拟存储器是对程序存储器的抽象
进程是对一个正在运行的程序的抽象
虚拟机提供对整个个计算机(包括操作系统,处理器和程序的)的抽象