Starts
断断续续总算把csapp的第一章看完了,算是非常基础的介绍部分,介绍了很多计算机硬件的知识和常识,以及后面章节会涉及到的一些学习的内容。
编译系统
说实话,了解原理还算比较有趣的,从helloworld程序讲起。从源文件到编译成可执行目标文件需要经过四个阶段,分别由预处理器,编译器,汇编器,链接器,他们构成了编译系统。而我们需要去了解编译系统是如何工作的,这样才能够实现优化程序性能,理解链接时出现的错误,避免安全漏洞。里面会用到汇编,链接和算法的知识,在我们写程序时常常会有运行复杂和安全性的区别,了解编译系统是至关重要的。
处理器读取解释指令
当编译结束后系统硬件需要工作来执行可执行文件。硬件组成由总线,I/O设备,主存,处理器。而执行在硬件里数据需要加载到主存,处理器执行机器语言指令,通过总线达到寄存器再存放到内存中。而运行中需要速度,所以引入了高速缓存的概念,采用高速缓存存储器L1L2L3多级访问可以实现程序性能的显著提高,存储器层次结构呈金字塔型,高速缓存和寄存器大大提高了存储的效率。
操作系统(抽象)
操作系统管理硬件,防止硬件被失控的程序滥用,向应用程序提供简单已知的机制来控制复杂而又通常大不相同的低级硬件设备。
其中抽象概念十分重要,通过抽象概念来实现操作系统的功能,也是我们经常会听到的进程,虚拟内存和文件,实际上,文件是对I/O设备的抽象表示,虚拟内存是对主存和I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示。
在单处理器中实际上是在不断切换执行的进程。操作系统跟踪程序运行信息,而进程转换是由操作系统内核管理,例如读写程序需要执行sys call系统调用,给予内核控制权,结束后返回控制权,而实现进程需要硬件和软件的共同合作。
实际上进程中有并发和并行的概念,而线程级并发和指令级并行,超线程和多核处理器的出现也是提高系统性能的一大部分。线程即为控制流,多线程是现代提高程序运行程序的方式之一。虚拟内存是一种每个进程都在独占使用主存,被称为虚拟地址空间,其中有只读的代码和数据,堆,栈,共享库,内核虚拟内存等等,地址从低到高增大。文件即为字节序列,作为读写的源。
other
后面还多花了一些篇幅谈了并发和并行,以及抽象的重要性,和Amdahl定律(即加速比,想要提高整个系统的速度,需要提高全系统中相当大的部分的速度)。
END
系统漫游简略带我领略了一下计算机世界和我们可以在哪里来实现对程序等等计算机中的部件的运行的优化,更好的实现一个程序以及很多的更好的实现。或许不断完善和探究原理不仅是对一个系统,一个程序,一个计算机的要求,也应该是对自己的要求吧。
Waste It On Me.
Author: John Doe
Link: http://example.com/2021/12/18/postcsapp-pra1/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.