函数与闭包的前世今生(三)

函数与闭包的前世今生(三)
0

本系列的其他文章:
函数与闭包的前世今生(一)
函数与闭包的前世今生(二)
函数与闭包的前世今生(四)

2.2、计算机的发展

在上一篇《函数与闭包的前世今生(二)》中,我说过最早的计算机输入输出用的都是纸带。后来随着电磁元件技术的进步,纸带变成了容量更大的磁带,磁带又变成了磁盘。

磁盘不仅比磁带更轻便更易保存,而且读写速度可以比磁带快很多。例如同样存储 1000 个数,读完第 1 个数想读第 1000 个数,读磁带需要磁带移动很久,但读磁盘则只需要磁盘旋转一点加上读写头移动一点就好了。

磁盘又可分为容量较小、较易损坏的软磁盘和容量较大、不易损坏的硬磁盘(硬盘,英文 Hard Drive)。而到了今天我们还有速度更快的固态硬盘(英文 Solid State Drive,缩写 SSD)。

使用磁带的计算机:

软磁盘与读取软磁盘的软驱:
image

2.2.1、CPU 与 IO 设备的分离

为了更好的组件分工和更快的处理速度,首先,图灵机模型中的数据处理和内部状态存储部分与读写头部分分离开,数据处理和内部状态存储部分放在中央处理器(英文 Central Processing Unit,缩写 CPU)芯片中,而原本读写头的功能由 IO 芯片和硬盘承担。

image

有了 IO 芯片之后,输入输出设备也不仅限于硬盘了,输入设备还可以是键盘、鼠标、触摸板等等,输出设备还可以是屏幕、打印机等等。

2.2.2、内存

随着集成电路技术的发展,CPU 频率的逐渐地比硬盘快了成千上万倍,于是人们在 IO 芯片和 CPU 之间加了一层速度比硬盘快、但容量比硬盘小、而且只有通电的时候能存储的内存(学术名为随机访问存储器,英文 Random Access Memory,缩写 RAM)。

image

内存只有通电的时候能存储,断电之后存储的数据会马上丢失,这个特点被称为易失性(volatile)。而硬盘、软盘、U 盘等断电后还能存储数据的存储器则可被称为非易失性存储器。

现在的电子计算机(包括服务器、个人电脑以及智能手机)中,CPU 大多数情况下都是从内存中读取代码执行,从内存中读写数据,少部分时间才会从 IO 芯片读写数据。或许因为这个原因,内存才被称为存。而硬盘、软盘等其他存储设备则可以说是存(虽然硬盘现在也安装在电脑机壳里、智能手机里的非易失性存储芯片安装在手机里)。

为了提升 IO 速度,一些 IO 芯片也可以直接读写内存。

有了内存之后,读写数据不再需要移动纸带、磁带或者磁盘的读写头,而只需要一个某个内存存储单元的编号(内存地址)即可。

CPU 执行指令也不再是移动程序代码纸带,而是在每个 CPU 核心内有一个专门记录当前执行的指令的内存地址的寄存器(称为当前指令地址寄存器或者指令指针寄存器),CPU 会拿这个寄存器里的地址去内存中找接下来要执行的指令。

1赞

要讲清楚函数与闭包的底层实现,就要先讲清楚计算机核心的组成原理。但是计算机核心的组成原理要讲清楚不容易,我这篇文章希望能概述一下。读者们如果有什么问题,欢迎指出。