memory - 操作系统在硬盘的什么位置
问题描述
当我们将操作系统安装到硬盘中时,它在硬盘中的位置。它是预先确定的某个位置,还是操作系统位于任意位置。引导扇区如何找到操作系统并将其加载到 RAM 中,以便正常开始执行。
解决方案
引导扇区如何找到操作系统并将其加载到 RAM 中,以便正常开始执行。
当处理器启动时,它开始在 BIOS 中的给定位置执行代码。此代码包含安全检查(开机自检),然后它在内存中的某个位置读取到例程以了解它将从哪个设备启动,并从该“磁盘”读取第一个扇区(512 字节)。
这个扇区被称为“主引导记录”,它包含一些代码(在 PC 上约为 440 字节)和磁盘分区的描述。实际代码取决于底层操作系统。在windows上,主要描述了可以在哪个“活动分区”上找到系统。在 linux 上,有一个更复杂的代码由引导加载程序作为 grub 执行,以引导不同的系统,但它以获取系统所在分区的编号结束。这通常被称为引导过程的“第一阶段”。
然后,一旦识别出系统分区,就读取该分区(“第二阶段”)的引导扇区(前 512 个字节)。此引导加载程序的代码包含一个简化的操作系统,该操作系统具有读取与操作系统文件系统相关的磁盘内容的方法。这样,它可以从磁盘读取文件。通常,有一个配置文件(grub.conf 用于 grub 或 Windows 中的 boot.ini)给出了要加载的系统的指令和文件名。
因此,引导加载程序读取配置文件,找到包含操作系统的文件,从磁盘读取它并将其加载到内存中。然后处理器可以开始执行系统。
当我们将操作系统安装到硬盘中时,它在硬盘中的位置。它是预先确定的某个位置,还是操作系统位于任意位置。
如您所见,系统位于磁盘上或多或少的任意位置,但在固定位置(磁盘及其分区的引导扇区)有用于读取磁盘和访问系统的程序。您可以在例如 https://en.wikipedia.org/wiki/Booting中找到更多详细信息。
推荐阅读
- html - 如何制作带有图像的按钮。(如 facebook)
- google-analytics - 带有 gtag.js 的 Google Analytics(分析) - UA 与 GA 标记之间的区别
- java - 有没有办法可以编写一个执行预定义手势和动作的应用程序?
- postgresql-9.2 - Postgresql中的累积和?
- microsoft-teams - 新的 MicrosoftTeams.authentication.getAuthToken 不是 MS Graph Bearer:令牌?
- python - 如何从下拉列表中选择一个选项
- matlab - 在matlab中使迭代变量成为单元格数组
- html - 使用 VBA 识别 HTML 按钮
- surfaceview - 如果 .mp4 文件中有双视频,如何选择显示哪一个?
- node.js - 每次我运行 gulp 或 gulp build local 我都会得到 AssertionError [ERR_ASSERTION]: Task never defined: build