收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

科學報 科學文摘 探索

重啟就是關機再開機?你以為錯了……


字體大小:
更新日期:2022110
文章欄目:
文章標籤:               
 

2021年11月19日 10:50

【科學快訊】

  前兩天小編在刷pyq的時候,看到了一朋友發的一張與客服的對話截圖:

  真是Amazing!雖然先前小編就有聽說重啟和關機後再開機不一樣,但當電腦跳出「需要重啟」的彈窗時,我依舊會選擇「稍後重啟」,然後在使用完電腦後關機,下次使用時開機,當作重啟……

  小編當時還天真地以為,這樣既沒有打斷正在進行的工作,還完成了重啟,可謂是做到了效率的最大化……

  今天親眼見證了兩種方式所帶來的不同結果,小編決心好好探索一下:

  「重啟」和「關機後再開機」到底有哪些不同?

  01

  定性來看

amocity
amocity

  


  從最表層看,當我們點擊「重啟」後,計算機會自動進行注銷用戶、關閉系統、重新打開並裝載系統等操作,主機似乎停了一下,但並沒有完全關閉;

  而選擇關機再開機,不僅中途主機會完全關閉,我們還要手動按一下主機上的電源鍵才能再次將系統開啟。

  所以從操作手段上,關機再開機相比重啟要多按一次按鈕;從主機經曆的過程上看,關機再開機相比重啟經曆得更多。Emmm,似乎說了一段廢話……

  不過通過主機呈現出的不同狀態,我們應該能感覺到兩者肯定是有不同的。

  在主機沒有完全關閉的背後,究竟還藏著什麼不為人知的秘密?

  02

  定量來看

  想要深挖計算機重啟背後的秘密,就要知道計算機在重啟過程中都發生了什麼。

  首先我們來看看,操作系統是通過什麼來區分重啟和關機再開機的,這裏就要引入一個概念——高級配置電源管理接口(Advanced Configuration and Power Interface),簡稱ACPI。

amocity
amocity

  


  ACPI是1997年由多家公司共同提出、制定的操作系統電源管理、硬件配置接口,是一種開放標准。

  ACPI整體框架圖

  相信大家看到上圖的感覺一定是非常頭大,因為小編自己也一樣(狗頭)

  不過我們今天不是去深挖ACPI的,而是看ACPI是如何決定計算機的重啟的。

  ACPI規範定義了一台兼容ACPI的計算機系統可以有以下七個狀態(所謂的全局狀態):

  G0(S0):正常工作狀態。計算機的正常工作狀態-操作系統和應用程序都在運行。

  G1:睡眠。這個狀態還可以再細分為以下幾種:

  (1)S0ix:Modern Standby。在這種睡眠狀態下,計算機還能聯網,音樂還可以播放,其餘大部分應用處於暫停的狀態,輕按任意鍵即可登錄賬戶並進入工作狀態。

  (2)S1:比較耗電的睡眠模式。CPU的所有寄存器被刷新,並且停止執行指令,但CPU和內存的電源會被維持。

  (3)S2:一種比S1更深的睡眠狀態,會停止CPU的電源供應,這種模式通常不被采用。

  (4)S3:稱為Suspend to RAM,簡稱STR。這個模式就是我們計算機上常見的「睡眠」

  (5)S4:稱為Suspend to Disk,也是我們常說的「休眠」,其和S3的差別在於,S4消耗的時間更長,而且如果此時系統斷電,S3狀態下沒有保存的數據會丟失,而S4狀態下不會影響。

  G2(S5):稱為Soft Off。此狀態和下面所所述的G3(S6)類似,不過在這個狀態下,系統仍可以被部分設備(如鍵盤等)喚醒。

  G3(S6):稱為Mechanical Off。此狀態下所有部件斷電,需要再次按下電源鍵才能喚醒。

amocity
amocity

  


  雖然看起來我們一直沒有提到重啟,但從ACPI規範下計算機的幾種狀態,我們卻可以看出其不同的運行模式和喚醒模式,這和我們馬上要講到的重啟都是有關聯的。

  其實你可能想不到,重啟也分很多個種類,而我們平時最常接觸到的重啟,叫hard reset,其通過信號通知所有芯片、外圍網卡等等一起進行reset操作,使系統大多數寄存器重置到缺省值(默認值),而後CPU從reset vector 開始執行程序。

  在這個過程中系統不會完全斷電,不會進入G3(S6)的狀態,CPU在其它組件的協助下執行reset的相關程序。

  而關機再開機的過程中,系統會完全切斷電源,即進入G3(S6)的狀態,讓所有寄存器均恢複到初始狀態,整個過程需要執行的程序會更多,速度上也會更慢一些。

  03

  重啟和關機再開機該怎麼選擇?

  我們選擇重啟計算機,可能是計算機進行了軟件更新或者系統更新,亦或是系統的某個部件出了問題(就好比開頭處那張截圖裏遇到的問題)

  一般情況下,如果是系統希望我們進行重啟,那就按照要求進行重啟就行。因為在軟件或系統進行更新,計算機需要重新加載配置文件,這時候重啟會顯得更加得有針對性並且效率較高。

  而當計算機的部分功能出現障礙時,由於重啟無法保證所有寄存器都恢複到默認狀態,所以就會導致重啟也可能解決不了問題,所以這時候就需要通過關機的方式來嘗試解決。

  寫到這裏,小編也不禁感歎,計算機這個系統真的太過龐大,一個小小的操作背後都隱藏有如此豐富的知識點,真心佩服研究計算機這個領域的大佬們,向你們學習!

  參考資料

  <1> 高級配置與電源接口 - 維基百科

  <2> 計算機重啟的原理是什麼?- 知乎

  <3> Sindre G, Conradi R, Karlsson E A。
The REBOOT approach to software reuse
Journal of Systems and Software, 1995, 30(3): 201-212。

延伸閱讀
撩世界