计算机如何在不同的进程之间切换(主要是OS的事情)?

How do computers switch between different processes (is it mainly an OS thing)?

早期的计算机,例如 ENIAC,必须手动更改程序内存(a.k.a。指令内存),以便将不同的程序更改为 运行。这将涉及更换存储指令的磁带或穿孔卡,因此每次要制作新程序时 运行,都必须更换磁带或穿孔卡。

早期计算机的这种局限性部分是由于与现代 HDD 相比磁带卷的信息密度较低,但也部分是由于每个想法(如果我错了请纠正我)一卷磁带应该只能存储一个程序。

相比之下,现代计算机可以在许多不同的程序之间切换,而无需物理替换 ROM。从一个活动 window 切换到另一个活动,或启动 运行 一个新程序,只需单击几下鼠标即可。我们现在有 HDD 和 SSD,而不是穿孔卡和磁带,因此我们可以简单地将所有我们想要 运行 的程序存储在一个 SDD 和几个一直连接到我们计算机的 HDD 上。我们永远不需要更换我们的记忆存储设备,直到它们损坏。

我希望以上内容足以激发以下问题:

有哪些典型的低级功能(w.r.t。硬件and/or软件)使现代计算机能够在存储在 ROM 中的不同进程或程序之间切换,而不是像以前的计算机那样简单地将 ROM 视为单个程序的容器?

HDD 和 SSD 不等同于 ROM。程序和进程之间存在区别。进程是正在执行的程序。多个程序存储在 HDD 和 SDD 中。当一个程序被加载到 RAM 中时,它就变成了一个进程。作为 OS 的一部分的加载程序可以做到这一点。 RAM中可以同时加载多个程序。上下文切换是一个 OS 函数。上下文切换不仅需要移动程序或指令,还需要移动数据。涉及许多低级功能。不可能一一列举。在排序上,是的,它主要是一个 OS 东西。