iOS 和 OS X 是如何做到瞬間從深度休眠中喚醒?

按照我個人理解iOS和OSX休眠一開始是類似於Windows的sleep,即休眠到內存(str),關閉除內存以外的設備。再過一定的時間後轉入深度睡眠,類似於Windows的hibernate,即休眠到磁碟,把內存數據拷貝到磁碟上(對iOS來說就是內置快閃記憶體),然後把內存也斷電來達到最大限度省電的目的。

休眠時候好理解,喚醒時候我就不懂了。如果是瞬間從內存喚醒那很好理解,但Windows從hibernate狀態喚醒的話,會顯示一個resume屏幕,同時把數據從磁碟讀回到內存,這個過程即使對於ssd來說也要好幾秒鐘。iOS和OSX是如何做的深度休眠幾周後,點亮屏幕後瞬間即可用的呢?


OS X是有3種睡眠方式(其實是5種,另兩種對普通用戶沒有意義),在終端(Terminal.app)裡面輸入pmset -g ,可以查詢當前電源模式,其中hibernatemode 代表睡眠模式
0-老式睡眠模式

睡眠期間內存加電,禁用safe sleep(安全睡眠),超快速喚醒。(這與windows的睡眠類似),默認iMac,MacPro之類桌面Mac是採用0睡眠模式。

1-休眠模式(老式的Macbook)

內存中的數據將寫入到磁碟上,系統在所謂的「睡眠」時將完全關閉
因為需要讀取先前保存在硬碟中的內存數據,所以喚醒較慢(這對應了windows的休眠,把數據寫入硬碟的sleepimage文件中,佔用大小與你的內存大小相同。)

3-睡眠模式(2005年秋季之後機器默認採用的,一般是Macbook系列)

睡眠過程中,內存保持通電狀態,同時內存數據在進入睡眠模式之前同樣要寫入到硬碟

萬一沒有外接電源並且電池也完全沒電了的話,系統將自動進入休眠模式(這在部分裝有OEM定製軟體,比如華碩,聯想的智能省電模式可以實現,Windows8似乎也支持這個-不太清楚望知道的幫忙修改一下)

windows下面的睡眠有時候會受到軟體因素而有問題,而且部分會導致睡眠中斷直接進入睡眠……(這不是系統問題是軟體問題)OS X其實睡眠也不穩定。至於你說的那個resume屏幕我似乎沒見過,不過windows8喚醒確實有一個登錄頁面。。不知是否是這個(OS X不是也有登錄頁面么)


是這樣的。現在幾乎所有的(無論是PC還是Mac)筆記本,都帶有所謂的「混合睡眠」功能。

傳統的休眠是指:

·首先,計算機將內存里的東西轉儲到硬碟上。

·然後,計算機會完全關閉計算機的電源。在休眠過程中的耗電情況和關機時是一樣的:幾乎不消耗電量。

·在下一次「喚醒」時,其實就是先開機,然後把之前轉儲的內存狀態恢復。


這樣一來你就可以恢復系統運行的狀況了。

然而,休眠的問題在於,每次休眠、喚醒時都要經歷一次轉儲內存、恢復內存的過程。在大內存的時代,如果你沒有夠快的硬碟,這就會很蛋疼……就算你有了SSD,當你有16G 32G內存的時候,這個過程也挺長啊……。


所以當你使用HDD、慢速SSD的時候,只要經歷了休眠這樣一個過程,不論是傳統休眠了,還是混合睡眠後休眠了,的確可能出現resume屏幕。


傳統的睡眠是指:

·計算機將CPUGPU等等各大耗電大戶給斷電掉,僅僅保持內存供電。

·由於內存是易失性的,所以必須帶電保存。

·因而,在睡眠過程中也會耗電。

·在喚醒時,由於數據全都在內存里,只要給CPU GPU 屏幕什麼的通上電就可以了,因而速度非常快。


不過據我所知早年的一些筆記本,可以睡眠睡到沒電,下次開機的時候之前打開的東西就全沒了…

所以現在各大廠商都推出了混合休眠

混合休眠是指:

·首先,計算機進入睡眠狀態。

·然後,由主板上的某個專職晶元來保持監測電量水平,或者是睡眠時間。當電量水平低到一定程度,或者睡眠了太長時間以後,這顆晶元會喚醒操作系統一下,操作系統此時會將內存轉儲至硬碟,從而進入休眠

·這樣在你喚醒時:如果計算機沒有進入休眠的話,那就很快,如果進入了休眠,那就稍微慢一些。


總的來說是把兩者的優點互補了。

按照我個人理解iOS和OSX休眠一開始是類似於Windows的sleep,即休眠到內存(str),關閉除內存以外的設備。再過一定的時間後轉入深度睡眠,類似於Windows的hibernate,即休眠到磁碟,把內存數據拷貝到磁碟上(對iOS來說就是內置快閃記憶體),然後把內存也斷電來達到最大限度省電的目的。


休眠時候好理解,喚醒時候我就不懂了。如果是瞬間從內存喚醒那很好理解,但Windows從hibernate狀態喚醒的話,會顯示一個resume屏幕,同時把數據從磁碟讀回到內存,這個過程即使對於ssd來說也要好幾秒鐘。iOS和OSX是如何做的深度休眠幾周後,點亮屏幕後瞬間即可用的呢?

所以題主你的理解問題很多啊……首先Windows老早老早老早就支持混合休眠了……市面上幾乎所有的筆記本也都支持混合休眠。


其次,iOS的休眠不是你說的那樣。鎖屏時根本就不是睡眠也不是休眠。因為CPU仍然在通電保持運轉,基帶也是。。。只是CPU可能會降頻罷了。它就是在正常運行。


最後,OSX「瞬間可用」,是因為你當時沒把內存佔滿。你要是休眠之前內存佔用大一些,就能感受到遲緩了。

==============================

順便說說睡眠後的穩定性的問題。一般來說會出問題都是第三方軟體造成的,不論OSX還是Win都無法避免。


Windows不清楚,OSX在台式機上是只對內存供電,不會寫入磁碟,在筆記本上是內存硬碟各存一份已備安全,不意外斷電的情況下喚醒時直接從內存讀取恢復。


休眠和睡眠最大的問題就是硬體驅動,windows特別嚴重,因為硬體特別多。而MAC OSX要好多了,因為硬體都是已知的,但就是這樣也有啟動不了的時候。


推薦閱讀:

如何優雅地使用 Windows 10 ?
為什麼現在的操作系統都沒有提供對農曆的原生支持?
好奇號的固件刷新是一個怎樣的過程?為什麼需要在著陸之後幾天給它刷新系統?
請問,多個線程可以讀一個變數,只有一個線程可以對這個變數進行寫,到底要不要加鎖?
動不動就 32GB 以上內存的伺服器真需要關心內存碎片問題嗎?

TAG:macOS | iOS | 蘋果公司(AppleInc.) | 操作系統 |