按下電源鍵,電腦關機,是什麼原理?
謝邀。按下電源鍵不一定會關機,也有可能會進入睡眠狀態,具體哪種在於用戶的選擇。我們先來看最普通的情況:在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",在那裡有最新的文章。
是個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)?
※計算機專業原版教材值得讀嗎?
※想開始初步學習計算機有什麼建議嗎?