@
catalysia 歧义生效的主要问题是指代不明,同时没法通过补充定义来消歧义。排除歧义的优先顺序不一定就是看歧义“大不大”,而首先要考虑添加消歧义后如何避免逻辑矛盾,否则意味着整个说法就是一团乱。
一股脑儿把包括提供硬盘空间在内的存储部件都叫 memory 可以不是歧义,因为至少是技术上正确的,memory 就是个系统能支持的顶层分类。全混沌抽象成 memory ,最多只是不够明确而不是歧义。虽说考虑到大多数典型实现的习惯,在物理器件上,强调持久性的 memory 一般会直接叫做 storage ,而名义叫做 memory 的实际自动退化为 internal memory ,但这种情况下仍然不算错,因为内存都是存储。
同理,内存不足都是存储不足,反过来未必。理由么,用 PL 的话来说,内存是存储的真(proper)子类型,在这个偏正结构的上下文中符合协变,因此形式地有:内存⫋存储→内存不足⫋存储不足。这个推理的依据是普遍的类型论公理,跟直觉相一致。
删除软件可能真是在释放内存,比如你软件存 RAM disk 上。当然,更多时候软件放在外存,所以直接说“释放内存”一般就是错的。这里麻烦的关节其实是基本会至少隔了个文件系统,所以用户见到的效果不同。如果要强调可用性,那么还不如直接叫“释放空间”,尽管“空间”其实比“存储”更抽象而笼统,但不同上下文体验容易一致。
cache 和 swap 自然都算 memory 。前者总是内存所以是存储;后者在系统可见的虚拟地址空间视图上属于主存,即便不保证不是内存(无聊点可以 RAM disk 上继续划 swap 出来)且系统自身看到可能不同,说成“存储”也是没歧义的。
直接把手机外存说成硬盘是错的,因为几乎就没手机真带硬盘。很早以前的 WM 设备能带动内含微硬盘的 CF 卡,基本也就只有这种非主流奇葩配置下才可能偶然正确。
顺便,现在市面上的手机也有带 SSD 的,但 SSD 不是硬盘。PC 上所谓的硬盘很多也是离谱的,真正的硬“盘”是 HDD 这样的带有机械盘片结构的磁盘(跟软盘相对),而 SSD 一类封装 IC 驱动器大部分存储部件通常就是闪存,恰恰不是硬盘,硬说“盘”(扁的,不要求圆的能转的,其实是 plate 而不是 disk 了)也就是闪存盘。iPod Classic 那种叫硬盘没问题,因为真是 HDD 。
把 SSD 算硬盘这个怕是真没救了。但这里至少也可以用更准确的说法代替来回避。
IC 实现的非易失存储可以都叫闪存,尽管这个提法在历史上不能涵盖 PROM 之类的形态。但现时闪存一般不被认为专有的商标,所以就像 PC 不需要专指 IBM PC 一样,可以按照构词追溯到语源之前,追认传统的 PROM 作为现在意义的闪存( flash 指可擦写),这也不会有什么问题。字面上反倒是 ROM 的“只读”尴尬多了,但就是这个都能靠加前缀救回来,扩展闪存的外延又算啥呢?
再者,现时几乎也就 NAND 和 NOR Flash ROM 两种,限制闪存的具体实现也是不明智的。不必要排除历史或未来的其它实现。
至于 CCD ,如果你说的是能作为传感器实现部分的那种,那么很明确不属于体系结构意义上的 memory ,尽管它能是物理实现意义上的。就像 SSD 主控里带的处理器甚至 CPU 微架构内部隐藏的协处理器(比如 Intel ME 跑 Minix 的 RISC CPU )也不应被视为整个系统意义上的控制器的一部分一样,这类部件都是体系结构意义下的可选实现细节。即便这类器件在物理上保持作为不同角色的能力,系统的拓扑结构限制了这些能力对系统外部(软件)可见,所以让角色重新回归也没什么意义——除非你讨论的系统能物理地把自己拆了动态重配置这些器件的角色——我是没见过。