百科问答小站 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输出。)



  

相关话题

  为什么不能买个冰柜,把电脑主机放里面散热? 
  为什么很多组装机大佬不喜欢跑分? 
  3070ti和3080哪个更香? 
  计算机专业曾经有哪些方向非常火后来却凉了? 
  如何看待最新公布的z490主板价格? 
  30系显卡是否性能过剩? 
  网上找的上门修电脑,20天后发现原来的顶级至强的cpu变成了赛扬,还有那个修电脑人的电话,该怎么办? 
  为什么每次开机都要换内存插槽才能开机? 
  淘宝某些商家回收坏掉的主板有什么用呢? 
  想给老公买一张显卡,预算5000左右,有没有懂得推荐一下? 

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





© 2024-05-19 - tinynew.org. All Rights Reserved.
© 2024-05-19 - tinynew.org. 保留所有权利