前兩天小編在刷pyq的重启再开時候,看到了一朋友發的关机一張與客服的對話截圖:
真是Amazing!雖然先前小編就有聽說重啟和關機後再開機不一樣,重启再开但當電腦跳出“需要重啟”的关机彈窗時,我依舊會選擇“稍後重啟”,重启再开然後在使用完電腦後關機,关机下次使用時開機,重启再开當作重啟…… 小編當時還天真地以為,关机這樣既沒有打斷正在進行的重启再开工作,還完成了重啟,关机可謂是重启再开做到了效率的最大化…… 今天親眼見證了兩種方式所帶來的不同結果,小編決心好好探索一下: “重啟”和“關機後再開機”到底有哪些不同?关机 01 定性來看 從最表層看,當我們點擊“重啟”後,重启再开計算機會自動進行注銷用戶、关机關閉係統、重启再开重新打開並裝載係統等操作,主機似乎停了一下,但並沒有完全關閉; 而選擇關機再開機,不僅中途主機會完全關閉,我們還要手動按一下主機上的電源鍵才能再次將係統開啟。 所以從操作手段上,關機再開機相比重啟要多按一次按鈕;從主機經曆的過程上看,關機再開機相比重啟經曆得更多。Emmm,似乎說了一段廢話…… 不過通過主機呈現出的不同狀態,我們應該能感覺到兩者肯定是有不同的。 在主機沒有完全關閉的背後,究竟還藏著什麽不為人知的秘密? 02 定量來看 想要深挖計算機重啟背後的秘密,就要知道計算機在重啟過程中都發生了什麽。 首先我們來看看,操作係統是通過什麽來區分重啟和關機再開機的,這裏就要引入一個概念——高級配置電源管理接口(AdvancedConfigurationandPowerInterface),簡稱ACPI。 ACPI是1997年由多家公司共同提出、製定的操作係統電源管理、硬件配置接口,是一種開放標準。 ACPI整體框架圖 相信大家看到上圖的感覺一定是非常頭大,因為小編自己也一樣(狗頭) 不過我們今天不是去深挖ACPI的,而是看ACPI是如何決定計算機的重啟的。 ACPI規範定義了一台兼容ACPI的計算機係統可以有以下七個狀態(所謂的全局狀態): G0(S0):正常工作狀態。計算機的正常工作狀態-操作係統和應用程序都在運行。 G1:睡眠。這個狀態還可以再細分為以下幾種: (1)S0ix:ModernStandby。在這種睡眠狀態下,計算機還能聯網,音樂還可以播放,其餘大部分應用處於暫停的狀態,輕按任意鍵即可登錄賬戶並進入工作狀態。 (2)S1:比較耗電的睡眠模式。CPU的所有寄存器被刷新,並且停止執行指令,但CPU和內存的電源會被維持。 (3)S2:一種比S1更深的睡眠狀態,會停止CPU的電源供應,這種模式通常不被采用。 (4)S3:稱為SuspendtoRAM,簡稱STR。這個模式就是我們計算機上常見的“睡眠” (5)S4:稱為SuspendtoDisk,也是我們常說的“休眠”,其和S3的差別在於,S4消耗的時間更長,而且如果此時係統斷電,S3狀態下沒有保存的數據會丟失,而S4狀態下不會影響。 G2(S5):稱為SoftOff。此狀態和下麵所所述的G3(S6)類似,不過在這個狀態下,係統仍可以被部分設備(如鍵盤等)喚醒。 G3(S6):稱為MechanicalOff。此狀態下所有部件斷電,需要再次按下電源鍵才能喚醒。 雖然看起來我們一直沒有提到重啟,但從ACPI規範下計算機的幾種狀態,我們卻可以看出其不同的運行模式和喚醒模式,這和我們馬上要講到的重啟都是有關聯的。 其實你可能想不到,重啟也分很多個種類,而我們平時最常接觸到的重啟,叫hardreset,其通過信號通知所有芯片、外圍網卡等等一起進行reset操作,使係統大多數寄存器重置到缺省值(默認值),而後CPU從resetvector開始執行程序。 在這個過程中係統不會完全斷電,不會進入G3(S6)的狀態,CPU在其它組件的協助下執行reset的相關程序。 而關機再開機的過程中,係統會完全切斷電源,即進入G3(S6)的狀態,讓所有寄存器均恢複到初始狀態,整個過程需要執行的程序會更多,速度上也會更慢一些。 03 重啟和關機再開機該怎麽選擇? 我們選擇重啟計算機,可能是計算機進行了軟件更新或者係統更新,亦或是係統的某個部件出了問題(就好比開頭處那張截圖裏遇到的問題) 一般情況下,如果是係統希望我們進行重啟,那就按照要求進行重啟就行。因為在軟件或係統進行更新,計算機需要重新加載配置文件,這時候重啟會顯得更加得有針對性並且效率較高。 而當計算機的部分功能出現障礙時,由於重啟無法保證所有寄存器都恢複到默認狀態,所以就會導致重啟也可能解決不了問題,所以這時候就需要通過關機的方式來嚐試解決。 寫到這裏,小編也不禁感歎,計算機這個係統真的太過龐大,一個小小的操作背後都隱藏有如此豐富的知識點,真心佩服研究計算機這個領域的大佬們,向你們學習! 參考資料 [1] 高級配置與電源接口-維基百科 [2] 計算機重啟的原理是什麽?-知乎 [3]SindreG,ConradiR,KarlssonEA。TheREBOOTapproachtosoftwarereuse[J]。JournalofSystemsandSoftware,1995,30(3):201-212。 本文轉自中科院物理所