I 计算机系统漫游

以下内容参考自data whale 组队学习

编译系统

1 怎么工作?

以C语言为例,你看到的以及背后的:

你看到的
背后的

其中,汇编部分指的是将汇编程序翻译成机器指令,并按照固定的规则打包成二进制文件(还不可执行)

2 了解它有什么作用?

底层、复杂,那我们为什么还需要了解它:知其所以然

1. 优化程序性能

2. 理解链接过程出现的错误

3. 避免安全漏洞

系统硬件组成

硬件架构图

程序执行流程

输入,命令解释程序(如shell)读入寄存器、内存-->数据代码复制到内存--> 代码执行,输出

涉及:磁盘、内存、处理器、IO设备,由此引出下一个问题:存储设备的利用、缓存

对于处理器而言,从磁盘上读取一个字所花费的时间开销比从内存中读取的开销大 1000 万倍。寄存器文件的只能存储几百个字节的信息,而内存的可以存放几十亿的 字节信息(GB 级),从寄存器文件读取数据比从内存读取差不多要快 100 倍。

所以:系统设计人员在寄存器文件和内存之间引入了高速缓存。

操作系统

应用程序和硬件之间的中 间层,所有的应用程序对硬件的操作必须通过操作系统来完成。

操作系统的作用

其中,我们常听的概念:

* 进程是对处理器、内存以及 IO 设备的抽象。(多个线程组成,每个线程都运行在进程的上下 文中,共享代码和数据)

* 虚拟内存是对内存和磁盘 IO 的抽象(程序代码数据-> 堆-> 共享库-> 用户栈-> 不可见区);

* 文件是对 IO 设备的抽象(Linux 系统的哲学思想是:一切皆为文件。);

并发和并行

1 线程级并发:当一个线程因为读取数据而进入等待状态时,CPU 可以去执行另外一个线程,其中线程之间的切换只需要极少的时间代价.

2 指令级并行:现代处理器可以同时执行多条指令的属性

3 单指令多数据并行:现代处理器拥有特殊的硬件部件,允许一条指令产生多个并行的操作

附录

系统加速几个定律

阿姆达尔定律 (Amdahl’s Law, 1967)

记 α ∈ [0, 1] 是某任务无法并行处理部分所占的比例. 假设该任务的工作量固定,则1对任意 n 个处理器,相比于 1 个处理器,能够取得的加速比满足:S(n) < α .

古斯塔法森定律 (Gustafson’s Law, 1988)

记 α ∈ [0, 1] 是某任务无法并行处理部分所占的比例. 假设该任务的工作量可以随着处理器个数缩放,从而保持处理时间固定. 则对任意 n 个处理器,相比于 1 个处理器,能够取得的加速比 S (n) 不存在上界.

孙-倪定律 (Sun-Ni’s Law, 1990)

记 α 是某任务无法并行处理部分所占的比例. 假设该任务的可并行部分随着处理器个数 n 按照因子 G(n) 缩放,则对任意 n,相比于 1 个处理器,能够取得的加速比 S∗(n) 满足S∗(n) = ( α + (1 − α)G(n) ) / ( α + (1 − α)G(n)/n )

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容