Linux系統(tǒng)提供了復(fù)雜的存儲管理系統(tǒng),使得進(jìn)程所能訪問的內(nèi)存達(dá)到4GB。在Linux系統(tǒng)中,進(jìn)程的4GB內(nèi)存空間被分為兩個部分——用戶空間與內(nèi)核空間。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)興安盟,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
在其他情況下,物理內(nèi)存的大小超過虛擬內(nèi)存的最大可尋址大小,需要采取特殊措施來訪問部分內(nèi)存。還有些情況,物理內(nèi)存的尺寸超過了虛擬內(nèi)存的最大可尋址尺寸,需要采取特殊措施來訪問部分內(nèi)存。
程序是直接運(yùn)行在物理內(nèi)存上的。換句話說,就是程序在運(yùn)行的過程中訪問的都是物理地址。
Linux 中內(nèi)存主要有匿名內(nèi)存和 Page Cache 兩種。
1) __builtin_constant_p 編譯器內(nèi)聯(lián)函數(shù),判斷傳入?yún)?shù)是否為常量。如果是變量,直接調(diào)用 __kmalloc 函數(shù)。
本文介紹Linux內(nèi)核內(nèi)存分配函數(shù): kzalloc() 和 kcalloc() 。文件: include/linux/slab.h ,定義如下:kzalloc() 函數(shù)功能同 kmalloc() 。區(qū)別:內(nèi)存分配成功后清零。
kmem_cache和kmalloc的部分不會被換出,因?yàn)橛眠@兩個函數(shù)分配的內(nèi)存多用于保持內(nèi)核關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)。內(nèi)核態(tài)中vmalloc分配的部分會被換出,因而當(dāng)訪問的時候,發(fā)現(xiàn)不在,就會調(diào)用do_page_fault。
這個時候如果去讀申請的內(nèi)存,內(nèi)容全部是0,這個頁面的映射是只讀的。只有當(dāng)寫到某個頁面的時候,內(nèi)核才在頁錯誤后,真正把這個頁面給這個進(jìn)程。
使用kmalloc()申請的內(nèi)存應(yīng)使用kfree()釋放,這個函數(shù)的用法和用戶空間的free()類似。
首先打開Linux命令窗口,可使用快捷鍵Ctrl+Alt+T打開。這時查看一下當(dāng)前Linux系統(tǒng)內(nèi)存使用情況,使用命令:Free –m,total 內(nèi)存總數(shù),used 已經(jīng)使用的內(nèi)存數(shù),free 空閑的內(nèi)存數(shù)。
/boot 分區(qū)是系統(tǒng)啟動所需要的文件,就跟windows的C盤中的windows目錄類似,這個分區(qū)中的文件并不大,只需要100M足夠。Swap分區(qū)是交換分區(qū),當(dāng)內(nèi)存不夠時,系統(tǒng)會把這部分空間當(dāng)內(nèi)存使用。
劃分的空間與我們計(jì)劃劃分相同,最后輸入w回車,進(jìn)行保存退出。再次使用fdisk -l命令就可以查看到磁盤hdb已經(jīng)分區(qū)成功。
SWAP 2G 臨時分區(qū),最大值也就是2G了,如果您的物理內(nèi)存足夠大,比如512M或者1G以上,SWAP可以設(shè)置得小一點(diǎn)。