《程序是怎样跑起来的》第四章的内容主要讲的是熟悉使用有棱有角的内存。
读了第四章内容,我学到了内存的物理机制是什么,内存的逻辑模型,数组等知识。内存实际上是一种名为内存IC的电子元件。虽然内存IC包括DRAM、SRAM、ROM”等多种形式,但从外部来看,其基本机制都是一样的。内存IC中有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚,通过为其指定地址,来进行数据的读写。内存IC内部有大量可以存储8位数据的地方,通过地址指定这些场所,之后即可进行数据的读写。
指针也是一种变量,它所表示的不是数据的值,而是存储着数据的内存的地址。通过使用指针,就可以对任意指定地址的数据进行读写。虽然前面所提到的假想内存IC中仅有10位地址信号,但大家在Windows计算机上使用的程序通常都是32位(4字节)的内存地址。这种情况下,指针变量的长度也是32位。
此外,还有二叉查找树是数据搜索更有效。 二叉查找树“是指在链表的基础上往数组中追加元素时,考虑到数据的大小关系,将其分成左右两个方向的表现形式。例如,假设我们事先把50这个值保存到了数组中。那么,如果接下来的值比先前保存的数值大的话,就要将其放到右边,反之如果小的话就放在左边。但实际的内存并不会分成两个方向,这是在程序逻辑上实现的。编译器的优化技术,这是我之前很少接触的领域。了解到编译器如何在保证程序正确性的前提下,对代码进行重排、删除冗余操作、常量折叠等优化,让我对编译器的智能程度感到惊讶。这些优化技术不仅提高了程序的运行效率,也减少了程序的内存占用,是现代高效编程不可或缺的一环。
总之,在读了这一章节,我对于计算机的底层工作原理有了更深的理解,也激发了我继续学习的信心。