1. gzyueqian
      18529173453

      Linux培訓(xùn)機(jī)構(gòu)揭秘Linux內(nèi)存管理的世界

      更新時間: 2019-04-16 16:33:34來源: 粵嵌教育瀏覽量:6310

             Linux是一個自由傳播和免費(fèi)試用的Unix操作系統(tǒng)。Linux可以運(yùn)行UNIX工具軟件、網(wǎng)絡(luò)協(xié)議和應(yīng)用程序,Linux是以靈活性和高效性著稱的。因?yàn)樗?dú)特的設(shè)計(jì)結(jié)構(gòu),所以它是可以在昂貴和平價的網(wǎng)站上運(yùn)行。那么Linux的內(nèi)存管理是怎么樣的呢?現(xiàn)在Linux培訓(xùn)機(jī)構(gòu)就給大家講講。

        Linux高端內(nèi)存的劃分:

        內(nèi)核直接映射空間 PAGE_OFFSET~VMALLOC_START,kmalloc和__get_free_page()分配的是這里的頁面。二者是借助slab分配器,直接分配物理頁再轉(zhuǎn)換為邏輯地址(物理地址連續(xù))。適合分配小段內(nèi)存。此區(qū)域 包含了內(nèi)核鏡像、物理頁框表mem_map等資源。

        內(nèi)核動態(tài)映射空間 VMALLOC_START~VMALLOC_END,被vmalloc用到,可表示的空間大。

        內(nèi)核映射空間 PKMAP_BASE ~ FIXADDR_START,kmap

        內(nèi)核臨時映射空間 FIXADDR_START~FIXADDR_TOP,kmap_atomic

        當(dāng)我們需要order(1)的空閑頁面塊時,則執(zhí)行以下步驟:

        1、初始空閑鏈表為:

          order(0): 5, 10

        order(1): 8 [8,9]

        order(2): 12 [12,13,14,15]

        order(3):


        2、從上面空閑鏈表中,我們可以看出,order(1)鏈表上,有一個空閑的頁面塊,把它分配給用戶,并從該鏈表中刪除。

        3、當(dāng)我們再需要一個order(1)的塊時,同樣我們從order(1)空閑鏈表上開始掃描。

        4、若在order(1)上沒有空閑頁面塊,那么我們就到更高的級別(order)上找,order(2)。

        5、此時(order(1)上沒有空閑頁面塊)有一個空閑頁面塊,該塊是從頁面12開始。該頁面塊被分割成兩個稍微小一些order(1)的頁面塊,[12,13]和[14,15]。[14,15]頁面塊加到order(1)空閑鏈表中,同時[12,13]頁面塊返回給用戶。

        6、終空閑鏈表為:

        order(0): 5, 10

        order(1): 14 [14,15]

        order(2):

        order(3):

        因?yàn)閮?nèi)存映射先要獲得被映射的物理地址,然后才能將其映射到要求的用戶虛擬地址上。我們已經(jīng)看到內(nèi)核物理內(nèi)存映射區(qū)域中的地址可以被內(nèi)核函數(shù)virt_to_phys轉(zhuǎn)換成實(shí)際的物理內(nèi)存地址,但對于vmalloc分配的內(nèi)核虛擬地址無法直接轉(zhuǎn)化成物理地址,所以我們必須對這部分虛擬內(nèi)存格外“照顧”——先將其轉(zhuǎn)化成內(nèi)核物理內(nèi)存映射區(qū)域中的地址,然后在用virt_to_phys變?yōu)槲锢淼刂贰?br />
        轉(zhuǎn)化工作需要進(jìn)行如下步驟:

        找到vmalloc虛擬內(nèi)存對應(yīng)的頁表,并尋找到對應(yīng)的頁表項(xiàng)。

        獲取頁表項(xiàng)對應(yīng)的頁面指針

        通過頁面得到對應(yīng)的內(nèi)核物理內(nèi)存映射區(qū)域地址。

        Linux內(nèi)存管理的知識今天Linux培訓(xùn)機(jī)構(gòu)就和大家講解這么多了,想要學(xué)習(xí)Linux的更多知識,可以來我們粵嵌科技來咨詢。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 午夜福利92国语 | 思思热视频精品在线播放 | 伊人久久大线影院首页 | 亚洲日韩乱码人人爽人人澡人人 | 人人狠狠综合久久88亚洲 | 亚洲乱码AⅤ日本电影 |