Linux與Windows NT在內(nèi)存管理上的差別
在內(nèi)存管理上,Linux 和Windows NT在面對相同的進(jìn)程地址空間大小時(shí),對內(nèi)存布局的使用方式不同。Windows NT實(shí)際只為進(jìn)程準(zhǔn)備了2GB弱的可用虛擬地址空間,而Linux中的進(jìn)程地址空間使用更靈活些。
在虛擬內(nèi)存的使用上,Linux內(nèi)核為用戶管理了非常多的細(xì)節(jié)問題,用戶可以認(rèn)為自己真正擁有4GB地址空間,而不用關(guān)心虛擬內(nèi)存是否提交物理存儲(chǔ)等問題。Windows NT則為程序員提供了多種虛擬內(nèi)存使用方案,雖然這些方案的使用有些復(fù)雜,但卻提供了一定程度上的靈活性。它也支持DOS和Win16程序的執(zhí)行,但為了提供這種兼容性,它的內(nèi)存管理付出了極高的性能代價(jià)。
Linux 和Windows NT雖然均提供了內(nèi)存共享技術(shù),但它們的實(shí)現(xiàn)有些細(xì)微的差別。Linux提供給用戶的接口非常簡單,只需將自己的虛擬內(nèi)存空間區(qū)域附加到共享內(nèi)存對象之上。Windows NT則是通過內(nèi)存映射文件提供共享內(nèi)存機(jī)制,從使用上講,略顯復(fù)雜。
Linux的內(nèi)存交換管理靈活性很強(qiáng),用戶可以在普通的文件系統(tǒng)上建立“無洞”的文件作為交換空間,還可以使用多個(gè)交換文件,從而可以動(dòng)態(tài)增加交換文件。它也提供了利用交換分區(qū)作為交換空間的方法,此方法是優(yōu)選的交換空間方案。Windows NT的頁面文件很難擺脫碎片化的危險(xiǎn),為了保證它采用無碎片的頁面文件,必須采取一定的措施。
Linux 和Windows NT在高速緩存的使用上有一些共同之處,均盡量采用系統(tǒng)的全部空閑RAM作為高速緩存區(qū)域,但Linux在高速緩存管理上有一些獨(dú)到之處,這是它性能之所以高的根本原因所在。