TWI399637B - Fast switch machine method - Google Patents
Fast switch machine method Download PDFInfo
- Publication number
- TWI399637B TWI399637B TW098131936A TW98131936A TWI399637B TW I399637 B TWI399637 B TW I399637B TW 098131936 A TW098131936 A TW 098131936A TW 98131936 A TW98131936 A TW 98131936A TW I399637 B TWI399637 B TW I399637B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- storage
- computer system
- page
- sleep
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明係關於一種電腦系統開關機方法,特別是關於一種應用於電腦系統在進入省電模式後,可以快速開關機的方法。
一般電腦系統工作的狀態,除了正在執行作業系統與各種應用程式的模式外,更包含了省電模式,電腦系統進入休眠的目地一方面為結省電能的消耗,另一方面為降低系統工作的雜訊。
依據高等組態能源介面(Advanced Configuration & Power Interface,ACPI)的設計分類,最常見的休眠將為兩種型態,一種為Suspend To RAM(STR),稱為S3狀態,S3狀態為只對部份的揮發性記憶體持續供電,包括視訊記憶體(Frame Buffer)與主記憶體(Main Memory)等,其餘部分一律斷電。S3狀態具有兩個優點,一為電腦系統回返到全速運作的時間較快;另一為安全性較佳,當使用者的應用與操作屬於個人私密資料不希望回存至硬碟內時,即採用S3狀態。另一種為spend To Disk(STD),稱為S4狀態,S4狀態是將工作中的資料全部皆寫入到非揮發性記憶體內儲存,然後系統將全部斷電,S4的優點為其更為省電。
承上所述兩種休眠S3狀態與S4狀態,皆不盡完善,在進入S3狀態後,仍需提供電力給電腦系統中揮發性記憶體,以維持系統儲存的狀態;假設改採用S4狀態雖相較於S3狀態省電,但回返至電腦系統全速運作的速度較則相對於S3狀態緩慢許多。
有鑑於此,本發明係在針對上述之缺失,改良以上所述的休眠,提出一種快速開關機的方法,能夠於進入休眠時能減少目前記憶體使用量,進而增進電腦系統重新啟動至全速運作的反應效率。
本發明之主要目的係在提供一種快速開關機的方法,其係於電腦系統進入休眠時大量縮減目前系統中使用的記憶體數量,以減少主記憶體資料轉換存放至第二儲存裝置的資料量,進而增進電腦系統恢復至全速工作的速度。
本發明之另一目的係在提供一種快速開關機的方法,其係可預防電腦系統意外喪失電力時資料的遺失與受損的程度。
本發明之再一目的係在提供一種快速開關機的方法,其資料寫入或載回皆採用隨機存取處理的技術,將大幅提升電腦系統進入休眠或重新啟動彼此轉換時資料存取的速度。
為達到上述之目的,本發明提出之快速開關機的方法,係於一電腦系統進入休眠時,將區分至少一記憶體為複數個清白儲存頁與複數個非清白儲存頁,清白儲存頁係換出放棄儲存,非清白儲存頁係寫入休眠檔儲存於至少一第二儲存裝置之一切換空間中或一檔案系統中。當電腦系統重新啟動,電腦系統由切換空間與檔案系統載回休眠檔回復至記憶體,並且可從第二儲存裝置讀取資料,載回至記憶體。如此將縮減記憶體轉換存放至第二儲存裝置的資料量,加速電腦系統重新啟動恢復至全速工作的速率。
底下藉由具體實施例配合所附的圖式詳加說明,當更容易瞭解本發明之目的、技術內容、特點及其所達成之功效。
本發明提出一種快速開關機的方法,減少電腦系統進入休眠時記憶體裝置的使用數量,降低寫入第二儲存裝置資料量,以增進電腦系統進入休眠或重新啟動恢復至全速工作的速度,底下則將以較佳實施例詳述本發明之技術特徵。如第一圖所示,一電腦系統10係包含一計算處理器(CPU)12、一主記憶體(Main Memory)14與一第二儲存裝置(Secondary Storage)16。第二儲存裝置16係可為高速隨機存取記憶體裝置,如一快閃記憶體,主要用於儲存檔案系統(file system)18、切換空間(swap-space)20及休眠檔(hibernation file)22。
第二圖所示為本發明之快速開關機的方法流程圖,請同時參考第一圖之架構示意圖。首先,如步驟S30,於電腦系統10之操作系統(Operating System,OS)進入休眠模式,將以區或頁為單位,區分主記憶體14為清白儲存頁與非清白儲存頁,由於第二儲存裝置16存放具有與清白儲存頁相一致之備份,故換出之清白儲存頁係將放棄儲存,將透過一核心程序配置主記憶體14,控制該清白儲存頁係換出,核心程序可計算依據需換出之清白儲存頁的數量配置主記憶體14,並於該清白儲存頁係換出完成後,控制釋放該記憶體。為核心狀態(machine status)之非清白儲存頁將儲存至休眠檔22,並存放於第二儲存裝置16之切換空間20中或檔案系統18中。其中非清白儲存頁可依照位址排序,以合併連續位址之非清白儲存頁成一單一寫入命令。之後,如步驟S32,當電腦系統10重新啟動,電腦系統10從切換空間20與檔案系統18讀取休眠檔22,回復儲存休眠檔至主記憶體14,恢復系統狀態。最後,如步驟S34,電腦系統10將從第二儲存裝置16讀取資料載回至主記憶體14。
當執行中止至為快閃記憶體之第二儲存裝置16(Suspend-to-flash)的速度主要取決於需要寫入到非揮發記憶體(nonvolatile memory)的資料量的多寡。進入休眠之前換出(Swapping-before-hibernating)利用操作操作系統(Operating System,OS)中既有的記憶體管理技術,將大部分的記憶體頁(memory page)直接捨棄而不做任何的寫入動作,因此可以加速中止(suspend)的速度。回復(resume)的時候資料(data)將從三個地方取回,分別是休眠檔(hibernation file)22、切換空間(swap-space)20及檔案系統(file system)18,系統隸屬於核心(kernel)部分的主要資料(data)及編碼(code),在重新開機時立刻取回,而剩餘的資料則使用需求頁面調度(paging-on-demand)的方式取回使用者現階段所需的部分。由於使用者所需要的資料量通常遠小於系統在中止前記憶體中的所有資料量,因此可以加速回復(resume)的速度。
記憶體分頁(memory page)可分成三種,分別為自由分頁(free page)、匿名分頁(anonymous page)及指定分頁(named page)。自由分頁(free page)是系統當下未使用到的記憶體,自由分頁(free page)中的內容對系統而言毫無意義。匿名分頁(anonymous page)是程式在執行時期動態分配的記憶體,這部分的記憶體主要包含了堆疊(stack)和堆積(heap)二種。指定分頁(named page)則是檔案在主記憶體14中的副本。形式上它的行為類似於第二儲存裝置16的快取(cache)。指定分頁(named page)主要包含了執行檔(executable file)、動態連結庫(dynamic-linke library)在記憶體中的對應,或者程式使用記憶體對應至檔案(memory-mapped-file)將一個檔案映射到記憶體。
匿名分頁(anonymous page)及指定分頁(named page)都可能是清白儲存頁(clean page)或非清白儲存頁(dirty page)。非清白匿名分頁(dirty anonymous page)被換出(swap-out)時必須寫入到切換空間(swap-space)20。而非清白指定分頁(dirty named page)則被換出(swap-out)到檔案系統(file system)18。當操作系統(OS)需要換出(swap-out)一個清白儲存頁時,因為此分頁在第二儲存裝置16中必定有一個內容完全一致的副本,因此操作系統(OS)可以直接捨棄此分頁。
在系統開始執行suspend-to-flash時,大部分的分頁不需要做任何的寫回第二儲存裝置16的動作,這是由於大部分的分頁都是清白儲存頁。部分的分頁需要寫回到切換空間20或者檔案系統18中。剩下的分頁是非換出記憶體(non-swappable memory),這些分頁主要是操作系統(OS)的核心(kernel),或者程式為了效能的因素,將某些分頁設定為非換出(non-swappable)。非換出記憶體最後將被寫入到休眠檔(hibernation file)22。
重新開機時,系統在做完例行性硬體初始化動作及載入操作系統裝填器(OS loader)後,系統會判斷是否要從休眠(hibernation)的狀態回復或執行一般的開機動作。休眠檔(hibernation file)22中的資料將首先載入到主記憶體14中,完成了這個動作,操作系統(OS)即完成基本的開機動作。隨後依照使用者的需要,從檔案系統18及切換空間20中將之前的系統狀態載回。若再次執行swapping-before-hibernating,由於部分非清白儲存頁在上一次執行swapping-before-hibernating時已經寫入切換空間20,因此這個分頁就變成了清白儲存頁,並且之後計算處理器(CPU)12不再對此分頁作寫入的動作,故這個分頁不需要再次的寫入切換空間20。因此在第二次以後的swapping-before-hibernating執行速度將更加快速。
以快閃記憶體(flash)做為第二儲存裝置16透過最佳化技術,可在隨機存取(random access)上有近似於連續存取(sequential access)的表現。透過組合寫入(Write-combining)主要將記憶體頁在換出時所產生的小的隨機寫入(small random write),在實際寫入快閃記憶體前先排列(queue)起來,首先針對這些要寫出分頁的實體位址(physical address)做排序,排序後便可知道這些要被寫出的分頁中是否存在著連續範圍的寫出,之後便可以一個較大的寫入需要(write request)取代數個較小的寫入。藉此提昇swapping-before-hibernating的速度。
將換出分頁(swappable pages)寫回第二儲存裝置16可經向操作系統(OS)要求大量的記憶體,為了避免操作系統(OS)於分配記憶體時的最佳化動作影響到實際配置記憶體的數量。於每配置到一個分頁隨即會在此分頁寫入一個位元組(byte)的資料,以強制OS須立即配置physical memory給該program。藉此強迫操作系統(OS)將大部分的記憶體換出。隨後執行一連串的釋放(free)動作,將之前向系統要求的記憶體全數歸還給操作系統(OS)。經過這二個步驟以後,操作系統(OS)中大部分的分頁都會變成自由分頁(free page),而自由分頁(free page)不需要寫回到休眠檔(hibernation file)22。
此外,可直接在操作系統(OS)的核心(kernel)中要求配置記憶體,將透過核心程序(kernel function)立即配置所需的分頁,將不需要額外的寫入以強制操作系統(OS)真實的配發記憶體。在配置完記憶體後立即執行釋放的動作,系統將產生大量的自由分頁(free page)。由於藉由核心程序(kernel function)配置記憶體不需要額外的寫入動作。因此可以事先計算換出分頁的數量,藉此推算出需要配置多少記憶體。
另外,可直接操控操作系統(OS)中的換出器(swapper)機制。以Linux為例,在核心(kernel)中具有一記憶體管理程序,其係為shrink_all_memory程序,此程序將回收記憶體分頁,於呼叫其時傳入欲回收的分頁數量,其能夠在不影響系統穩定、使用者使用程式的情況下釋放出記憶體分頁。shrink_all_memory程序的機制為在核心(kernel)中有兩近來最少使用目錄(least_recently_used list,LRU list)分別為活動目錄(active list)及閒置目錄(inactive list),活動目錄(active list)包含了最近被存取過的分頁,閒置目錄(inactive list)則為有段時間沒有被存取的分頁。shrink_all_memory程序會先從閒置目錄(inactive list)開始回收,接著再回收活動目錄(active list)。利用shirink_all_memory程序,可以在不影響到系統核心的運作、使用者的程式下,盡可能的換出。
在Linux之核心(kernel)中,第二儲存裝置16會被視為一般的區塊輸入/輸出裝置(I/O device),而在我們將記憶體分頁換出到切換空間20時,將呼叫submit_bio程序其所接受的參數包含了要寫入的區段數量(sector number)、讀取/寫入指令(r/w command)、記憶體位址(memory address)、記憶體長度(memory length)等資訊。可以藉由攔截submit_bio程序對即將被換出的分頁再進行處理。
上述之即將被換出的分頁係由shirink_all_memory程序所決定,決定的依據為此分頁的使用情況而非此分頁在主記憶體14中的實體位址。我們將shirink_all_memory程序所產生的寫入需求先排列。再依照此分頁的實體記憶體位址進行排序,並進行合併,以減少存取輸入/輸出(I/O)的次數並增加此輸入/輸出(I/O)的需求大小(request size)。需求大小(request size)越大,將使得為快閃記憶體(flash)之第二儲存裝置16的寫入效能越好。
當一個記憶體分頁被換出時,核心(kernel)需要紀錄此分頁在切換空間20中所擺放的位置。使核心(kernel)能夠重新將此分頁從第二儲存裝置20載入。由於組合寫入(write-combining)將重新改寫shirink_all_memory程序,當每次執行完shirink_all_memory程序後,必須於確定了每個分頁寫入至切換空間20的位置後,再將資訊填入到分頁表格(page table)中的換出分頁鑑別符(swapped-out page identifier)。
以上所述之實施例僅係為說明本發明之技術思想及特點,其目的在使熟習此項技藝之人士能夠瞭解本發明之內容並據以實施,當不能以之限定本發明之專利範圍,即大凡依本發明所揭示之精神所作之均等變化或修飾,仍應涵蓋在本發明之專利範圍內。
10...電腦系統
12...計算處理器
14...主記憶體
16...第二儲存裝置
18...檔案系統
20...切換空間
22...休眠檔
第一圖為本發明之架構示意圖。
第二圖為本發明之處理步驟流程圖。
10...電腦系統
12...計算處理器
14...主記憶體
16...第二儲存裝置
18...檔案系統
20...切換空間
22...休眠檔
Claims (9)
- 一種快速開關機的方法,其係包括下列步驟:於一電腦系統進入休眠,該電腦系統係區分至少一記憶體為複數個清白儲存頁與複數個非清白儲存頁,且該清白儲存頁係換出放棄儲存,該非清白儲存頁係寫入休眠檔儲存於至少一第二儲存裝置之一切換空間中或一檔案系統中。 於該電腦系統重新啟動,該電腦系統由該切換空間與該檔案系統讀取該休眠檔,並將該休眠檔回復儲存至該記憶體;以及該電腦系統從該第二儲存裝置讀取資料,並載入該資料至該記憶體。
- 如申請專利範圍第1項所述之快速開關機的方法,其中在該電腦系統進入休眠的步驟中,於該清白儲存頁係換出完成後,將釋放該記憶體。
- 如申請專利範圍第2項所述之快速開關機的方法,其中在該電腦系統進入休眠的步驟中,將以一核心程序配置該記憶體,控制該清白儲存頁係換出,且於該清白儲存頁係換出完成後,控制釋放該記憶體。
- 如申請專利範圍第3項所述之快速開關機的方法,其中該核心程序可計算需換出之該清白儲存頁的數量,並依據該數量配置該記憶體。
- 如申請專利範圍第1項所述之快速開關機的方法,其中該第二儲存裝置係可為一快閃記憶體。
- 如申請專利範圍第1項所述之快速開關機的方法,其中該第二儲存裝置係可為高速隨機存取之記憶體裝置。
- 如申請專利範圍第1項所述之快速開關機的方法,其中其中在該電腦系統進入休眠的步驟中,該電腦系統可以區做為區分該記憶體之單位。
- 如申請專利範圍第1項所述之快速開關機的方法,其中該第二儲存 裝置係具有與該清白儲存頁相一致的備份存放。
- 如申請專利範圍第1項所述之快速開關機的方法,其中在該電腦系統進入休眠的步驟中,欲換出之該非清白儲存頁係將依位址排序,且將位址連續之該非清白儲存頁合併成一單一寫入命令,組合寫入(Writing combing)該第二儲存裝置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098131936A TWI399637B (zh) | 2009-09-22 | 2009-09-22 | Fast switch machine method |
KR1020100092274A KR101392062B1 (ko) | 2009-09-22 | 2010-09-20 | 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098131936A TWI399637B (zh) | 2009-09-22 | 2009-09-22 | Fast switch machine method |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201111966A TW201111966A (en) | 2011-04-01 |
TWI399637B true TWI399637B (zh) | 2013-06-21 |
Family
ID=43937686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098131936A TWI399637B (zh) | 2009-09-22 | 2009-09-22 | Fast switch machine method |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR101392062B1 (zh) |
TW (1) | TWI399637B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799498A (zh) * | 2011-05-27 | 2012-11-28 | 鸿富锦精密工业(深圳)有限公司 | 计算机状态快速切换方法及*** |
TW201327160A (zh) * | 2011-12-21 | 2013-07-01 | Ind Tech Res Inst | 於休眠機制之方法及其電腦系統 |
TWI514278B (zh) | 2012-09-19 | 2015-12-21 | Ind Tech Res Inst | 開機之映像檔之大小縮減方法及運算裝置 |
TWI646463B (zh) * | 2013-12-27 | 2019-01-01 | 財團法人工業技術研究院 | 休眠喚醒方法及電子裝置 |
TWI610239B (zh) | 2013-12-27 | 2018-01-01 | 財團法人工業技術研究院 | 休眠喚醒方法及電子裝置 |
KR102011059B1 (ko) * | 2015-03-20 | 2019-08-16 | 한국전자통신연구원 | 스냅샷 이미지 업데이트 장치 및 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW591373B (en) * | 2002-11-15 | 2004-06-11 | Acer Inc | Handheld device having sleep function and the operating method thereof |
US20050278523A1 (en) * | 2002-06-27 | 2005-12-15 | Microsoft Corporation | Apparatus and method to decrease boot time and hibernate awaken time of a computer system |
TW200619914A (en) * | 2004-09-03 | 2006-06-16 | Intel Corp | Storing system information in a low-latency persistent memory device upon transition to a lower-power state |
JP2008165553A (ja) * | 2006-12-28 | 2008-07-17 | Sony Corp | 情報処理装置および方法、並びにプログラム |
TW200937177A (en) * | 2008-02-29 | 2009-09-01 | Hon Hai Prec Ind Co Ltd | Method for switching work states of a computer |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003263366A (ja) | 2002-03-12 | 2003-09-19 | Hitachi Ltd | スワッピング制御方法及びその実施装置並びにその処理プログラム |
-
2009
- 2009-09-22 TW TW098131936A patent/TWI399637B/zh active
-
2010
- 2010-09-20 KR KR1020100092274A patent/KR101392062B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050278523A1 (en) * | 2002-06-27 | 2005-12-15 | Microsoft Corporation | Apparatus and method to decrease boot time and hibernate awaken time of a computer system |
TW591373B (en) * | 2002-11-15 | 2004-06-11 | Acer Inc | Handheld device having sleep function and the operating method thereof |
TW200619914A (en) * | 2004-09-03 | 2006-06-16 | Intel Corp | Storing system information in a low-latency persistent memory device upon transition to a lower-power state |
JP2008165553A (ja) * | 2006-12-28 | 2008-07-17 | Sony Corp | 情報処理装置および方法、並びにプログラム |
TW200937177A (en) * | 2008-02-29 | 2009-09-01 | Hon Hai Prec Ind Co Ltd | Method for switching work states of a computer |
Also Published As
Publication number | Publication date |
---|---|
TW201111966A (en) | 2011-04-01 |
KR101392062B1 (ko) | 2014-05-07 |
KR20110033066A (ko) | 2011-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8930732B2 (en) | Fast speed computer system power-on and power-off method | |
KR101713051B1 (ko) | 하이브리드 메모리 시스템, 및 그 관리 방법 | |
US7594073B2 (en) | Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state | |
TWI507870B (zh) | 虛擬機的記憶體管理方法和電腦系統 | |
TWI399637B (zh) | Fast switch machine method | |
KR102434170B1 (ko) | 하이브리드 메모리 시스템 | |
Song et al. | Efficient memory-mapped I/O on fast storage device | |
US20100251260A1 (en) | Pre-emptible context switching in a computing device | |
US20160062691A1 (en) | Method for controlling memory device to achieve more power saving and related apparatus thereof | |
US20070294550A1 (en) | Memory Management With Defragmentation In A Computing Device | |
KR20200123850A (ko) | 하이브리드 메모리 시스템 | |
US20150220452A1 (en) | System, Method and Computer-Readable Medium for Dynamically Mapping a Non-Volatile Memory Store | |
JP2014534520A (ja) | セグメント化されたキャッシュ | |
KR102443593B1 (ko) | 하이브리드 메모리 시스템 | |
Lo et al. | Swap-before-hibernate: a time efficient method to suspend an OS to a flash drive | |
CN112654965A (zh) | 动态模块的外部分页和交换 | |
In et al. | SWL: a search-while-load demand paging scheme with NAND flash memory | |
JP4792065B2 (ja) | データ記憶方法 | |
JP2010170328A (ja) | メモリ装置および計算機 | |
Park et al. | A new file system I/O mode for efficient user-level caching | |
Wu et al. | APP: Enabling soft real-time execution on densely-populated hybrid memory system | |
CN111373385B (zh) | 用于改进的进程切换的处理器和其方法 | |
Ryu et al. | Fast Application Launch on Personal {Computing/Communication} Devices | |
Lo et al. | Optimizing swap space for improving process response after system resume | |
JP2017123135A (ja) | グループ分けによる快速な起動、シャットダウン方法 |