[Feelings & Sharing] 【小知识】什么是内存?什么是外存?
Tofloor
poster avatar
enforcee
deepin
2023-07-18 07:55
Author

内存储器和外存储器都属于存储器。存储器是计算机系统中记录数据的结构。这两个结构有多种名称:内存储器(内存,internal memory)又称主存储器(主存,main memory)、初级存储器(primary storage)。相对应的是,外存储器(外存,external memory)又称辅助存储器(辅存,auxiliary memory)、次级存储器(secondary storage)。

内存的「内」在于,他是直接供CPU使用的存储器,是计算机系统必需的一部分;而外存的访问需要通过输入/输出操作,也就是说,外存和鼠标、键盘、网卡等是相同等级的,对于计算机来说是外部设备(不管他们是插在机箱里还是连在机箱外,这都是人类观察的位置,对于计算机来说他们的「位置」是一样的)。

我们常见的硬件形体中属于内存的就是我们常说的内存条(RAM,后面还会讨论),属于外存的包括硬盘驱动器、固态(硬)盘、U盘、存储卡、光盘驱动器、软盘驱动器、磁带驱动器等。

其实除了内存、外存之外,还有其他形式的存储器:三级存储器(tertiary storage)或称近线存储器(nearline storage),他不像外存一样随时等候操作,而是必须先连接才能进行操作的存储器(能较快地在on-line和off-line之间转换,所以叫nearline)。这种存储器包括磁带库(tape library,用机械臂操作的大量磁带)、光盘库(optical jukebox,机械臂操作的大量光盘)、大规模闲置硬盘存储器(MILD,Massive Arrays of Idle Disks)等。网络存储器(NAS,network-attached storage)、云存储器(cloud storage)也算在内。

再之外还有离线存储器(off-line storage),和三级存储器的区别是三级存储器是自动控制的(用电脑或者机器人),而离线存储器是人工操作的,而且他主要的目的是存档,而很少用来读取。由于不能被电脑直接控制,所以更加安全。通常用于灾难恢复,或者数据传输(有一个趣闻,世界上带宽最高的数据传输是装满硬盘/磁带的货车)。他不像我们通常意义上的存储器「设备」,更多是一种概念。

可以用「memory」和「storage」这两个词区别内存和外存吗?

这是一个比较常见的错误,因为内存最常用的名字是main memory,而存储通常用storage,所以有人认为memory就专门用作内存,storage是专门用外存,并且希望专门用「存储」来称呼外存。实际上这两个词本身就没有什么区别的,从上面的介绍中大家也能知道,无论是英文还是中文,内存和外存都只有定语的区别,而选用memory还是storage除了常见搭配,可能心情的影响更大。

「内存卡」是内存吗?

这是个翻译错误,他应该叫「存储卡(memory card)」。自然是外存。

可以用「RAM」和「ROM」称呼内存和外存吗?

首先,虽然这两个缩写很像,但完全不是一回事。RAM是random-access memory(随机访问存储器),所谓随机访问我更喜欢叫随意访问(虽然随的还是计算机的意)。随机访问相对的词是顺序访问(sequential access),比如说磁带就是顺序访问,读取和写入时必须按照一个方向连续访问,不能在访问的同时跳跃到另一个位置(需要长时间倒带才能重新开始访问)。而硬盘是随机访问,他可以按照需要随时跳转到任意一个前面或者后面的磁道进行读取或者写入。

慢着,不是说RAM是内存吗?听这意思怎么好像硬盘也可以算是RAM呢?

其实这么说没错,硬盘确实是随机访问,也确实是存储器。只是我们已经习惯了称呼作为内存的形体为RAM,所以其他的存储器自然就避讳了这个名字。其实我们用的俗称「内存条」更适合作为这个东西的本名,不仅清晰地说明了他的作用,也把「内存条」的物体和「内存」的概念区别开来。快把这个名词推广给老外吧。

第二个词ROM其实是只读存储器read-only memory的缩写。顾名思义,这种存储器只能用于读取,不能(或者不能使用通常的方法)改写。为什么有人会用ROM来称呼外存呢?我猜测是以前的一些游戏机或者手机的数据采用ROM存放(卡带、光盘、主板集成的ROM),所以从中提取出的游戏程序映像、手机系统映像(ROM image)也被称为ROM,所以之后把手机系统也叫ROM,所以再之后把手机外存的整个存储空间也叫ROM?而用ROM称呼外存的这种说法也并没有被广泛接受,也是不规范的。另外ROM和RAM类似,也可以作为广义和狭义两种解释,广义的ROM自然是任何只读存储器(比如说最常见的那种光盘),而狭义的ROM就是指类似游戏机卡带那种芯片式的只读存储器。

「缓存」是什么存?

缓存(cache)是用于平衡两种速度不同的设备,提升性能的组件。缓存从速度慢的设备中预先加载数据,然后当速度快的设备希望从速度慢的设备中读取数据时,如果发现缓存中已经加载好了,就可以直接从缓存中读取,来减少等待的时间。缓存中的数据都是从速度慢的设备里「摘抄」出来的,因此缓存并不是存储器,也不能算作独立的设备,可以把他当作设备的整体中的一个组件。缓存在任何需要平衡速度差异的场合都可以存在。比如说CPU的缓存设置在CPU和内存之间,硬盘的缓存设置在内存和硬盘之间。而缓存的概念也被用在软件上,比如浏览器的缓存把从网络读取的资源存储到硬盘上,需要网络资源时可以直接从硬盘上读取。缓存不应该影响数据的可用与否,也不应该改变数据的内容,只是用来提高访问的速度。(所以说软件的缓存和临时文件temporary file还是有差异的,虽然很多时候这些概念被模糊了。)

我想说「运行内存」来指「内存」可以吗?

听起来像「咄咄逼人怪事」。

我想说「存储内存」来指「外存」可以吗?

听起来像「稽之谈之无稽之谈」。

我想说「程序内存」和「数据内存」,怎么样?

虽然我知道大家很想给我们的内存和外存起些新名字,但是这个名字确实碰瓷到地方了。在哈佛结构(一种不同于冯诺依曼的计算机结构)中,有两个存储器结构,分别存储指令和数据,称为程序存储器(指令存储器,instruction memory),和数据存储器(data memory)。不过这两个存储器也都是CPU直接读取的,没有输入/输出操作,因此他们都是内存。(只是冯诺依曼结构中的存储器(内存)既存储指令又存储数据。)现在虽然我们用的计算机大多是冯诺依曼结构的,但是一些DSP或者微型控制器也有可能采用哈佛结构。

安卓手机的内部存储空间(internal storage)是内存吗?

是外存。毫无疑问,这是一个错误称呼(无论是英文还是中文),他想表示的是「手机原装的存储空间(外存)」,其实有很多种方式让他表示得很清晰,可惜他选了最让人误解的哪种。

如果让我给他起名字,我可能会叫集成(intergrated)存储空间、板载(on-board)存储空间、附带(attached)存储空间、基础(base)存储空间,反正我不会选一个有歧义的称呼。

我们大家都这么叫,就你多嘴!

名字都是约定俗称的。过去的一些认识的偏差,可能造成了错误的名字流传下来,但是这不会影响实用。将错就错,在任何学科都不少见。我们需要严谨的是认识,而不是名字,但是,名字却能给人最先入为主的印象。对于熟悉这些概念的老手来说,文字上的一点偏差何足挂齿;但是对于正在学习的新人来说,一点名称的误导和混淆就可能让他再也找不到方向。前人是「透过现象看本质」,今天既然有了巨人的肩膀,我们希望从本质学起。

勘误、补充等,欢迎在楼下回帖。

Reply Favorite View the author
All Replies
阿尼樱奈奈
Moderator
2023-07-18 07:56
#1

like

Reply View the author
电脑杀手世鹏
deepin
2023-07-18 13:40
#2
It has been deleted!
明天会更好
deepin
2023-07-18 15:04
#3

真传一句话,内存就是桌子面,外存就是书柜。

Reply View the author
青稚°
Moderator
2023-07-18 15:34
#4

你是科普版主like

Reply View the author
babyfengfjx
Super Moderator
CQA
2023-07-18 17:14
#5

就喜欢内容分享~

Reply View the author
foxbcd
deepin
2023-07-18 17:28
#6

tail

Reply View the author