題 操作系統運行時BIOS的功能是什麼?


我總是想知道BIOS(除了執行POST,啟動引導加載程序並在按下電源按鈕後將控制權傳遞給OS)在操作系統運行時是否有任何目的或功能?

操作系統在運行時是否與BIOS通信,如果是,如何操作?


76
2017-08-16 09:10


起源


有關: 為什麼計算機必須有BIOS? - Breakthrough


答案:


借助現代操作系統, 幾乎沒有。據報導,Linus Torvalds表示其任務是“只是加載操作系統並讓他們離開那裡”。

像MS-DOS這樣的舊操作系統通過調用中斷來依賴BIOS執行許多任務(例如磁盤訪問)。

使用現代操作系統,引導加載程序可快速切換到32位或64位模式並執行操作系統內核。內核可以註冊自己的中斷處理程序,可以由用戶空間應用程序調用。內核的例程可以更加可移植(因為它們不依賴於特定的硬件),更靈活(操作系統供應商可以按需更改它們而不必使用隨硬件提供的任何內容),更複雜(它們可以執行任意複雜的操作)代碼而不是編程到BIOS中的代碼,並且更安全(因為操作系統可以控制對共享資源的訪問並防止程序互相破壞,實現自己的任意權限方案)。

要與特定硬件交互,操作系統可以加載和使用自己的設備驅動程序。因此,操作系統或應用程序根本不需要調用大多數BIOS例程。實際上,出於安全原因,甚至禁用了BIOS中斷。由於BIOS處於16位實模式,因此要求現代操作系統更難。

雖然在運行OS時BIOS的使用非常有限,但其功能仍在外圍使用。 例如,當計算機睡覺時,操作系統未運行,最終落入固件,將硬件設置為正確的狀態,以暫停和恢復操作系統。這些用途通常限於 ACPI 調用而不是調用完整的BIOS接口。 ACPI是一個BIOS擴展 “將電源管理置於操作系統(OSPM)的控制之下,而不是以前的BIOS中央系統,後者依靠特定於平台的固件來確定電源管理和配置策略”

注意,正式的“BIOS”指的是特定的固件接口,但該術語通常用於指代計算機固件。一些最近的計算機(尤其是Apple計算機)已經取代了BIOS(sensu strictu) UEFI當然,這就是所謂的實現這些功能。

有關BIOS角色如何隨著時間的推移而減少的更多信息,請參閱 維基百科


71
2017-08-16 09:23



通過系統時鐘(一天中的時間)進行一些最小的交互。 - MSalters
你真的對此確定嗎?那麼風扇控制,已經提到的系統管理模式,整個ACPI,例如控制處理器速度呢? - Alexander
我可以嘗試在機器運行時焊接BIOS芯片。 - JohnnyFromBF
@Ian為什麼讓自己變得困難。找到一個帶有插座式BIOS的舊電路板,然後猛拉芯片。另外,IIRC最近的一些超頻板還有一個硬件開關讓你可以在兩個BIOS之間切換。 Botch B圖像的閃光,啟動到A,運行時切換到B. - Dan Neely
@Ian我已經做到了。我在刷新BIOS時斷電,之後沒有啟動。我們有20台機器具有完全相同的硬件並且它們老化了。所以我啟動了一個,移除了BOIS芯片,插入擰緊的一個,並閃爍。兩款BOIS芯片在此之後完美運行。當然,它是DOS,運行閃存軟件。我認為仍然令人印象深(據我記得,主板是技嘉品牌,奔騰4兼容) - Ekin Koc


BIOS為操作系統提供了許多服務,其中大部分與電源管理有關:

  • 修改CPU和總線時鐘
  • 啟用/禁用主板設備
  • 擴展端口電源控制
  • 暫停到磁盤並暫停到RAM
  • 恢復活動設置

由於操作系統可以更快地恢復其狀態(僅重新加載內核狀態,並且在需要時交換程序狀態,這比重新加載整個RAM要快得多),因此在操作系統中大部分時間都會實現掛起到磁盤。該功能仍保留在規範中。

操作系統無法實現掛起到RAM,因為它依賴於BIOS跳過RAM初始化和測試,因此操作系統需要一個API來告訴BIOS它打算用當前的RAM內容恢復。為了提供此服務,BIOS要求操作系統保持某個RAM區域不變。

所有BIOS服務的操作系統接口都是一段虛擬機代碼,需要在仿真器上運行,並在硬件中生成必要的I / O操作。對於掛起,通常實現這樣,以便執行其中一個硬件寫入然後觸發中斷,該中斷將控制轉移到BIOS。


31
2017-08-16 15:03





OS在現代系統中使用BIOS有三個主要區域,例如使用UEFI標準的那些。第一個是稱為UEFI運行時服務的一系列服務。這些服務允許操作系統獲取只有BIOS知道的信息,例如BIOS使用的時間,啟動順序,當前用戶安全配置文件,有關主板的信息,DIMM等。

第二種是系統管理模式,它是一個隱藏的存儲器部分(SMRAM),由高優先級中斷(SMM)訪問。許多BIOS使用它來實現高安全性OEM功能或實現硬件工作。

第三是ACPI。 ACPI提供操作系統使用的配置,電源管理和硬件數據以及代碼,以增強操作系統驅動程序可以使用行業標准或設備驅動程序找到的內容。例如,是否存在控制硬盤驅動器電源的特殊信號,或者是否有特殊的方式與標準未涵蓋的電池通信。

蒂姆


16
2017-08-16 16:10





現代操作系統主要使用BIOS進行加載,但仍有一些用途,其中最明顯的包括:

  • 響應電源按鈕(4秒後關閉電腦
    包括在內)。
  • 更改筆記本電腦上的屏幕亮度設置
  • 筆記本電腦上的電池事件
  • 懸掛

9
2017-08-16 15:04



我認為亮度是通過在繪製之前改變顏色值來完成的。 - Cole Johnson
@ColeJohnson:不:在Thinkpad上至少它實際上會改變背光亮度。 - Mechanical snail
亮度是硬件控制的脈衝寬度調製信號,以高頻率打開和關閉亮白色LED。這種燈是一個主要的電池消費者


除了上面已經提到的,英特爾開始擺脫另一種方式並通過提供帶外訪問硬件來進一步增加 主動管理技術 內置於BIOS和主板中,可獨立於操作系統進行控制。有了這些板,您實際上可以做到相當多。無論你認為它是內置的還是第二個操作系統都是另一回事,但由於它有硬件和BIOS中的組件,我堅持內置。

intels營銷guff


1
2017-08-17 16:16