我们来谈谈x86计算机启动时会发生什么

2023-10-28 1217阅读

大家好,我叫葫芦娃。最近在看早期Linux内核0.12的源代码,突然想到一个困扰我很久的问题:当我们按下电源按钮时,电脑会发生什么?神秘地址0x7C00到底是什么?操作系统是如何加载到硬件中的?带着这些问题,继续阅读本文。BIOS是电脑开机后CPU处理的第一个“可执行程序”,也是第一个“启动项”。BIOS完成硬件自检后,需要选择启动设备,主要是确定计算机从哪个设备启动,通常是硬盘或可移动设备。当BIOS按照我们设置的启动顺序进行启动时,BIOS就会按照这个顺序将计算机的控制权交给排名第一的存储设备。

大家好,我叫葫芦娃。 最近在看早期Linux内核0.12的源代码,突然想到一个困扰我很久的问题:当我们按下电源按钮时,电脑会发生什么? 神秘地址0x7C00到底是什么? 操作系统是如何加载到硬件中的? 带着这些问题,继续阅读本文。

x86计算机启动过程主要分为这几个阶段:BIOS自检、启动设备选择、主引导记录、加载操作系统

BIOS自检

当电源自检通过后,主板就会上电,开始读取ROM中的BIOS程序,进行BIOS自检。 BIOS(基本输入输出系统),负责管理和控制计算机硬件设备,本质上是一组“程序代码”。

BIOS是电脑开机后CPU处理的第一个“可执行程序”,也是第一个“启动项”。程序代码预先烧录到主板上集成的ROM芯片中,主要存储系统设置程序、基本输入输出程序、开机自检程序和系统启动Bootloader程序等。

ROM:只读存储器,不需要电源,可以保持数据不丢失。这一特点与内存形成鲜明对比

现在普遍使用Flash存储器来代替ROM。 由于ROM写入后无法修改,因此切换到Flash存储器很方便,并且可以使用特殊程序修改代码。

BIOS启动时,将开始BIOS自检,并依次执行以下操作:

它主要检测并初始化电脑的硬件设备,包括处理器、内存、硬盘、显卡、声卡等。它检测电脑内存,检查硬盘等存储设备是否正常,BIOS会还要检查计算机的其他设备,包括键盘。 、鼠标、显示器、声卡等显示系统信息:BIOS会在屏幕上显示系统信息,包括电脑型号、处理器型号、内存大小、硬盘容量等。

u盘字节为0数据恢复_u盘字节什么意思_u盘恢复介质

在此期间,如果检测到设备或硬件运行不正常,主板会发出不同的蜂鸣声(具体参见BIOS手册)作为警告,并且启动会中止。 同时,我们也不用担心测试时间太长。 通常,计算机的 BIOS 自检在我们感觉到之前就已完成。

启动设备选择

BIOS完成硬件自检后,需要选择启动设备,主要是确定计算机从哪个设备启动,通常是硬盘或可移动设备。 这一步也就是我们常说的BIOS下的启动顺序。 计算机需要知道下一阶段要启动的程序放在哪个设备上。

用户可以选择从哪个设备启动计算机,例如CD或USB驱动器,然后调整启动设备的优先级。

在BIOS操作界面中,有一项是“设置启动顺序”。 我们通常使用U盘来安装系统,所以这一步我们要设置为从U盘启动。

u盘字节为0数据恢复_u盘恢复介质_u盘字节什么意思

主引导记录

当BIOS按照我们设置的启动顺序进行启动时,BIOS就会按照这个顺序将计算机的控制权交给排名第一的存储设备。 主要目的是将操作系统的核心代码从硬盘加载到计算机内存中并执行。 通俗地说,就是主引导程序比较小,操作系统比较大。 它的任务是加载一个大的程序,这就是操作系统。

那么如何将操作系统的核心代码加载到计算机内存中并执行呢?我们只需从第一个设备中读取该设备的MBR,并将程序放置在内存地址位0x7c000处即可

我们来谈谈x86计算机启动时会发生什么

什么是MBR?

MBR是存储设备中的第一个扇区,也就是磁盘的前512字节(Byte),称为“主引导记录”(简称MBR)

就不得不提一下机械硬盘的结构。 机械硬盘常见部件:

u盘字节为0数据恢复_u盘字节什么意思_u盘恢复介质

我们就不一一介绍了。 我们直接来说说存储数据的原理。 机械硬盘存储数据时,会将数据存储在其内部磁盘上。 硬盘驱动器中通常有多个盘片。

盘片表面涂有磁性材料,用于记录二进制数据。 由于正面和背面都可以涂有磁性材料,因此盘可以具有两个盘表面。

每个磁盘都会有一个对应的磁头,所有磁头“同进同退”,因为会有一个磁臂来固定它们。

u盘恢复介质_u盘字节为0数据恢复_u盘字节什么意思

每个磁盘被分成一圈磁道,最外面的一圈是磁盘0。然后每个磁盘被分成小块,称为扇区。 扇区大小是固定的,512 字节。

为什么扇区大小固定为512字节? 这是行业贸易组织国际磁盘驱动设备和材料协会于1956年制定的行业标准。 这是每个人都会默认遵守的标准。 久而久之,如果改变的话,兼容各种情况的成本就会非常高。

我们现在常用的固态硬盘的原理与机械硬盘完全不同。 如果大家有兴趣的话,可以自行了解一下。 上面已经普及了很多磁盘知识。 现在让我们回到MBR。

由于BIOS很小,功能有限,为了完成加载操作系统的功能,MBR诞生了。

MBR位于磁盘0,磁道0,扇区(最外层磁盘最外磁道的第一个扇区),它是存储设备的第一个扇区(大小512字节)。 它存储用于启动操作系统的引导程序代码。 其实这串代码告诉计算机去哪个地址寻找操作系统**。

主引导记录由三部分组成:

占用446字节:**主引导程序(也叫Boot Loader)。 如果将启动管理器grub直接写入MBR硬盘的主引导记录中,计算机BIOS在启动时就会按照预定的方式加载MBR。 代码被加载到指定的内存位置**,然后跳转到那里,mbr代码开始运行。 占用64字节:记录分区表。 由于硬盘可以分区,并且每个区域可以安装不同的操作系统,因此主引导记录必须知道将控制权转移到哪个区域。 占用2个字节:主引导记录的签名(0x55和0xAA)。 如果这512字节的最后两个字节是0x55和0xAA,则表明该设备可以用于启动; 如果不是,则表明该设备不能用于启动。 ,然后控制权将转移到“启动顺序”中的下一个设备。 如果最终没有找到符合条件的匹配,则直接报无启动区的错误。

u盘字节什么意思_u盘恢复介质_u盘字节为0数据恢复

另外,分区表的概念:分区表的长度只有64字节,分为四项,每项16字节。 因此,一块硬盘只能划分为四个一级分区,也称为“主分区”。

每个主分区为16字节,由6部分组成:

当主引导程序加载(完整复制)操作系统引导程序代码(512 字节内容)时,从硬盘的第一个扇区读取到计算机内存的位置 0x7c00 处。 这个过程需要依靠硬盘控制器和指令集来完成。

我们来谈谈x86计算机启动时会发生什么

那么看到这里,你一定有疑问吧? 为什么计算机将操作系统代码加载到内存地址0x7c00,而不加载其他地址?

0x7c000是什么神秘地址?

地址0x7C00不属于Intel x86平台规范。 即使你翻遍Intel x86手册也找不到它的定义。 这实际上是历史的遗产。 它首先出现在IBM PC 5150计算机中。 IBM PC 5150 是 x86(32 位)IBM PC/AT 系列的祖先。 它采用intel 8088芯片。 后世一直沿用这个地址以保持兼容。

你是怎么得到这个地址的? IBM PC 5150计算机的操作系统是86-DOS,至少需要32KB内存。 要知道那个时候记忆是非常宝贵的,能攒的就攒吧,勤俭节约。

32KB=32 * 1024 B = 32768 B = 0x8000 B。由于内存地址是从0x0000开始的,所以最后32位地址是0x8000 -1=0x7FFF,所以32KB内存地址是0x0000~0x7FFF

现在我们知道主引导记录需要512字节,引导程序本身的堆栈/数据区也至少需要512字节。

0x7FFF -512 -512 + 1=0x7C00,因此得到地址0x7C00。

计算机启动后,内存布局如下:

+——————— 0×0
| Interrupts vectors(中断向量表)
+——————— 0×400
| BIOS data area(BIOS的数据区域)
+——————— 0×5??
| OS load area(操作系统加载区域)
+——————— 0x7C00
| Boot sector(引导区域)
+——————— 0x7E00
| Boot data/stack(引导数据/堆栈)
+——————— 0x7FFF
| (not used) 
+——————— (…)

当操作系统启动时,主引导记录就完成了它的使命。 所在内存地址0x7C00之后的所有内存都可以被操作系统重用,凸显了节省内存的概念。

u盘字节为0数据恢复_u盘字节什么意思_u盘恢复介质

加载操作系统

操作系统的加载是计算机启动过程的最后一步。 控制权将转移到操作系统。 主要任务是将操作系统的所有模块加载到内存中,完成操作系统的初始化,最终实现**

我们以Linux为例。 首先,我们将加载启动目录中的内核启动文件。 成功加载内核后,我们接下来会启动init进程(pid进程号为1),最后加载操作系统的各个模块,比如网络、IO等。 设备、Windows等,使操作系统能够正常运行。

我不会详细介绍这一点。 如果深入Linux的源码,远远不是一篇文章能够涵盖的,后续我会尝试更新linux0.12相关的文章,敬请期待。

直到电脑上出现我们熟悉的输入用户名和密码登录的界面。

u盘恢复介质_u盘字节为0数据恢复_u盘字节什么意思

本文到此结束。 如果我的文章对您有帮助,请帮我点赞、关注、收藏三下。 您的支持将鼓励我写出更高质量的文章。 谢谢你!

计算机内功、源码解析、技术故事、项目实践、面试刻板等更多硬核文章首发于公众号“Maverick Hululu”。 下一期再见!

相信有很多像我一样的上班族,每天都会存储大量的数据和文档。 如果你想解决数据文档多到无处存放的尴尬,你需要找到一个快速且牢不可破的办公快捷方式。 移动硬盘是一个不错的选择。 。 它容量大、寿命长、携带方便,比U盘有更好的读写速度和更好的数据安全性,还可以作为移动操作系统。 今天我就跟大家分享一下如何选择适合自己的移动硬盘。

我们来谈谈x86计算机启动时会发生什么

1、根据性能选型(兼容性、散热、防震加密):

1、兼容性:

基于市场上数码产品的多样性,适合办公使用的数码设备也琳琅满目。 因此,您的移动硬盘必须具有很强的兼容性,才能够应对多样化的办公需求。 要了解移动硬盘的兼容性,就要看它的接口类型,接口类型主要有USB2.0和USB3。 0和Type-C是主要的三种类型。

我们来谈谈x86计算机启动时会发生什么

(1)、USB2.0

USB2.0接口是目前移动硬盘最常见的接口类型,市面上大多数USB设备也支持USB2.0。 它的优点是通用性好,可以支持大部分主板,价格优势明显,但缺点是速度慢。

我们来谈谈x86计算机启动时会发生什么

(2)、USB3.0

USB 3.0是2008年发布的USB接口标准。USB 3.0的传输速度比USB 2.0快很多。 目前,部分USB 3.0与苹果电脑兼容,可以更好地利用硬盘的性能。 它在设计中还考虑了向后兼容的问题。 USB 2.0设备可以插入USB 3.0接口使用,USB 3.0设备也可以插入USB 2.0接口工作; 简单来说,只要插头物理兼容(如果能插),就可以使用。

我们来谈谈x86计算机启动时会发生什么

(3)、C型

USB Type-C接口,简称USB-C,位于智能手机底部,最常用于充电、数据传输等用途; TYPE-C插座正在越来越多的产品领域出现,具有更快的数据传输能力,更快的能量传输效果。 尤其是与移动硬盘搭配使用时,在共享数据、做生意、存储影视节目等各种用途中,都具有非常快的速度效果。

我们来谈谈x86计算机启动时会发生什么

(4)、IEEE1394

IEEE1394俗称“火线”。 该接口的数据传输速率理论上可以达到400Mbps。 然而,由于IEEE1394接口在当今的主板上并不普及,因此常常需要配备昂贵的专用IEEE1394接口卡才能工作。

我们来谈谈x86计算机启动时会发生什么

我的建议:

目前市场上使用最广泛的硬盘接口类型主要是USB,大部分都兼容苹果电脑。 USB 2.0和3.0的区别主要在于接口中间塑料片的颜色。 蓝色代表USB3.0,黑色代表USB2.0。 虽然USB3.0标准的硬盘比2.0标准贵300元左右,但其在速度和性能上的提升却是质的飞跃。 因此,如果不是特别注重价格的话,那么尽量选择USB3.0接口的移动硬盘。 即使电脑主板不支持,也可以为以后的升级留出空间,或者配备USB3.0接口卡。 选择FireWire会导致成本较高,并且不便于在不同计算机之间使用,因此不适合大多数普通用户。 但如果你是从事图形、动画或美术工作的用户,通常在MAC和PC之间传输数据,那么你仍然需要选择“FireWire”接口。

2、散热:

如果没有好的方法来散发硬盘在读写过程中产生的大量热量,就会损害硬盘的质量,并且可能会丢失内部数据。 最坏的情况下,会导致计算机崩溃并引发病毒。 如果需要长时间使用硬盘进行读写,建议选择散热性能较好的移动硬盘。 移动硬盘的散热主要由材质决定。 目前,市场上硬盘的外壳材质主要有金属和工程塑料。

我们来谈谈x86计算机启动时会发生什么

我们来谈谈x86计算机启动时会发生什么

(1)、金属外壳

金属材料本身具有比较好的抗压性能和散热性能。 它只给金属材质带来良好的导热性能,因此无需担心硬盘散热不良带来的各种问题; 如果金属硬盘再加上合理的散热设计,将会达到更好的效果。 影响。 另外,金属外壳硬盘体积小、重量轻。

我们来谈谈x86计算机启动时会发生什么

(2)工程塑料材质

采用工程塑料制成的硬盘外壳具有很强的抗冲击性能,因为它具有PC树脂优异的耐热耐候性、尺寸稳定性和抗冲击性,以及ABS树脂优异的加工流动性。 但其最大的缺点是重量重、导热性差。

我们来谈谈x86计算机启动时会发生什么

我的建议:

基于读写工作的效率和数据的安全性,建议选择散热性强的移动硬盘,其中金属外壳的硬盘最好。 当然,如果只是偶尔复制一些数据,那么塑料外壳就可以了。

3、抗震、加密:

众所周知,移动硬盘特别容易摔倒,而且非常脆弱。 如果不小心,可能会导致数据丢失甚至完全损坏。 因此,在选择移动硬盘盒时,应注意其是否提供防震保护功能,如橡胶垫、缓冲架或防震包装等。

我们来谈谈x86计算机启动时会发生什么

很多人将家庭照片或者公司机密存储在移动硬盘中,因此加密功能也非常重要。 最常见的方法是为硬盘设置密码。 如果您非常看重保密性,建议购买内置256位AES硬件加密的手机。 硬盘,其保密性能是目前最好的。

我们来谈谈x86计算机启动时会发生什么

2、根据参数(容量、传输速度)选型:

移动硬盘和U盘虽然都是用来存储文件数据的,但它们的容量和传输速度都比U盘快很多。 如果你想快速工作而又不花太多钱,怎么能忽视硬盘的容量和传输速度呢?

1、看存储容量:

相信容量是大多数人在购买移动硬盘时必须考虑的问题。 随着大数据时代带来的数据存储需求,移动存储设备也开始向TB级别迈进。 目前,市场上的硬盘最大容量可以达到12TB,但比较常见的是1-4TB,更大容量的是8-12TB。

我们来谈谈x86计算机启动时会发生什么

我的建议:

(1)、1-4TB

如果你喜欢看影视娱乐,想要存储高清视频等,至少1TB是购买的起点,1-4TB容量就足够了! 此容量范围具有成本效益。 1T或2T是整数倍。 它使用的磁盘最少,成本最低,因此也是性价比最高的。

(2)、8-12TB

我们来谈谈x86计算机启动时会发生什么

8-12TB已经是硬盘中最大的容量类别,无论空间有多大,都可以存储数据文件和娱乐视频。 但它的缺点是传输过程中不是很安全,也不是很稳定。

2、看传输速度:

办公用的移动硬盘一定要从传输速度来判断。 硬盘的传输速度主要受以下两个因素影响。

(1)、接口速度

虽然市面上的移动硬盘大多采用USB接口,但USB接口的细分也决定了它的传输速度。 前面提到,USB2.0和USB3.0带来的兼容性不同,传输速度也不同。

我们来谈谈x86计算机启动时会发生什么

USB2.0接口的理论最大传输速率为60MB/s,实际传输极限速度为40MB/s。 该接口的传输速度主要取决于设备。 USB3.0接口的理论最大传输速率可以达到625MB/s,实际传输速度为450MB/s。 USB3.0的传输速率比USB2.0快近5倍。

(2)硬盘本身的速度

移动硬盘的类型决定了硬盘本身的传输速度,因此在选择时要特别注意硬盘的类型。 一般分为固态硬盘(SSD)和机械硬盘(HDD)。 SSD访问数据速度更快,但价格更贵; HDD 访问数据速度较慢,但​​更便宜。 市场上大多数用户更喜欢SSD。 毕竟硬盘容量越大,运行时就越省心。

我们来谈谈x86计算机启动时会发生什么

我的建议:

对于普通用户来说,4TB存储空间就足够了。 不建议买特别大的内存,价格贵,而且稳定性没有保障。 从速度上来说,3.0接口的SSD绝对是最好的,但价格偏高。

3、根据供电方式选择(USB供电、外接电源):

移动硬盘除了考虑其高效、便携之外,还需要考虑硬盘的供电方式。 硬盘的供电方式主要有两种,一种是USB接口供电,一种是内置外接电源。

1.USB接口供电

USB接口供电方式的优点是,当移动硬盘插入USB接口时,USB接口可以直接为其供电,使用和操作更加方便。 但缺点是USB接口提供的电流往往不足以驱动移动硬盘,很容易损坏移动硬盘,导致文件数据的安全性较低。

我们来谈谈x86计算机启动时会发生什么

2、外接电源

外部电源为外部电源插座。 是为了应对仅依靠USB接口有限的供电能力(即接口的输出功率小于移动硬盘的额定输入功率)在不同的使用环境下可能出现的供电不足的情况。 disk),导致移动硬盘系统无法识别。 工作状态不稳定、无效读写导致文件意外丢失、损坏,移动硬盘上的文件无法运行。

我们来谈谈x86计算机启动时会发生什么

我的建议:

如果想要延长移动硬盘的使用寿命,建议选择带有外接电源的移动硬盘,这样可以最大程度地保护移动硬盘,因为一旦出现死机、自动关机、无法安全等情况,删除和热插拔对移动硬盘来说是致命的,而且无法修复。

我们来谈谈x86计算机启动时会发生什么

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]