![为什么Linux内核被称为“镜像”?](https://linux22.com/image/66592/%E4%B8%BA%E4%BB%80%E4%B9%88Linux%E5%86%85%E6%A0%B8%E8%A2%AB%E7%A7%B0%E4%B8%BA%E2%80%9C%E9%95%9C%E5%83%8F%E2%80%9D%EF%BC%9F.png)
我经常听到人们将 Linux 内核称为 Linux 内核映像,但我似乎无法在任何搜索引擎上找到关于为什么它被称为映像的答案。
当我想到一个图像我只能想到两件事,要么是磁盘的副本,要么是照片。它肯定不是照片图像,那么为什么它被称为图像呢?
答案1
Unix 引导过程仅具有有限的智能加载程序(重新定位、加载库等)的能力。因此,最初的程序是存储在光盘上的精确映像,其中包含需要加载到内存中并“调用”以使内核运行的内容。
直到很久以后才添加了诸如(解)压缩之类的内容,尽管现在已经有了更强大的引导加载程序,但映像名称仍然存在。
答案2
这个单词图像还有一个定义“包含生成实时工作副本所需的所有信息的文件”。
答案3
这并不意味着“映像”只是磁盘的 1:1 副本。正如照片代表现实一样确切地与拍摄时一样,可执行程序(或内核)的图像代表处于可以在系统内存中加载(或解包)的状态的程序确切地保持原样,然后对其进行控制。然后该程序可以从该状态开始以一致的方式运行。所以Linux内核镜像就是Linux内核在将控制权交给它之后能够自行运行的镜像(状态的图片)。
如今,引导加载程序从硬盘的文件系统加载这样的映像(需要驱动程序),用它替换自身,从而将控制权交给它。计算机的启动过程会多次执行此操作,直到操作系统最终运行。这就是所谓的链式装载。或者,如果一个较小的程序(链式)加载一个更复杂的程序,则称为引导。
BIOS 加载引导加载程序,该引导加载程序也是一个映像,例如boot.img
在grub
.那boot.img
不是一个文件(如果安装了 grub);它是主引导记录 (MBR) 中部分的名称。如果将其转储到文件中,那么它将是文件形式的图像,而不是原始写入磁盘,而是原始写入文件中。这也是grub
能够加载自身其余部分的最早状态的表示(图像) 。grub
然后有自己的机制如何通过加载其他图像来完全加载自身。这由不同的阶段在grub
。之后,引导加载程序通过用该文件提取的内容替换自身来加载内核映像。
答案4
在数学中,核是某个映射的图像子集的逆图像,该子集等于共域中的单位元素。我确信这些名称源自数学概念,因为它们在数学的各个领域中都有显着的相关性。考虑到 Unix 是在学术环境中衍生出来的,它对这些词的使用可能是内核和映像是相同的。
如果您有一个代表有关“完整”操作系统的某种级别信息的集合,如果该信息也形成一个组,那么您可以在该集合上定义组同态,或者基本上映射到具有与原始集合不同大小的其他集合,只要他们“尊重”原始集合的结构,使其成为一个群体。您可以看到,将集合映射到较小的集合或某个集合的子集(其中子集较小)可能对某人有利。
图像 - 群同态的图像以及一般的函数和映射,只是某个集合的子集,其元素实际上被映射到。该功能可能不会映射到每个元素,并且这些元素不会包含在图像中。
内核 - 基本上只是原始集合中映射到图像的元素,但仅映射到图像中的单位元素。基本上映射到 0 的元素就像图像中的东西一样。
如果图像的大小小于原始集合,那么我们可以看到多个项目必须映射到一个元素。例如,内核中可能有多个元素映射到图像,我们已经知道它们都必须映射到 0。
我们可以看到,如果我们选择原始集合是二进制或 1 和 0 的有限序列,并且余域(映射到的集合)也是二进制序列,那么我们可以构造这样的东西当且仅当,一个合适的群结构可以定义(这一点有点深入,与提出的问题无关)。
因此,我们完全确定操作系统的“内核”和“映像”是完全定义的并且具有数学意义。独立于该术语的其他用途。