你的问题的根源:计算机硬件和计算机软件之间缺乏明确的区别。
计算机系统的组成部分
为了让我们清楚地了解它们并了解它们的本质,让我声明如下:
-
硬件:它包括CPU、RAM、磁盘、寄存器、显卡、网卡、内存总线以及所有你可以触摸并称为“计算机”的东西。它是身体。
-
软件:它包括操作系统、程序、CPU指令、编译器、编程语言以及几乎所有关于计算机的无形的东西。这是灵魂。
-
固件:这些基本代码对于硬件的工作来说是绝对必要的。它存储在硬件本身安装的只读存储器中。该软件对于硬件至关重要,因此被认为处于硬件和软件中间,因此被称为固件。
我们将从当我们说计算机已启动并运行并正确执行我们的指令时开始理解。但那个时候你会说——我是怎么到达这里的?所以我就提一下关于电脑启动的几点。
当按下电源按钮时...
……最原始、最基本输入输出系统(因此称为BIOS),硬写在计算机硬件上开始执行。这是写在只读存储器上的,这会启动让机器独立运行的过程。它将软件(操作系统)从一个硬件(磁盘)加载到另一块硬件(RAM 和 CPU 寄存器)中,使软件能够与硬件正常工作。
现在身体和灵魂在一起了,个体(机器)可以工作了。
到目前为止,操作系统已经在 RAM 和 CPU 中。 (读When the power button is pressed
如果您对此表示怀疑。)现在让我们逐段处理您的问题 -
第一段
我在理解应用程序和数据如何
加载应用程序后,CPU 从 RAM 访问
写入 RAM 并打开一个文件(因此文件的数据也存储在
内存)。
解释如下:
- 这里的确切问题是您认为是 CPU 和 RAM 访问数据。 CPU和RAM只是执行单元。
- 操作系统(软件)通过CPU和RAM(硬件)来访问数据。它位于执行应用程序的操作系统领域。
- 这就是为什么您可以在同一硬件上安装 Linux 和 Windows,但无法在 Linux 中执行 .exe 文件,因为操作系统执行而不是 RAM/CPU。
- 此外,CPU、RAM 和磁盘如何物理交互以引入数据、执行数据、保存数据等属于硬件领域。这需要解释,其中涉及逻辑门(AND、OR、NOT...)、二极管、电路以及电子人员可以解释的许多其他东西。
第二段
根据我的理解,CPU 只是从 RAM 获取指令
程序计数器在中断后计时或执行任务。如何
然后它访问应用程序和数据。难道不是吗
并且仍然只是获取指令(例如加载文件
硬盘驱动器在应用程序中打开)并处理任何
应用程序发出的请求存储在 RAM 中
随后的说明(如保存文件)。
正如您所猜测的 - CPU 不获取指令,操作系统通过 CPU 获取指令。还,就像大脑不直接指示手和腿移动而是使用神经进行交互一样,CPU 也不告诉磁盘提供/获取数据。 CPU 仅与 RAM 和寄存器一起工作。多个硬件单元协同工作,为数据和指令的传输提供路径。涉及的重要硬件包括:
- 处理器(CPU和CPU内置的寄存器)
- Cache
- 内存(RAM)
- Disk
- Tape
我喜欢中提供的图像这个答案。该图不仅列出了硬件部件,还说明了这些部件在执行速度上的巨大差异。
让我们继续...
第三段
同样,读完一篇文章后,它说
操作系统存储在RAM中。然后CPU就可以访问
操作系统。 (我以为CPU只是按照指令工作
来自内存)。它如何与操作系统进行通信?
中断如何从 RAM 中操作系统的副本发送到 CPU,或者
来自硬盘驱动器中的操作系统。
现在您已经知道操作系统确实存在于 RAM 和 CPU 寄存器中。那就是它居住的地方。这是它告诉 CPU 如何工作的地方。如果操作系统足够小(或者如果寄存器和高速缓存足够大),操作系统就会离 CPU 更近。
- CPU 不与操作系统通信。不可以。受老板控制的是工人。操作系统就是那个老板。
-
中央处理器不能access操作系统。CPU是身体,OS是灵魂。灵魂告诉身体该做什么,而不是相反。
- CPU 不支持 RAM 中的指令。它仅执行操作系统(可能位于 RAM 中)给出的指令。因此,即使有一条指令将操作系统的某些模块加载到 RAM 中,发出该指令的也不是 RAM/CPU,而是操作系统本身。
-
中断有两种类型 - 硬件和软件 - 您的查询与软件中断有关。由于操作系统的执行部分位于 RAM 中,简单来说,我们可以说中断是从 RAM 中的操作系统发送到 CPU 的。
结论
硬件和软件之间缺乏区别是您感到困惑的根本原因。参加一些有关操作系统的课程Coursera or 学术地球为了更深入的理解。