0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于Linux內(nèi)存模型的介紹

Linux閱碼場(chǎng) ? 來源:未知 ? 作者:工程師郭婷 ? 2018-07-18 16:26 ? 次閱讀

一、前言

linux內(nèi)核中支持3中內(nèi)存模型,分別是flat memory model,Discontiguous memory model和sparse memory model。所謂memory model,其實(shí)就是從cpu的角度看,其物理內(nèi)存的分布情況,在linux kernel中,使用什么的方式來管理這些物理內(nèi)存。

二、和內(nèi)存模型相關(guān)的術(shù)語

1、什么是page frame?

操作系統(tǒng)最重要的作用之一就是管理計(jì)算機(jī)系統(tǒng)中的各種資源,做為最重要的資源:內(nèi)存,我們必須管理起來。在linux操作系統(tǒng)中,物理內(nèi)存是按照page size來管理的,具體page size是多少是和硬件以及l(fā)inux系統(tǒng)配置相關(guān)的,4k是最經(jīng)典的設(shè)定。因此,對(duì)于物理內(nèi)存,我們將其分成一個(gè)個(gè)按page size排列的page,每一個(gè)物理內(nèi)存中的page size的內(nèi)存區(qū)域我們稱之page frame。我們針對(duì)每一個(gè)物理的page frame建立一個(gè)struct page的數(shù)據(jù)結(jié)構(gòu)來跟蹤每一個(gè)物理頁面的使用情況:是用于內(nèi)核的正文段?還是用于進(jìn)程的頁表?是用于各種file cache還是處于free狀態(tài)……

每一個(gè)page frame有一個(gè)一一對(duì)應(yīng)的page數(shù)據(jù)結(jié)構(gòu),系統(tǒng)中定義了page_to_pfn和pfn_to_page的宏用來在page frame number和page數(shù)據(jù)結(jié)構(gòu)之間進(jìn)行轉(zhuǎn)換,具體如何轉(zhuǎn)換是和memory modle相關(guān),我們會(huì)在第三章詳細(xì)描述linux kernel中的3種內(nèi)存模型。

2、什么是PFN?

對(duì)于一個(gè)計(jì)算機(jī)系統(tǒng),其整個(gè)物理地址空間應(yīng)該是從0開始,到實(shí)際系統(tǒng)能支持的最大物理空間為止的一段地址空間。在ARM系統(tǒng)中,假設(shè)物理地址是32個(gè)bit,那么其物理地址空間就是4G,在ARM64系統(tǒng)中,如果支持的物理地址bit數(shù)目是48個(gè),那么其物理地址空間就是256T。當(dāng)然,實(shí)際上這么大的物理地址空間并不是都用于內(nèi)存,有些也屬于I/O空間(當(dāng)然,有些cpu arch有自己獨(dú)立的io address space)。因此,內(nèi)存所占據(jù)的物理地址空間應(yīng)該是一個(gè)有限的區(qū)間,不可能覆蓋整個(gè)物理地址空間。不過,現(xiàn)在由于內(nèi)存越來越大,對(duì)于32位系統(tǒng),4G的物理地址空間已經(jīng)無法滿足內(nèi)存的需求,因此會(huì)有high memory這個(gè)概念,后續(xù)會(huì)詳細(xì)描述。

PFN是page frame number的縮寫,所謂page frame,就是針對(duì)物理內(nèi)存而言的,把物理內(nèi)存分成一個(gè)個(gè)的page size的區(qū)域,并且給每一個(gè)page 編號(hào),這個(gè)號(hào)碼就是PFN。假設(shè)物理內(nèi)存從0地址開始,那么PFN等于0的那個(gè)頁幀就是0地址(物理地址)開始的那個(gè)page。假設(shè)物理內(nèi)存從x地址開始,那么第一個(gè)頁幀號(hào)碼就是(x>>PAGE_SHIFT)。

3、什么是NUMA?

在為multiprocessors系統(tǒng)設(shè)計(jì)內(nèi)存架構(gòu)的時(shí)候有兩種選擇:一種就是UMA(Uniform memory access),系統(tǒng)中的所有的processor共享一個(gè)統(tǒng)一的,一致的物理內(nèi)存空間,無論從哪一個(gè)processor發(fā)起訪問,對(duì)內(nèi)存地址的訪問時(shí)間都是一樣的。NUMA(Non-uniform memory access)和UMA不同,對(duì)某個(gè)內(nèi)存地址的訪問是和該memory與processor之間的相對(duì)位置有關(guān)的。例如,對(duì)于某個(gè)節(jié)點(diǎn)(node)上的processor而言,訪問local memory要比訪問那些remote memory的速度要快。

三、Linux 內(nèi)核中的三種memory model

1、什么是FLAT memory model?

如果從系統(tǒng)中任意一個(gè)processor的角度來看,當(dāng)它訪問物理內(nèi)存的時(shí)候,物理地址空間是一個(gè)連續(xù)的,沒有空洞的地址空間,那么這種計(jì)算機(jī)系統(tǒng)的內(nèi)存模型就是Flat memory。這種內(nèi)存模型下,物理內(nèi)存的管理比較簡(jiǎn)單,每一個(gè)物理頁幀都會(huì)有一個(gè)page數(shù)據(jù)結(jié)構(gòu)來抽象,因此系統(tǒng)中存在一個(gè)struct page的數(shù)組(mem_map),每一個(gè)數(shù)組條目指向一個(gè)實(shí)際的物理頁幀(page frame)。在flat memory的情況下,PFN(page frame number)和mem_map數(shù)組index的關(guān)系是線性的(有一個(gè)固定偏移,如果內(nèi)存對(duì)應(yīng)的物理地址等于0,那么PFN就是數(shù)組index)。因此從PFN到對(duì)應(yīng)的page數(shù)據(jù)結(jié)構(gòu)是非常容易的,反之亦然,具體可以參考page_to_pfn和pfn_to_page的定義。此外,對(duì)于flat memory model,節(jié)點(diǎn)(struct pglist_data)只有一個(gè)(為了和Discontiguous Memory Model采用同樣的機(jī)制)。下面的圖片描述了flat memory的情況:

關(guān)于Linux內(nèi)存模型的介紹

需要強(qiáng)調(diào)的是struct page所占用的內(nèi)存位于直接映射(directly mapped)區(qū)間,因此操作系統(tǒng)不需要再為其建立page table。

2、什么是Discontiguous Memory Model?

如果cpu在訪問物理內(nèi)存的時(shí)候,其地址空間有一些空洞,是不連續(xù)的,那么這種計(jì)算機(jī)系統(tǒng)的內(nèi)存模型就是Discontiguous memory。一般而言,NUMA架構(gòu)的計(jì)算機(jī)系統(tǒng)的memory model都是選擇Discontiguous Memory,不過,這兩個(gè)概念其實(shí)是不同的。NUMA強(qiáng)調(diào)的是memory和processor的位置關(guān)系,和內(nèi)存模型其實(shí)是沒有關(guān)系的,只不過,由于同一node上的memory和processor有更緊密的耦合關(guān)系(訪問更快),因此需要多個(gè)node來管理。Discontiguous memory本質(zhì)上是flat memory內(nèi)存模型的擴(kuò)展,整個(gè)物理內(nèi)存的address space大部分是成片的大塊內(nèi)存,中間會(huì)有一些空洞,每一個(gè)成片的memory address space屬于一個(gè)node(如果局限在一個(gè)node內(nèi)部,其內(nèi)存模型是flat memory)。下面的圖片描述了Discontiguous memory的情況:

關(guān)于Linux內(nèi)存模型的介紹

因此,這種內(nèi)存模型下,節(jié)點(diǎn)數(shù)據(jù)(struct pglist_data)有多個(gè),宏定義NODE_DATA可以得到指定節(jié)點(diǎn)的struct pglist_data。而,每個(gè)節(jié)點(diǎn)管理的物理內(nèi)存保存在struct pglist_data 數(shù)據(jù)結(jié)構(gòu)的node_mem_map成員中(概念類似flat memory中的mem_map)。這時(shí)候,從PFN轉(zhuǎn)換到具體的struct page會(huì)稍微復(fù)雜一點(diǎn),我們首先要從PFN得到node ID,然后根據(jù)這個(gè)ID找到對(duì)于的pglist_data 數(shù)據(jù)結(jié)構(gòu),也就找到了對(duì)應(yīng)的page數(shù)組,之后的方法就類似flat memory了。

3、什么是Sparse Memory Model?

Memory model也是一個(gè)演進(jìn)過程,剛開始的時(shí)候,使用flat memory去抽象一個(gè)連續(xù)的內(nèi)存地址空間(mem_maps[]),出現(xiàn)NUMA之后,整個(gè)不連續(xù)的內(nèi)存空間被分成若干個(gè)node,每個(gè)node上是連續(xù)的內(nèi)存地址空間,也就是說,原來的單一的一個(gè)mem_maps[]變成了若干個(gè)mem_maps[]了。一切看起來已經(jīng)完美了,但是memory hotplug的出現(xiàn)讓原來完美的設(shè)計(jì)變得不完美了,因?yàn)榧幢闶且粋€(gè)node中的mem_maps[]也有可能是不連續(xù)了。其實(shí),在出現(xiàn)了sparse memory之后,Discontiguous memory內(nèi)存模型已經(jīng)不是那么重要了,按理說sparse memory最終可以替代Discontiguous memory的,這個(gè)替代過程正在進(jìn)行中,4.4的內(nèi)核仍然是有3中內(nèi)存模型可以選擇。

為什么說sparse memory最終可以替代Discontiguous memory呢?實(shí)際上在sparse memory內(nèi)存模型下,連續(xù)的地址空間按照SECTION(例如1G)被分成了一段一段的,其中每一section都是hotplug的,因此sparse memory下,內(nèi)存地址空間可以被切分的更細(xì),支持更離散的Discontiguous memory。此外,在sparse memory沒有出現(xiàn)之前,NUMA和Discontiguous memory總是剪不斷,理還亂的關(guān)系:NUMA并沒有規(guī)定其內(nèi)存的連續(xù)性,而Discontiguous memory系統(tǒng)也并非一定是NUMA系統(tǒng),但是這兩種配置都是multi node的。有了sparse memory之后,我們終于可以把內(nèi)存的連續(xù)性和NUMA的概念剝離開來:一個(gè)NUMA系統(tǒng)可以是flat memory,也可以是sparse memory,而一個(gè)sparse memory系統(tǒng)可以是NUMA,也可以是UMA的。

下面的圖片說明了sparse memory是如何管理page frame的(配置了SPARSEMEM_EXTREME):

關(guān)于Linux內(nèi)存模型的介紹

(注意:上圖中的一個(gè)mem_section指針應(yīng)該指向一個(gè)page,而一個(gè)page中有若干個(gè)struct mem_section數(shù)據(jù)單元)

整個(gè)連續(xù)的物理地址空間是按照一個(gè)section一個(gè)section來切斷的,每一個(gè)section內(nèi)部,其memory是連續(xù)的(即符合flat memory的特點(diǎn)),因此,mem_map的page數(shù)組依附于section結(jié)構(gòu)(struct mem_section)而不是node結(jié)構(gòu)了(struct pglist_data)。當(dāng)然,無論哪一種memory model,都需要處理PFN和page之間的對(duì)應(yīng)關(guān)系,只不過sparse memory多了一個(gè)section的概念,讓轉(zhuǎn)換變成了PFN<--->Section<--->page。

我們首先看看如何從PFN到page結(jié)構(gòu)的轉(zhuǎn)換:kernel中靜態(tài)定義了一個(gè)mem_section的指針數(shù)組,一個(gè)section中往往包括多個(gè)page,因此需要通過右移將PFN轉(zhuǎn)換成section number,用section number做為index在mem_section指針數(shù)組可以找到該P(yáng)FN對(duì)應(yīng)的section數(shù)據(jù)結(jié)構(gòu)。找到section之后,沿著其section_mem_map就可以找到對(duì)應(yīng)的page數(shù)據(jù)結(jié)構(gòu)。順便一提的是,在開始的時(shí)候,sparse memory使用了一維的memory_section數(shù)組(不是指針數(shù)組),這樣的實(shí)現(xiàn)對(duì)于特別稀疏(CONFIG_SPARSEMEM_EXTREME)的系統(tǒng)非常浪費(fèi)內(nèi)存。此外,保存指針對(duì)hotplug的支持是比較方便的,指針等于NULL就意味著該section不存在。上面的圖片描述的是一維mem_section指針數(shù)組的情況(配置了SPARSEMEM_EXTREME),對(duì)于非SPARSEMEM_EXTREME配置,概念是類似的,具體操作大家可以自行閱讀代碼。

從page到PFN稍微有一點(diǎn)麻煩,實(shí)際上PFN分成兩個(gè)部分:一部分是section index,另外一個(gè)部分是page在該section的偏移。我們需要首先從page得到section index,也就得到對(duì)應(yīng)的memory_section,知道了memory_section也就知道該page在section_mem_map,也就知道了page在該section的偏移,最后可以合成PFN。對(duì)于page到section index的轉(zhuǎn)換,sparse memory有2種方案,我們先看看經(jīng)典的方案,也就是保存在page->flags中(配置了SECTION_IN_PAGE_FLAGS)。這種方法的最大的問題是page->flags中的bit數(shù)目不一定夠用,因?yàn)檫@個(gè)flag中承載了太多的信息,各種page flag,node id,zone id現(xiàn)在又增加一個(gè)section id,在不同的architecture中無法實(shí)現(xiàn)一致性的算法,有沒有一種通用的算法呢?這就是CONFIG_SPARSEMEM_VMEMMAP。具體的算法可以參考下圖:

關(guān)于Linux內(nèi)存模型的介紹

(上面的圖片有一點(diǎn)問題,vmemmap只有在PHYS_OFFSET等于0的情況下才指向第一個(gè)struct page數(shù)組,一般而言,應(yīng)該有一個(gè)offset的,不過,懶得改了,哈哈)

對(duì)于經(jīng)典的sparse memory模型,一個(gè)section的struct page數(shù)組所占用的內(nèi)存來自directly mapped區(qū)域,頁表在初始化的時(shí)候就建立好了,分配了page frame也就是分配了虛擬地址。但是,對(duì)于SPARSEMEM_VMEMMAP而言,虛擬地址一開始就分配好了,是vmemmap開始的一段連續(xù)的虛擬地址空間,每一個(gè)page都有一個(gè)對(duì)應(yīng)的struct page,當(dāng)然,只有虛擬地址,沒有物理地址。因此,當(dāng)一個(gè)section被發(fā)現(xiàn)后,可以立刻找到對(duì)應(yīng)的struct page的虛擬地址,當(dāng)然,還需要分配一個(gè)物理的page frame,然后建立頁表什么的,因此,對(duì)于這種sparse memory,開銷會(huì)稍微大一些(多了個(gè)建立映射的過程)。

四、代碼分析

我們的代碼分析主要是通過include/asm-generic/memory_model.h展開的。

1、flat memory。代碼如下:

關(guān)于Linux內(nèi)存模型的介紹

由代碼可知,PFN和struct page數(shù)組(mem_map)index是線性關(guān)系,有一個(gè)固定的偏移就是ARCH_PFN_OFFSET,這個(gè)偏移是和估計(jì)的architecture有關(guān)。對(duì)于ARM64,定義在arch/arm/include/asm/memory.h文件中,當(dāng)然,這個(gè)定義是和內(nèi)存所占據(jù)的物理地址空間有關(guān)(即和PHYS_OFFSET的定義有關(guān))。

2、Discontiguous Memory Model。代碼如下:

關(guān)于Linux內(nèi)存模型的介紹

Discontiguous Memory Model需要獲取node id,只要找到node id,一切都好辦了,比對(duì)flat memory model進(jìn)行就OK了。因此對(duì)于__pfn_to_page的定義,可以首先通過arch_pfn_to_nid將PFN轉(zhuǎn)換成node id,通過NODE_DATA宏定義可以找到該node對(duì)應(yīng)的pglist_data數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)的node_start_pfn記錄了該node的第一個(gè)page frame number,因此,也就可以得到其對(duì)應(yīng)struct page在node_mem_map的偏移。__page_to_pfn類似,大家可以自己分析。

3、Sparse Memory Model。經(jīng)典算法的代碼我們就不看了,一起看看配置了SPARSEMEM_VMEMMAP的代碼,如下:

關(guān)于Linux內(nèi)存模型的介紹

簡(jiǎn)單而清晰,PFN就是vmemmap這個(gè)struct page數(shù)組的index啊。對(duì)于ARM64而言,vmemmap定義如下:

關(guān)于Linux內(nèi)存模型的介紹

毫無疑問,我們需要在虛擬地址空間中分配一段地址來安放struct page數(shù)組(該數(shù)組包含了所有物理內(nèi)存跨度空間page),也就是VMEMMAP_START的定義。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10863

    瀏覽量

    211762
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3025

    瀏覽量

    74047
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    316

    瀏覽量

    21650

原文標(biāo)題:郭?。?Linux內(nèi)存模型——平坦、非連續(xù)與稀疏

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)存管理是什么,Linux內(nèi)存管理詳解

    Linux內(nèi)存管理 Linux內(nèi)存管理是一個(gè)非常復(fù)雜的過程,主要分成兩個(gè)大的部分:內(nèi)核的內(nèi)存管理和進(jìn)程虛擬
    的頭像 發(fā)表于 05-11 17:54 ?6057次閱讀
    <b class='flag-5'>Linux</b>的<b class='flag-5'>內(nèi)存</b>管理是什么,<b class='flag-5'>Linux</b>的<b class='flag-5'>內(nèi)存</b>管理詳解

    走進(jìn)Linux內(nèi)存系統(tǒng)探尋內(nèi)存管理的機(jī)制和奧秘

    Linux 內(nèi)存是后臺(tái)開發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹Linux
    的頭像 發(fā)表于 01-05 09:47 ?1630次閱讀

    關(guān)于Linux內(nèi)存管理的詳細(xì)介紹

    Linux內(nèi)存管理是指對(duì)系統(tǒng)內(nèi)存的分配、釋放、映射、管理、交換、壓縮等一系列操作的管理。在Linux中,內(nèi)存被劃分為多個(gè)區(qū)域,每個(gè)區(qū)域有不同
    發(fā)表于 03-06 09:28 ?1067次閱讀

    Linux內(nèi)存相關(guān)知識(shí)科普

    Linux 內(nèi)存是后臺(tái)開發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹**Linu****x 內(nèi)存
    發(fā)表于 07-25 14:43 ?730次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)存</b>相關(guān)知識(shí)科普

    物理內(nèi)存模型的演變

    內(nèi)存管理概述中,主要是以Linux v2.6.11為例進(jìn)行分析的,但是計(jì)算技術(shù)在不斷發(fā)展,新的存儲(chǔ)架構(gòu)、新的指令集架構(gòu)、新的SoC架構(gòu)等都對(duì)物理內(nèi)存模型的抽象提出了更高要求。為此,必須
    的頭像 發(fā)表于 02-25 10:35 ?473次閱讀

    Linux內(nèi)核地址映射模型Linux內(nèi)核高端內(nèi)存詳解

    的數(shù)據(jù)可能不在內(nèi)存中。 Linux內(nèi)核地址映射模型 x86 CPU采用了段頁式地址映射模型。進(jìn)程代碼中的地址為邏輯地址,經(jīng)過段頁式地址映射后,才真正訪問物理
    發(fā)表于 05-08 10:33 ?3457次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核地址映射<b class='flag-5'>模型</b>與<b class='flag-5'>Linux</b>內(nèi)核高端<b class='flag-5'>內(nèi)存</b>詳解

    RTOS和Linux中的內(nèi)存映射及移植方法

    /O方法。它們涵蓋的范圍從對(duì)中斷服務(wù)例程的特殊使用及用戶線程對(duì)硬件訪問到出現(xiàn)于有些ROTS中的半規(guī)范化驅(qū)動(dòng)程序模型。這對(duì)于移植RTOS 代碼到規(guī)范化的Linux設(shè)備啟動(dòng)程序具有一定啟發(fā)作用,并且介紹
    發(fā)表于 07-03 07:43

    Armv8-A內(nèi)存定序模型詳解

    1. 本指南介紹由 Armv8-A 架構(gòu)定義的內(nèi)存定序模型,并介紹所提供的不同內(nèi)存障礙;本指南還確定一些需要明確定序的常見情況,以及如何使用
    發(fā)表于 08-02 11:03

    linux內(nèi)存管理機(jī)制淺析

    本內(nèi)容介紹了arm linux內(nèi)存管理機(jī)制,詳細(xì)說明了linux內(nèi)核內(nèi)存管理,linux虛擬
    發(fā)表于 12-19 14:09 ?73次下載
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)存</b>管理機(jī)制淺析

    基于ARM_CPU的Linux物理內(nèi)存管理

    關(guān)于arm cpu內(nèi)存介紹
    發(fā)表于 02-15 23:53 ?5次下載

    了解并學(xué)習(xí)Linux內(nèi)存模型

    linux內(nèi)核中支持3中內(nèi)存模型,分別是flat memory model,Discontiguous memory model和sparse memory model。所謂memory
    發(fā)表于 05-12 09:44 ?697次閱讀
    了解并學(xué)習(xí)<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>模型</b>

    一文解析Linux內(nèi)存系統(tǒng)

    Linux 內(nèi)存是后臺(tái)開發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹Linux
    的頭像 發(fā)表于 09-01 10:46 ?2443次閱讀
    一文解析<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)存</b>系統(tǒng)

    深入剖析Linux共享內(nèi)存原理

    不同進(jìn)程之間進(jìn)行通信,需要讓不同進(jìn)程共享相同的物理內(nèi)存,Linux通過? 共享內(nèi)存 ?來實(shí)現(xiàn)這個(gè)功能。下面先來介紹一下Linux系統(tǒng)的共享
    的頭像 發(fā)表于 10-30 09:52 ?2287次閱讀
    深入剖析<b class='flag-5'>Linux</b>共享<b class='flag-5'>內(nèi)存</b>原理

    Linux系統(tǒng)的共享內(nèi)存的使用

    但有時(shí)候?yàn)榱俗尣煌M(jìn)程之間進(jìn)行通信,需要讓不同進(jìn)程共享相同的物理內(nèi)存,Linux通過 共享內(nèi)存 來實(shí)現(xiàn)這個(gè)功能。下面先來介紹一下Linux
    的頭像 發(fā)表于 11-14 11:55 ?1319次閱讀

    Linux 內(nèi)存管理總結(jié)

    一、Linux內(nèi)存管理概述 Linux內(nèi)存管理是指對(duì)系統(tǒng)內(nèi)存的分配、釋放、映射、管理、交換、壓縮等一系列操作的管理。在
    的頭像 發(fā)表于 11-10 14:58 ?530次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>內(nèi)存</b>管理總結(jié)