一個通俗版的回答
其實有一件事情如果你知道之後,可能會更細思極恐,就是現在的電腦實際上電源按鍵都是 觸點開關 。也就是說,按一下並不是像以前的開關一樣把電源接通,而是只是觸發了一個訊號。訊號只能由已經上電的數位電路處理,這就說明,不管開機關機,實際上電源模組一直都是通電的!事實上也的確如此。
很古老的電腦在機箱上是分電源開關和reset兩個按鈕的,電源開關是真的開關,按下去接通電源,再按一下斷開,所有裝置都會立即斷電。reset則是一個訊號,可以理解為一個全域訊號,按下去會通知所有的電路發生了reset,這個reset電路在數位電路設計當中是很常見的,也不難實作,通常就是在reset訊號到來時重設所有的寄存器,reset訊號消失之後就會將硬體重新設定為初始狀態。許多硬體上還會有在電源訊號第一次加電時自動觸發reset的電路,透過一個RC延時電路實作。
如果用過當時的作業系統,就會知道,當時關機是這樣的:
- 使用關機命令
- 作業系統進行關機動作
- 界面上顯示一行字「現在你可以關閉電源了」
- 手動按電源鍵斷電
這樣的缺點自然是關機很不方便,更不要說透過網路遠端開關機了。於是後來有了ACPI,它可以看成是一個管理電源的硬體,接上電它就會一直處於工作狀態,其中的邏輯電路負責控制其他電路的通斷電。即使關閉了電腦,ACPI也會繼續工作,否則就沒法透過觸點開關開機了。ACPI也有相應的控制寄存器,這樣作業系統可以和操作其他硬體一樣,直接操作ACPI,也就能實作直接透過作業系統關機;配合BIOS的其他功能(這些功能可以設定電源模組讓一部份硬體在關機狀態下保持通電工作),可以實作鍵盤開機、遠端開機等效果。
有ACPI之後,徹底斷電重新開機的流程就變成了:
- 作業系統進行關機動作
- 作業系統告訴ACPI,需要一次徹底斷電的重新開機
- ACPI斷開硬體的供電,然後恢復
- 作業系統上電啟動
在這個過程中,ACPI本身不會斷電,所以不會產生什麽問題。
除此以外,還有熱重新開機(只重新開機CPU)、reset(透過reset電路重新開機)等不同的情況,其他回答都提到了