该BIOS软件被内置到PC,并在(“启动固件”)开机时是由PC第一代码运行。当PC启动时,BIOS的第一项工作是开机自检,它会初始化并识别系统设备,例如CPU,RAM,视频显示卡,键盘和鼠标,硬盘驱动器,光盘驱动器和其他硬件。然后,BIOS找到位于外围设备(称为“引导设备”)(例如硬盘或CD / DVD)上的引导加载程序软件,并加载并执行该软件,以控制PC。[2] 此过程称为启动或启动,是自举的缩写。
哪些条件确定计算机系统必须安装BIOS?
为什么操作系统实际上不能使所有BIOS正常工作?
该BIOS软件被内置到PC,并在(“启动固件”)开机时是由PC第一代码运行。当PC启动时,BIOS的第一项工作是开机自检,它会初始化并识别系统设备,例如CPU,RAM,视频显示卡,键盘和鼠标,硬盘驱动器,光盘驱动器和其他硬件。然后,BIOS找到位于外围设备(称为“引导设备”)(例如硬盘或CD / DVD)上的引导加载程序软件,并加载并执行该软件,以控制PC。[2] 此过程称为启动或启动,是自举的缩写。
哪些条件确定计算机系统必须安装BIOS?
为什么操作系统实际上不能使所有BIOS正常工作?
Answers:
BIOS是存储在主板本身上的硬件相关代码。每个不同的主板都需要为其编写一个定制的BIOS,因此不可能有一个通用的 BIOS / OS一体机(尽管从技术上讲,BIOS仅是存储代码,因此理论上您可以为一个特定的主板编写一个OS)。 。如您所述,BIOS的用途是执行以下操作:
当PC启动时,BIOS的第一项工作是开机自检,它会初始化并识别系统设备,例如CPU,RAM,视频显示卡,键盘和鼠标,硬盘驱动器,光盘驱动器和其他硬件。
请注意,您仍然可以在没有任何外部存储的情况下启动计算机-这就是为什么BIOS是计算机的要求。换句话说,BIOS提供了一个通用的软件接口,以允许存储的计算机程序与连接到主板的各种硬件设备进行通信。
例如,如果我有两个带有两个不同SATA控制器的不同主板,BIOS允许我编写一段可以同时使用这两个代码的代码,而无需了解主板实际上是如何向SATA设备发送命令的。我只需要告诉计算机“从该SATA设备读取扇区X”,BIOS便负责将这些命令实际发送到硬件。
它实际从中获取“读取扇区X”信息的地方是BIOS中包含的存储程序,该程序通常指示计算机从存储在公共位置的引导加载程序开始读取。这些公共位置是由各种软件和硬件开发人员同意的,并且通常提供给公众以允许系统之间的更大兼容性。
一旦建立了基本的接口级别(再次通过软件进行逻辑接口),操作系统本身就会与各种硬件设备建立一个通用接口(通常通过使用“设备驱动程序”),然后操作系统就可以控制硬件。
最后,应该注意,BIOS还用于修改计算机硬件配置,并将其存储在板载EEPROM中(以便您的计算机在下次启动时记住更改)。但是,正如我之前所说,一旦加载了操作系统,它将完全控制计算机。
这允许主板制造商开发软件,使您可以从操作系统内部进行这些更改,而不必重新启动进入BIOS。同样,这是非常依赖于硬件和软件的,但是它表明所有计算机接口都是相对的。BIOS正是其名称所隐含的含义-一个基本的输入/输出系统,它允许用于更高级程序(“操作系统”)的通用软件接口来控制计算机。
您的操作系统位于硬盘上,如果您打开计算机,它就不会神奇地开始从该硬盘读取数据。是BIOS从硬盘加载引导加载程序,并进行一些测试,并允许您配置BIOS的某些设置。
您的操作系统无法执行此操作,因为它位于硬盘上,而不位于ROM中。
因此,您需要BIOS或类似(但不同)的技术,例如EFI ...
制造商可以将部分OS放在ROM中(负责加载OS的引导加载程序);但是,这并不广泛适用,并且仍然存在BIOS或EFI。
没有真正的逻辑原因。这更多的是遗产和历史问题。
不必一定要安装BIOS。它是IBM PC的遗产。尽管这被证明是一个好主意
操作系统这样做并不会真正改变任何东西,因为它仍然会像BIOS一样进行操作。当然,操作系统将需要位于ROM中,而不是在I / O设备中。当操作系统构建者决定使他的操作系统BIOS与其他操作系统不兼容时,可能会出现垄断问题。使BIOS制造商与操作系统分离可以提高软件运行自由度。
启动操作系统需要某些操作。如果该操作系统可以装入某些非易失性内存中,则可以直接启动它,但是对于功能齐全的OS(例如Windows,OSX或Linux),则不可能。
需要的是一个小型的轻量级“ OS”,可以在加电时加载它,执行诸如内存和磁盘访问之类的基本操作,然后加载操作系统。尽管这可能是操作系统本身的一部分,而不是一个单独的实体,但是还有其他原因可能导致您希望另一个进程首先启动:
该过程称为自举。
PC PC的概念源自CP / M,CP / M是在IBM PC接管之前在基于8位Z-80“ S-100”总线的计算机上流行的操作系统。
CP / M期望与硬件相关的功能位于ROM(BIOS)中。引导加载程序从磁盘加载的另一部分是支持CP / M文件系统(BDOS),然后支持命令处理器或“外壳”(CCP)的软件。期望CP / M支持的硬件不是很多:磁盘驱动器,显示器,一个或两个串行端口(COM或AUX端口),可以连接打印机或调制解调器。
PC BIOS执行类似于CP / M的基本引导功能,而DOS则按预期使用BIOS功能执行基本输入和输出。程序员由于速度太慢而最终绕过了这些功能。这导致PC克隆制造商在80年代中期重新创建了整个平台(就像IBM很好地记录了原始PC的内外一样容易),而不仅仅是提供具有兼容接口的BIOS,尽管他们也必须这样做。
在这一点上,我们可以说,对于现代操作系统,除了启动系统之外,BIOS确实不是必需的。但是...
从90年代初开始,电源管理的概念就流行起来,BIOS为此承担了责任。APM与单任务操作系统(例如DOS)搭配使用时效果很好,但不适用于真正的多任务操作系统(例如Windows或Linux)。大约在386全面投入使用时,支持真正多任务处理的Intel CPU。DOS和BIOS并未针对此CPU的新功能进行更新,这主要是因为所有Intel CPU仍将以原始PC-BIOS设计的传统16位兼容模式运行。因此,除了可能在早期引导阶段外,现代OS几乎会忽略/绕过BIOS的所有类似于CP / M的输入/输出功能。
最终,开发了ACPI,它大部分是BIOS的一部分,它支持电源管理和(通常是笔记本电脑)平台特定内容的配置。ACPI还可以处理休眠,睡眠或关机的最终电源开关状态。
因此,如今是ACPI及其后继产品EFI使BIOS之类的东西成为PC的必要。总体概念是ACPI成为特定平台或主板与操作系统之间的接口,因此不需要单独构建操作系统必须为每种不同类型的主板制造。
装有运行Linux的ARM CPU(以及手机硬件)的开发板存在此问题。通常,它们将配备仅引导加载程序的固件(例如U-boot),但是操作系统几乎必须将每个板作为独立的平台来支持。
从某种意义上说,你是对的。BIOS和OS部分执行相同的操作。BIOS和OS的分离仅出于灵活性。
BIOS通常是由硬件制造商创建的。硬件必须确保存在基本功能,例如可以读取磁盘驱动器并显示诊断和错误的基本显示。因此名称为“基本输入输出系统”。
可以在某种程度上完成此操作,而无需进一步了解特定系统上实际存在的实际组件,因为它们都必须支持某种小型BIOS标准。这使供应商可以自定义构建完整的系统。BIOS只需要做足以启动OS的工作即可。关于此起点的约定有一些,因此它只是一个接一个地尝试。这样还可以在同一硬件上使用不同的操作系统。(再次有灵活性)
一旦由BIOS找到并启动了操作系统(或至少是引导加载程序),BIOS本身就会过时了。加载后,现代OS在功能上几乎没有使用BIOS。
如果要使OS能够完成所有工作,则必须将OS放置在可以由硬件访问而无需软件(ROM)的初步帮助的地方。对于某些不关心灵活性的封闭系统,这可能是可能的。如果您考虑将硬件支持构建到其他硬件中,则基本上是在构建一种BIOS ...
另一个问题是内存大小和成本。功能齐全的OS很大,除了修补和更新它的后续问题外,尝试将数GB的OS放入ROM的成本很高。
因此,没有,没有技术原因,但是有许多实际原因,尤其是对于灵活的PC平台。
如果CPU能够直接寻址硬盘驱动器,而无需依赖BIOS,EFI或ROM(或NVRAM或您拥有的东西)中的其他代码,那么从理论上讲,这样的CPU可以将操作系统从磁盘加载到RAM中并开始执行它。
实际上,从理论上讲,这样的CPU甚至可以在不将指令加载到RAM的情况下执行指令。从理论上讲,计算机无法将硬盘驱动器用作主要存储。但这将非常非常缓慢。
这将意味着在CPU中具有额外的代码来访问磁盘,并将有关磁盘的某些概念(例如分区表和文件系统)硬性地连接到CPU中。这些天的CPU足够大,可以做到这一点,但这并不是设计CPU的非常灵活或有效的方法。
不需要它!
通常被称为BIOS的是由三部分组成的集合。