我曾尝试在维基百科和其他网站上阅读有关 BIOS 的内容,但我不太明白。谁能告诉我什么是 BIOS 以及我们为什么需要它?BIOS 是否存在于所有电子设备中,还是仅存在于计算机和智能手机中?
PC 由称为操作系统 (OS) 的复杂程序运行。它们托管在 RAM 内存中,该内存是易失性的,即,当您关闭电源时,它会丢失其内容。
那么问题来了:当电脑电源打开时,既然RAM会是空的,那么电脑将如何启动?
BIOS 使这成为可能。这是一个非常小的程序,托管在非易失性的只读存储器 (=ROM) 上,即,当您关闭电源时它不会消失。它通过特殊电路从 ROM 自动加载到 PC 上,以便 PC 可以开始其启动过程。
由于ROM内存量小,所以是个小程序,能做的事情有限,基本三种:
我对第二阶段含糊其辞:基本上,新阶段位于硬盘驱动器或 CD-ROM 或 U 盘的特殊位置,称为主引导记录 (MBR)。例如,这是磁盘的一个很小的(446 字节)部分,它告诉 pc 如何将磁盘划分(分区是技术术语)在切片中,以及启动过程的下一阶段在这些切片中的哪一个上可以被找寻到。最后一个阶段是最后一个阶段,它将负责将真正的操作系统(Windows、Mac Os、Linux、Unix 等)加载到 PC 的 RAM 中。而且,从那时起,一切照旧。
好问题。
当我在 1978 年开始我的第一份编程工作时,我们有一台房间大小的迷你电脑。一台HP2100。当它崩溃时,我们需要仔细设置前面板上的 16 个开关,然后拨动一个开关以加载该存储字,并重复此操作约 20 次。如果你犯了哪怕是最小的错误,你也必须重新开始。
必须手动编程的是一个非常简单的程序,称为引导加载程序。一旦它被加载,我们将点击运行开关来执行这段代码,一个程序将启动纸带阅读器并将长纸带上的打孔读取到内存中。
在这张纸带上是另一个更复杂的程序,它是一个简单的BIOS,或基本输入/输出系统。这个程序知道如何访问硬盘,例如它新的如何来回移动读写头,以及如何猛扑包含另一个程序(更大的操作系统)的数据扇区。如果出现问题,它有一个非常简单的命令行工具来查询内存中的内容并手动编辑它。
所以这是一个三步过程,这些年来一直没有改变。
现在回到这些早期的 PC 上,微型计算机上的 BIOS 与今天略有不同。
当您在命令行上键入命令时,例如 dir 列出磁盘上的文件,操作系统将根据文件系统计算要查找的位置,然后要求 BIOS 实际执行使硬件移动和旋转的工作磁盘以获取特定的数据块。类似地,BIOS 为串行端口提供了低级接口,用于在屏幕上显示信息、获取击键以及将数据发送到打印机等。因此 DOS(磁盘操作系统)将处理命令行,但一旦发现需要向屏幕发送一个字符,该工作被交给知道如何操作串行 I/O 电路的 BIOS。
所以 BIOS 是一个抽象层,它使得在不同的硬件上运行CPM和MSDos成为可能,例如不同大小和类型的硬盘和软盘。
今天的 BIOS 是类似的,但是一旦您的操作系统被加载,大多数操作系统就会用更紧密地集成到操作系统中的驱动程序替换 BIOS 硬件驱动程序。这样做是为了获得更好的性能,即更快地做同样的事情。
IBM发布了 IBM PC 的 BIOS 源代码,以便工程师可以研究和修改它。一个冬天,我还拆解了 MSDos,整个该死的操作系统,而不是今天被许可做的事情,看看它是如何工作的。花了几个月的时间,用一些聪明的基本程序来反汇编它,并费了很多心思去尝试理解代码在做什么,但最终它让我对操作系统的确切作用有了深刻的理解,它是如何做到的。这不是魔法。它只是一堆精心编写的函数,用于执行高级命令并将它们转换为硬件操作。BIOS 也不例外。它有很多你可以要求它做的事情,以及它可以为各种硬件配置的方式。
我认为所有这些东西来自哪里的一点历史可能会帮助你更好地理解这种现代魔法。今天这个代码是专有的,所以大多数工程师永远不知道它是如何工作的。
归档时间: |
|
查看次数: |
4144 次 |
最近记录: |