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



  

相关话题

  四路泰坦显卡性能究竟有多变态? 
  「垃圾佬」的电脑是什么样子? 
  计算机专业曾经有哪些方向非常火后来却凉了? 
  预算不足的情况下,低U高显,低显高U,平衡搭配你选择哪个? 
  CPU不满载的时候,晶体管在干什么? 
  大学专业是计算机科学与技术,大一是否需要买电脑? 
  室友说我用过她的电脑之后,她的电脑开机变慢了怎么办? 
  我有两个CPU,怎么比较CPU性能好坏? 
  多核之后,CPU 的发展方向是什么? 
  想入手一台电脑,宁美这种大店和摩西装机猿这种小店,该如何选择? 

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





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