百科问答小站 logo
百科问答小站 font logo



既然bios只是一个基本的输入输出系统,为什么进入操作系统之后,ide/sata设置还是有效的呢? 第1页

  

user avatar   flygoat 网友的相关建议: 
      

BIOS只是在初始化硬件的时候写了一些配置寄存器来调整硬件的行为模式(是模拟IDE表现还是AHCI表现)。只要硬件允许二次配置,操作系统层面完全可以把这些配置改回来。

说到底其实是BIOS和操作系统之间的Interface规范明确划分了什么应该由BIOS做,什么应该由操作系统做,所以在具体实现中可以各自只做好各自的功能。不然如果二者做的事情互相冲突的话很容易造成混乱。这样的规范也是保证x86(IBM-PC)兼容机一直保持一定程度前向兼容性的基石。

回到IDE和AHCI上,为什么会有IDE和AHCI的区别呢?是因为当时IDE控制器的实现在业界已经形成了共识,也就是说大家做出来的IDE控制器都可以用差不多的驱动,操作系统只需要按规范实现一个统一驱动。后来SATA硬盘横空出世,IDE的控制器模型并不能最大化的利用SATA硬盘的新特性。于是业界又定义了AHCI规范。但是当时大量的操作系统(Windows XP, DOS)并没有AHCI支持。没有硬盘驱动,操作系统几乎不可能正常运行。于是大家在做SATA控制器的时候,都加入了兼容模式,也就是为那些老系统模拟了一个IDE控制器接口。在兼容模式下虽然不能最大化利用SATA特性,但是老的操作系统也可以正常运行。操作系统在发布之后不可能去修改已经分发的安装盘的代码,所以这个功能的开关不可能由操作系统来控制而只能放在后来随硬件分发的BIOS里。

在x86乃至整个计算机体系架构里有很多类似的东西。后来者为了兼容性而不得不去做“无用功”。保证兼容性的解决方案也有很多,比较典型的有:

  • 向下兼容 (eg: PCIe总线作为PCI的继承者,从总线结构到协议都已经翻天覆地,但还是保持了PCI总线时代的Config Space, BAR等寄存器,在此基础上扩展出各种链路控制 MSI中断 PME电源管理等功能)
  • 除旧迎新 (AHCI和IDE就是很好的例子,厂商知道总有一天市面上所有的操作系统都会兼容AHCI,于是就在早期提供一个类似于IDE兼容模式的解决方案,待上下游完全接受新方案之后抛弃旧方案。)
  • 按兵不动 (eg: 早期的IBM-PC使用8042键盘控制器芯片的一个输出端口来控制系统重启,在8042不复存在,ACPI大行其道的今天,所有的IBM-PC兼容机还模拟了8042芯片以及这个Reset输出。)



  

相关话题

  电脑升级3090用原来的850w电源够吗?u是10900k? 
  什么是寄存器压栈?栈是内存的一部分,寄存器是cpu一部分,怎么压? 
  网传京东将用户维修显卡高价卖出,低价时再收回,后因显卡有价无市导致穿仓,真实性如何? 
  电脑哪些配件可丐且不影响性能? 
  如何看待最新公布的z490主板价格? 
  10年前的顶级电脑性能仍然能赶上现在的主流电脑,是PC行业的骄傲还是PC行业的悲哀? 
  2022年末,Zen 4 和 13 代酷睿正面对抗会是什么结果? 
  「垃圾佬」的电脑是什么样子? 
  为何3700x测试数据很强,游戏性能却普遍与9700k有细微差距? 
  有哪些你觉得逆天的电脑硬件? 

前一个讨论
在收费站设置地磅就可以控制高速公路上大货车的车重从而避免超载,为什么实施不了?
下一个讨论
大型企业使用阿里云或腾讯云等云服务器真的能比自购服务器省钱吗?





© 2025-04-05 - tinynew.org. All Rights Reserved.
© 2025-04-05 - tinynew.org. 保留所有权利