前兩天小編在刷pyq的時候,看到了一朋友發的一張與客服的對話截圖:
真是Amazing!雖然先前小編就有聽說重啟和關機後再開機不一樣,但當電腦跳出“需要重啟”的彈窗時,我依舊會選擇“稍後重啟”,然後在使用完電腦後關機,下次使用時開機,當作重啟……
小編當時還天真地以為,這樣既沒有打斷正在進行的工作,還完成了重啟,可謂是做到了效率的最大化……
今天親眼見證了兩種方式所帶來的不同結果,小編決心好好探索一下:
“重啟”和“關機後再開機”到底有哪些不同?
01
定性來看
從最表層看,當我們點選“重啟”後,計算機會自動進行登出使用者、關閉系統、重新開啟並裝載系統等操作,主機似乎停了一下,但並沒有完全關閉;
而選擇關機再開機,不僅中途主機會完全關閉,我們還要手動按一下主機上的電源鍵才能再次將系統開啟。
所以從操作手段上,關機再開機相比重啟要多按一次按鈕;從主機經歷的過程上看,關機再開機相比重啟經歷得更多。Emmm,似乎說了一段廢話……
不過透過主機呈現出的不同狀態,我們應該能感覺到兩者肯定是有不同的。
在主機沒有完全關閉的背後,究竟還藏著什麼不為人知的秘密?
02
定量來看
想要深挖計算機重啟背後的秘密,就要知道計算機在重啟過程中都發生了什麼。
首先我們來看看,作業系統是透過什麼來區分重啟和關機再開機的,這裡就要引入一個概念——高階配置電源管理介面(Advanced Configuration and Power Interface),簡稱ACPI。
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。此狀態下所有部件斷電,需要再次按下電源鍵才能喚醒。
雖然看起來我們一直沒有提到重啟,但從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[J]. Journal of Systems and Software, 1995, 30(3): 201-212.
編輯:Eric