按下電源鍵,電腦關機,是什麼原理?


謝邀。按下電源鍵不一定會關機,也有可能會進入睡眠狀態,具體哪種在於用戶的選擇。我們先來看最普通的情況:在Windows啟動後,最自然的關機方式是什麼呢?當然是按下電源鍵了。

有沒有好奇,當我們按下電源鍵,會發生什麼呢?為什麼Windows可以選擇關機或者睡眠?背後的機理又是什麼呢?

歷史

如果你曾經使用過Windows95,你一定會記得當時的一個鐵律,必須正確關機!我們要點擊關機菜單,在三個選項中選擇關機才好。像這樣按下電源鍵是絕對不行的:

我們按下電源鍵真的會立刻切斷整機電源,如果你足夠幸運,下次也許跑個Scandisk就行了,如果你沒有這麼幸運,你沒有保存的文件可能就丟失了!這個設計簡直是反人類,和我們其他電器的使用習慣完全不同。幸虧當時PC還是高大上的高科技產品而不是現在四處可見的普通電器,否則微軟一定會被罵死。

Window98和隨後的WindowsXP引入了ACPI,情況才得到改善。我們來一起看一看當我們按下電源鍵後會發生什麼。

原理

我們把按下電源鍵分成兩種情況:一、按一下立刻抬起。二、按住不動超過5秒。這裡需要ACPI的背景知識(ACPI與UEFI - 知乎專欄)。

1。按一下

ACPI定義了兩種電源鍵:Fixed hardware power button和Control method power button。Fixed hardware power button一般對應南橋或者SOC中的PWRBTN#引腳,而Control method power button一般可以用GPIO等擴展,它需要在ACPI table中報告_HID(PNP0C0C)設備並提供_GPE Event。為了簡單起見,我們以最常見的PWRBTN#來說明整個流程:

1. 用戶按下電源鍵,並抬起。

2. PWRBTN#被觸發。

3. PWRBTN_STS被置1。

4. SCI產生。

5. 操作系統的OSPM發現SCI是電源鍵產生,隨後檢查用戶的電源鍵設置偏好。用戶可以設置睡眠或者關機。

6. 如果是關機,通知各個應用程序保存退出;通知各個驅動程序電源事件。有序關閉應用和驅動。

7. 調用關機前的各個ACPI定義的Event。

8. 寫MADT表中的電源寄存器真正關機,進入G2/S5狀態。

2。按住不動超過5秒

這是一種強制關機操作。前一種操作需要OS配合,如果系統已經死機了呢?我們總不能拔電源插頭或者摳出來電池吧,這是一種保險措施了。這個操作叫做Power button override。在PWRBTN#上,硬體都有專有的Timer來計時,超過5秒還沒有抬起,就觸發了強制關機,硬體會直接關閉電源,進入G2/S5狀態。

Tips

1。如何選擇按下電源鍵後進入關機還是睡眠?

在控制面板的電源選項里選擇,如下圖:

也可以用命令行powercfg。

2。如何在命令行關機

用shutdown命令:

該命令還有重啟等功能,可以配合mstsc遠程重啟。

結論

按下電源鍵,比較新的電腦先會嘗試安全關機。操作系統和固件在ACPI規範下共同工作,不同分工,一步步安全關閉計算機。在操作系統死機等特殊情況下,用戶可以嘗試按住電源鍵不動5秒鐘以上,硬體會自動強制關閉電源。這是最後一個手段,保證用戶可以在極端條件下擁有強制關閉電腦的權利,畢竟誰也不想強拔電源(有時條件也不允許)。當然這種條件下,緩存中數據是有可能丟失的。

最新的電腦,如果不改變電源策略,按一下電源鍵就是關閉電腦,而且是安全關閉。習慣老Win95的用戶完全沒有必要害怕直接按下電源鍵。

擴展閱讀

1.實際上SOC和主板上有很多power rail,關機並不是簡簡單單切斷電源就好了,有複雜的關閉各個power rail的時序,大家可以看看晶元手冊了解一下。

2. ACPI 5.0後增加了10秒的power button override,需要Windows Blue + 平台支持並且BIOS需要報告_DSM,見: https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/windows-button-array-device-specific-method---dsm-

3. 該回答被整理髮布在我的專欄中:UEFI和BIOS探秘。該文章也被知乎日報轉載。其他平台的電源狀態歡迎閱讀本專欄的其他文章:

一起學習電腦如何睡眠S3 - 知乎專欄

CPU省電的秘密(一):EIST - 知乎專欄

CPU省電的秘密(二):CStates - 知乎專欄

睿頻:榨乾CPU所有的潛力(CPU電源管理系列番外篇) - 知乎專欄

歡迎大家關注UEFI專欄和用微信掃描下方二維碼加入微信公眾號"UEFIBlog",在那裡有最新的文章。

用微信掃描二維碼加入UEFIBlog公眾號


是個acpi事件,內核收到這個事件之後再執行對應的操作

執行acpi_listen就能監聽到這個事件

順便說,很多筆記本上F區的快捷鍵也是acpi事件


類似觸發了一個鍵盤事件

就像你按其他鍵盤一樣

只不過這個事件是由系統來處理觸發後執行的操作

甚至還可以跟其他按鍵一起形成組合鍵

比如macOS的shift+conteol+電源鍵


ACPI,Advanced Configuration and Power Management Interface,高級配置與電源介面,負責此項功能。

ACPI規範由微軟Intel在1997年推出,規定了一系列電源相關的規範,最著名的就是主板有從s0到s5,共6種狀態(開機,3種睡眠,休眠,關機)。

按下電源鍵時,主板會將ACPI信號發給系統,由系統決定做出何種操作,如台式機默認關機,筆記本默認睡眠,平板默認鎖屏。但長按電源鍵或按下重置鍵,主板則直接觸發軟重啟,無需操作系統相應。

不支持ACPI的主板按下電源鍵不會有反應。印象中老電腦上裝Windows2000,按下電源鍵,會彈出對話框,要想關閉計算機,請點擊開始中的關機按鈕,而不會關機,估計就是不支持ACPI。


你一按 主板反饋給系統 系統就知道「你要關機了」

然後他就自己軟關機了 (類似你點開始--關機這樣)

你長按 主板就強制關機了

以前的老機子 很古老的那種 你一按 直接斷電的 真的是「硬關機」

現在的應該算是智能軟關機吧 起碼不會直接斷電那麼簡單粗暴

我是個愛好者,非專業人士,如有錯誤還請各位大神不吝賜教


點按一下:

這個是因為你按下 電源鍵 電源鍵會給電腦主板一個信號,然後就會告訴系統:你按了一下電源鍵。然後系統根據你預先在電源選項中設置的選項【一般默認是關機】來關機或者待機。

長按:

主板:卧槽,這小兔崽子。。。非得讓我強制關機。。。。。然後就 咻~~~ 關機了

~( ̄▽ ̄~)~

啦啦啦啦啦,看完點贊的一生平安 ,不點贊的平安一生


哦,原來還能這樣關機,我一直是拔電源線喲。感覺更直接些


我都不知道按電源鍵能關機,我只知道電源鍵能開機,還有長按是直接斷電強制關機,哈哈哈,孤陋寡聞了


我只知道BIOS有關機設置選項,看了上面這麼多高大上的回答,瞬時感到汗顏。。。。。。


電腦裡面設置的。


高大上的回答真多,我只想說,按下電源鍵是否關機或做其它反應,是你自己設置的


推薦閱讀:

強人工智慧技術如果突破瓶頸,每個人都可以製作怎麼辦?
如何設計一門計算機科學入門課?
你所讀的計算機科學方向,有哪些不錯的講義(Notes)?
計算機專業原版教材值得讀嗎?
想開始初步學習計算機有什麼建議嗎?

TAG:個人電腦 | 知識 | 計算機科學 | 電腦硬體 | 電腦知識 |