要研究怎么造计算机,硬件方面要理解计算机组成原理和计算机体系结构,软件方面要理解操作系统和编译原理。
一、计算机系统漫游
了解程序和硬件之间的交互关系
1.1信息就是位+上下文
计算机内部的信息被表示为一组组的位,它们依据上下文有不同的解释方式。
源程序实际上就是一个由值0和1组成的位(又称为比特)序列,8个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符。
1.2程序被其他程序翻译成不同的格式
程序被其他程序翻译成不同的形式,开始时是ASCII 文本,然后被编译器和链接器翻译成二进制可执行文件。
GNU项目,给Linux内核提供了环境
1.3了解编译系统如何工作是大有益处的
优化程序性能
理解链接时出现的错误
避免安全漏洞
1.4处理器读并解释储存在内存中的指令
shell是一个命令行解释器
系统的硬件组成
1.5高速缓存至关重要
针对这种处理器与主存之间的差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory,简称为cache或高速缓存),作为暂时的集结区域
1.6存储设备形成层次结构
处理器读取并解释存放在主存里的二进制指令。因为计算机花费了大量的时间在内存、I/O设备和CPU寄存器之间复制数据,所以将系统中的存储设备划分成层次结构—CPU寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM主存和磁盘存储器。
在层次模型中,位于更高层的存储设备比低层的存储设备要更快,单位比特造价也更高。层次结构中较高层次的存储设备可以作为较低层次设备的高速缓存。通过理解和运用这种存储层次结构的知识,程序员可以优化C程序的性能。
1.7操作系统管理硬件
操作系统内核是应用程序和硬件之间的媒介。
操作系统有两个基本功能:
(1)防止硬件被失控的应用程序滥用;
(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。
os通过几个抽象概念来实现这两个功能
抽象
进程:操作系统对一个正在运行的程序的一种抽象。
多核处理器上下文(操作系统保持跟踪进程运行所需的所有状态信息)切换
shell通过调用一个专门的函数,即系统调用,来执行我们的请求,系统调用会将控制权传递给操作系统。
从一个进程到另一个进程的转换是由操作系统内核(kernel)管理的。内核是操作系统代码常驻主存的部分。
线程: 比进程更易共享数据
虚拟内存: 虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的内存都是一致的,称为虚拟地址空间。
文件: 字节序列
1.8系统之间利用网络通信
网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种1/O设备。
1.9 重要主题
Amdahl定律:
要想显著加速整个系统,必须提升全系统中相当大的部分的速度。
线程级并发 多核,超线程
指令级并行 流水线:将执行一条指令所需要的活动划分成不同的步骤﹐
单指令、多数据,即 SIMD并行,为提高处理影像、声音和视频数据应用的执行速度
未完。。。😊