hello.c算法
#include <stdio.h> int main() { printf("hello,world\n"); return 0; }
文件若是只含有ascii字符,那么就是文本文件,若是包含其余字符,就是二进制文件shell
hello.c通过四个步骤,生成hello可执行文件缓存
首先,当输入"./hello"时,shell读取输入字符到寄存器,而后放入主内存安全
接着,当输入回车时,shell查找硬盘上的hello文件,加载进主内存网络
最后,cpu读取hello程序中main函数的机器指令并执行。示例指令中,会从主存拷贝"hello,world\n"字符串的字节到寄存器文件,再从寄存器文件拷贝到显示设备,最终显示在屏幕并发
hello程序执行步骤存在大量从内存到寄存器之间的拷贝操做。相比较寄存器,在内存操做数据会慢不少,大量拷贝操做存在于两端时,会致使内存端成为瓶颈。为了打破瓶颈提升性能,系统设计者提出了高速缓存的概念。它位于寄存器和主存之间。当缓存大量命中时,可减小cpu对主存数据的依赖。函数
考虑两个高速缓存的状况:寄存器-L1-L2-主存性能
L1和L2经过静态随机访问存储器(SRAM)硬件技术实现,L1位于处理器芯片,访问速度媲美寄存器,L2经过特殊总线链接处理器,速度为L1的5倍,主存在最后,访问速度为L2的5-10倍优化
网络也是一个IO设备。系统将数据从主存拷贝到网络适配器,通过网络,目的机器的系统读取网络适配器上的数据,拷贝到主存。这样就完成了数据在网络间的传输操作系统
现代计算机发展的两个目标:计算机作的更多,计算机运行更快。前者也就是并发,后者也就是并行,这两个关键字在现代计算机的体现以下
图示为四核处理器,每一个核都有本身的寄存器、L1高速缓存(分为数据、指令)、L2高速缓存,四个核在一个芯片上,共享一个L3高速缓存,全部处理器芯片共享一个主存
源程序以ascii文本形式存储,被编译器和连接器翻译成可执行的二进制文件。
处理器读取并处理二进制程序中的指令和数据时,会花费大量时间在寄存器、主存、IO设备之间拷贝数据。为了加速该过程,系统引入高速缓存,将系统分为cpu寄存器-高速缓存-主存-硬盘的多层结构。
操做系统内核做为应用程序和硬件之间的媒介,提供了一层抽象。
虚拟机又提供了基于操做系统、处理器、主存、IO设备的抽象
网络做为一种特殊的IO设备,提供了计算机系统之间通讯的能力