對初學(xué)者而言,可以將內(nèi)核與任務(wù)分開,標(biāo)準(zhǔn)的Linux內(nèi)核通常駐留在內(nèi)存中,每一個(gè)應(yīng)用程序程序都是從磁盤運(yùn)到內(nèi)存上執(zhí)行。當(dāng)程序結(jié)束后,它所占用的內(nèi)存就被釋放,程序就被下載了。在一個(gè)嵌入式系統(tǒng)里,可能沒有磁盤。有兩種途徑可以消除對磁盤的依賴,這要看系統(tǒng)的復(fù)雜性和硬件的設(shè)計(jì)。在一個(gè)簡單的系統(tǒng)里,當(dāng)系統(tǒng)啟動后,內(nèi)核和所有的應(yīng)用程序都在內(nèi)存里。這就是大多數(shù)傳統(tǒng)的嵌入式系統(tǒng)工作模式,它同樣可以被Linux支持。有了Linux,就有了第二種可能性。因?yàn)長inux已經(jīng)有能力加載和卸載程序,一個(gè)嵌入式系統(tǒng)就可以利用它來節(jié)省內(nèi)存。試想一個(gè)典型的包括一個(gè)大概8MB到16MB的Flash Memory和8MB內(nèi)存的系統(tǒng)。Flash Memory可以作為一個(gè)文件系統(tǒng)。Flash Memory驅(qū)動程序用來連接Flash Memory和文件系統(tǒng)。作為替代也可使用Flash Disk,用工具軟件可把Flash Memory仿真為磁盤或部分。
所有的程序都以文件形式存儲在Flash文件中,需要時(shí)可以裝入內(nèi)存。這種動態(tài)的、根據(jù)需要加載的能力是支持其它一系列功能的重要特征:
1. 它使初始化代碼在系統(tǒng)引導(dǎo)后被釋放。Linux同樣有很多內(nèi)核外運(yùn)行的公用程序。這些通常程序在初始化時(shí)運(yùn)行一次,以后就不再運(yùn)行。而且,這些公用程序可以用它們相互共有的方式,一個(gè)接一個(gè)按順序運(yùn)行。這樣,相同內(nèi)存空間可以被反復(fù)使用以調(diào)入每一個(gè)程序,就象系統(tǒng)引導(dǎo)一樣。這的確可以節(jié)省內(nèi)存,特別是那些配置一次以后就不再更改的網(wǎng)絡(luò)堆棧。如果Linux可加載模塊的功能包括在內(nèi)核里,驅(qū)動程序和應(yīng)用程序就都可以被加載。它可以檢查硬件環(huán)境并且為硬件裝上相應(yīng)的軟件。這就消除了用一個(gè)程序占用許多Flash Memory來處理多種硬件的復(fù)雜性。
2. 軟件的升級更模塊化。你可以在系統(tǒng)運(yùn)行的時(shí)候在Flash上升級應(yīng)用程序和可加載驅(qū)動程序。
3. 配置信息和運(yùn)行時(shí)間參數(shù)可以作為數(shù)據(jù)文件儲存在Flash上。