進(jìn)程冷啟動和熱啟動的區(qū)別
很多個會發(fā)現(xiàn),在程序第一次啟動(冷啟動)退出后,接下來程序啟動(熱啟動)速度明顯要比第一次啟動快,這是為什么呢?
其實(shí)這和Linux 操作系統(tǒng)的內(nèi)存 Cache 機(jī)制有關(guān)。
在程序第一次啟動、退學(xué)出后,進(jìn)程雖然被銷毀了,但是進(jìn)程代碼段所占用的物理內(nèi)存并沒有被銷毀,
而是被 LINUX 緩存起來了,保存在Cache 中。
這樣當(dāng)程序再次被啟動時,在進(jìn)程運(yùn)行過程中,指令不必再從Flash 中讀取到內(nèi)存中,而是直接使用LInux 內(nèi)核Cache 緩存的代碼,
這樣減少了在程序啟動過程中所產(chǎn)生的page fault ,從而加快了進(jìn)程的啟動速度。
因此,進(jìn)程冷啟動和熱啟動速度上的差別,主要在于啟動進(jìn)程中其所動行到的進(jìn)程和動態(tài)庫的代碼段所產(chǎn)生的page-fault 的多少,這與代碼段的大小有關(guān),也與該動態(tài)庫是否被其他進(jìn)程加載并使用有關(guān)。