Operating system CPU如何从RAM访问应用程序和数据

Operating system CPU如何从RAM访问应用程序和数据,operating-system,cpu,interrupt,ram,instructions,Operating System,Cpu,Interrupt,Ram,Instructions,在应用程序加载到RAM中并打开文件(因此文件的数据也存储在RAM中)之后,我在理解CPU如何从RAM访问应用程序和数据方面遇到了一些困难 据我所知,CPU只是在程序计数器发出滴答声或在中断后执行任务时从RAM获取指令。然后它如何访问应用程序和数据。它是否没有,并且仍然只是获取指令(例如,在硬盘上加载一个文件以在应用程序中打开),并处理应用程序发出的任何请求,这些请求随后作为指令存储在RAM中(如保存文件)。或者,与打开的文件相关的应用程序和数据(例如)只是停留在RAM中,根本不被CPU访问 类似

在应用程序加载到RAM中并打开文件(因此文件的数据也存储在RAM中)之后,我在理解CPU如何从RAM访问应用程序和数据方面遇到了一些困难

据我所知,CPU只是在程序计数器发出滴答声或在中断后执行任务时从RAM获取指令。然后它如何访问应用程序和数据。它是否没有,并且仍然只是获取指令(例如,在硬盘上加载一个文件以在应用程序中打开),并处理应用程序发出的任何请求,这些请求随后作为指令存储在RAM中(如保存文件)。或者,与打开的文件相关的应用程序和数据(例如)只是停留在RAM中,根本不被CPU访问

类似地,在阅读一篇文章后,它说操作系统的副本存储在RAM中。然后CPU可以访问操作系统。(我以为CPU只是使用RAM中的指令工作)。然后,它如何与操作系统通信,中断如何从RAM中的操作系统副本或硬盘驱动器中的操作系统发送到CPU


很抱歉,如果这真的让人困惑,很多我都不明白。

CPU
,正如您所注意到的,它从RAM中逐条读取程序。当执行一条指令时,它可能会引用存储在内存中的数据,它可以使用单独的指令显式地将数据提取到寄存器(CPU的内部存储器,非常小-在x86_64上,它类似于几个64位寄存器+其他东西,如段寄存器、IP、SP等),也可以从内存读取数据(我们谈论的是少量数据)。这就是它真正的用途

从磁盘加载文件将通过要求相应的控制器将数据提取到内存中的特定位置来完成。
CPU
连接到总线,总线将向相应的控制器传送指令


至于中断,这些都是特殊的事情-
CPU
有几个中断线,可以被各种设备激活,例如网卡。当它接收到这样的中断时,通常由中断处理程序来处理,中断处理程序只是位于内存中一个众所周知的位置的一个程序。它们可以由注册,以供检查操作系统。每个中断行都有自己的中断处理程序。当中断发生时,CPU保存它正在执行的程序的当前状态,处理中断,恢复状态并恢复程序。

CPU
,正如您所注意到的,从RAM中逐条指令读取程序在执行操作时,它可能引用存储在内存中的数据,它可以使用单独的指令显式地将这些数据提取到寄存器(CPU的内部存储器,非常小-在x86_64上,它类似于几个64位寄存器+其他东西,如段寄存器、IP、SP等),也可以从内存读取数据(我们谈论的是少量数据)。这就是它真正的用途

从磁盘加载文件将通过要求相应的控制器将数据提取到内存中的特定位置来完成。
CPU
连接到总线,总线将向相应的控制器传送指令


至于中断,这些都是特殊的事情-
CPU
有几个中断线,可以被各种设备激活,例如网卡。当它接收到这样的中断时,通常由中断处理程序来处理,中断处理程序只是位于内存中一个众所周知的位置的一个程序。它们可以由注册,以供检查操作系统。每个中断行都有自己的中断处理程序。当中断发生时,CPU保存它正在执行的程序的当前状态,处理中断,恢复状态并恢复程序。

这确实令人困惑。让我试着解释一下

CPU和RAM

CPU通过“主板”硬连线到RAM,它们一起工作。CPU可以执行许多指令,但必须通过RAM中的指令来告诉它该做什么。CPU基本上处于一个循环中:它所做的一切都是从RAM中获取下一条指令并反复执行

那么这个RAM是如何充满指令的呢

BIOS(基本输入/输出系统)

当计算机第一次启动时,RAM的一部分充满了来自主板芯片(BIOS芯片)的数据,CPU打开并开始处理。这些是出厂设置

从BIOS芯片复制到RAM的数据由访问硬件设备(硬盘、CD/ROM、USB存储器、网卡等)的指令库组成, 以及一个使用该库的程序,将引导设备上的第一个扇区,即所谓的引导扇区,加载到RAM中,并将控制权转移到RAM中(使用跳转指令)

引导加载程序

BIOS程序从引导设备加载的引导扇区数据非常小(只有440字节),但在BIOS库的帮助下,这足以加载更多扇区并执行这些扇区。引导扇区及其加载的数据称为引导加载程序,负责加载操作系统

实际上,引导加载程序是BIOS的一个更动态的版本:BIOS程序驻留在闪存中,而引导加载程序驻留在硬盘、USB记忆棒、SSD驱动器等上,因此可以更大、更复杂

操作系统

反过来,操作系统(OS)只是引导加载程序的更高级版本,因为它可以同时从多个位置加载和运行多个程序

--

BIOS了解驱动器。 引导加载程序了解驱动器和分区。 操作系统了解驱动器、分区和文件系统。

这让人困惑