女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

Linux中匿名頁的訪問分析

Linux閱碼場 ? 來源:Linux內(nèi)核遠(yuǎn)航者 ? 作者:Linux內(nèi)核遠(yuǎn)航者 ? 2021-10-12 17:52 ? 次閱讀

Linux有后備文件支持的頁稱為文件頁,如屬于進(jìn)程的代碼段、數(shù)據(jù)段的頁,內(nèi)存回收的時(shí)候這些頁面只需要做臟頁的同步即可(干凈的頁面可以直接丟棄掉)。反之為匿名頁,如進(jìn)程的堆棧使用的頁,內(nèi)存回收的時(shí)候這些頁面不能簡單的丟棄掉,需要交換到交換分區(qū)或交換文件。本文中,主要分析匿名頁的訪問將發(fā)生哪些可能顛覆我們認(rèn)知的"化學(xué)反應(yīng)"。

1.實(shí)例代碼

首先以一個(gè)簡單的示例代碼來說明:

#include
#include
#include
#include
#include

#defineMAP_SIZE(100*1024*1024)

intmain(intargc,char*argv[])
{
char*p;
charval;
inti;

puts("beforemmapok,pleaceexec'free-m'!");
sleep(5);


//mmap

p=mmap(NULL,MAP_SIZE,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0);
if(p==NULL){
perror("failtomalloc");
return-1;
}
puts("aftermmapok,pleaceexec'free-m'!");
sleep(5);


//read
for(i=0;i"readok,pleaceexec'free-m'!");
sleep(5);

#if1
//write
memset(p,0x55,MAP_SIZE);
puts("writeok,pleaceexec'free-m'!");
#endif
//sleep
pause();

return0;
}

代碼非常簡單:首先通過mmap分配100M的私有可讀可寫匿名頁面,然后進(jìn)行讀寫訪問,分別在提示的時(shí)候在另外一個(gè)窗口執(zhí)行free -m命令查看輸出結(jié)果。

程序執(zhí)行結(jié)果如下:

$./anon_rw_demo
beforemmapok,pleaceexec'free-m'!
aftermmapok,pleaceexec'free-m'!
readok,pleaceexec'free-m'!
writeok,pleaceexec'free-m'!


命令執(zhí)行結(jié)果如下:

$free-m
總計(jì)已用空閑共享緩沖/緩存可用
內(nèi)存: 15729  8286  1945  895  5497  6220
交換: 16290 1599  14691
$free-m
總計(jì)已用空閑共享緩沖/緩存可用
內(nèi)存: 15729  8286  1945  895  5497  6220
交換: 16290 1599  14691
$free-m
總計(jì)已用空閑共享緩沖/緩存可用
內(nèi)存: 15729  8286  1945  895  5497  6220
交換: 16290 1599  14691
$free-m
總計(jì)已用空閑共享緩沖/緩存可用
內(nèi)存: 15729  8383  1848  895  5497  6123
交換: 16290 1599  14691

可以看到:

第一次提示執(zhí)行free命令的時(shí)候,我們還沒有開始通過mmap分配內(nèi)存,此時(shí)free命令輸出作為參考。

第二次提示執(zhí)行free命令的時(shí)候,我們已經(jīng)通過mmap分配了100M的內(nèi)存,此時(shí)發(fā)現(xiàn)free命令輸出內(nèi)存消耗基本沒有變化。

第三次提示執(zhí)行free命令的時(shí)候,我們對于分配的匿名頁面進(jìn)行了讀操作,此時(shí)發(fā)現(xiàn)free命令輸出內(nèi)存消耗頁基本沒有變化,這基本上會(huì)顛覆我們的認(rèn)知

第四次提示執(zhí)行free命令的時(shí)候,我們對于分配的匿名頁面進(jìn)行了寫操作,此時(shí)發(fā)現(xiàn)free命令輸出內(nèi)存消耗大概為100M。

2.內(nèi)核原理

下面我們從Linux內(nèi)核的層面來解析發(fā)生以上神奇現(xiàn)象的原理。

2.1 mmap的內(nèi)存消耗

mmap申請匿名頁的時(shí)候,只是申請了虛擬內(nèi)存(通過vm_area_struct結(jié)構(gòu)來描述,如描述虛擬內(nèi)存區(qū)域的地址范圍、訪問權(quán)限等,以下簡稱vma),實(shí)際的物理內(nèi)存并沒有申請(除了用于管理虛擬內(nèi)存區(qū)域的vma等結(jié)構(gòu)內(nèi)存的申請),當(dāng)前虛擬內(nèi)存和物理內(nèi)存并沒有建立頁表映射關(guān)系,而真正的申請的匿名頁所對應(yīng)的物理頁在實(shí)際訪問的時(shí)候按需分配獲得,所以此時(shí)我們看不到內(nèi)存的消耗情況。

2.2 第一次讀匿名頁的內(nèi)存消耗

通過mmap申請完虛擬內(nèi)存之后,進(jìn)程就可以按照之前申請vma的訪問權(quán)限進(jìn)行訪問,第一發(fā)生讀訪問,這個(gè)時(shí)候由于虛擬內(nèi)存和物理內(nèi)存并沒有建立頁表映射關(guān)系,通過虛擬地址并不能查找到物理內(nèi)存,所以會(huì)發(fā)生處理器的異常,最終分析是因?yàn)閿?shù)據(jù)訪問異常導(dǎo)致,就由處理器架構(gòu)相關(guān)的代碼進(jìn)入了我們通用的缺頁異常處理例程中。

缺頁異常調(diào)用鏈如下:

"mm/memory.c"

處理器架構(gòu)相關(guān)異常處理代碼
->handle_mm_fault
->__handle_mm_fault
->handle_pte_fault
->if(!vmf->pte){-------------------1
if(vma_is_anonymous(vmf->vma))-------------------2
returndo_anonymous_page(vmf);-------------------3

缺頁異常進(jìn)入handle_pte_fault后,在1標(biāo)簽代碼處,來判斷訪問的虛擬內(nèi)存頁的頁表項(xiàng)是否為空,為空說明這個(gè)這個(gè)虛擬頁沒有和物理頁建立映射關(guān)系。然后在2標(biāo)簽代碼處判斷是否為匿名頁缺頁異常(實(shí)際上是判斷是否為私有的匿名頁,當(dāng)前當(dāng)前示例代碼場景申請的為私有匿名頁面)。在3標(biāo)簽代碼處,進(jìn)行真正的私有匿名頁缺頁異常處理。

下面主要看下第一次讀匿名頁的處理:

do_anonymous_page
->pte_alloc(vma->vm_mm,vmf->pmd)-------------------1
->/*Usethezero-pageforreads*/
if(!(vmf->flags&FAULT_FLAG_WRITE)&&-------------------2
!mm_forbids_zeropage(vma->vm_mm)){-------------------3
entry=pte_mkspecial(pfn_pte(my_zero_pfn(vmf->address),
vma->vm_page_prot));-------------------4
vmf->pte=pte_offset_map_lock(vma->vm_mm,vmf->pmd,
vmf->address,&vmf->ptl);-------------------5

...
gotosetpte;
}
->page=alloc_zeroed_user_highpage_movable(vma,vmf->address);-------------------6
->entry=mk_pte(page,vma->vm_page_prot);-------------------7
entry=pte_sw_mkyoung(entry);-------------------8
if(vma->vm_flags&VM_WRITE)
entry=pte_mkwrite(pte_mkdirty(entry));-------------------9

vmf->pte=pte_offset_map_lock(vma->vm_mm,vmf->pmd,vmf->address,
&vmf->ptl);-------------------10

->set_pte_at(vma->vm_mm,vmf->address,vmf->pte,entry);-------------------11

1標(biāo)簽處:判斷虛擬地址對應(yīng)的pmd表項(xiàng)是否為空,為空來分配直接頁表設(shè)置到pmd表項(xiàng)中。

2標(biāo)簽處:判斷是否是進(jìn)行讀訪問。

3標(biāo)簽處:判斷是否沒有禁止0頁。

4標(biāo)簽處:就是對于沒有禁止0頁的匿名頁讀訪問設(shè)置頁表,這里通過0頁的頁幀號和mmap映射時(shí)指定的訪問權(quán)限組合頁表項(xiàng)的值。

5標(biāo)簽處:通過發(fā)生缺頁的虛擬地址來計(jì)算出頁表項(xiàng)的地址保存在 vmf->pte。

最11標(biāo)簽處:將4標(biāo)簽初組合出的頁表項(xiàng)的值寫入到5標(biāo)簽初計(jì)算出的頁表項(xiàng)中。

以上分析可知:對于私有的匿名頁,第一次讀訪問的時(shí)候都會(huì)發(fā)生缺頁異常,然后通過頁表映射0頁,這個(gè)0頁沒有什么特殊之處,只不過它是在系統(tǒng)啟動(dòng)過程中初始化好的一塊內(nèi)容全為0的頁面,這樣做可以為進(jìn)程分配了內(nèi)存只進(jìn)行讀訪問節(jié)省大量物理內(nèi)存。

2.3 第一次寫匿名頁的內(nèi)存消耗

大家可以將示例代碼中,讀訪問屏蔽掉只進(jìn)行寫訪問,觀察內(nèi)存消耗。

這個(gè)時(shí)候發(fā)生缺頁異常時(shí),不會(huì)在走2 3 4 5 便簽處代碼,而在6處分配了一個(gè)物理頁面,在7 8 9組合頁表項(xiàng)的值, 10處計(jì)算出頁表項(xiàng)的地址,最后把組合的值設(shè)置到頁表項(xiàng)中。

需要注意第9處,如果是寫訪問會(huì)設(shè)置頁表項(xiàng)的可寫標(biāo)志位

以上分析可知:對于私有的匿名頁,第一次寫訪問的時(shí)候都會(huì)發(fā)生缺頁異常,會(huì)真正分配一個(gè)物理頁面,然后將虛擬頁面通過頁面映射到物理頁面,所以我們能觀察到寫之后發(fā)生了大量內(nèi)存消耗。

2.4 第一次讀然后寫匿名頁的內(nèi)存消耗

這種場景就是示例代碼中所做的實(shí)驗(yàn),可以看到讀的時(shí)候基本上沒有內(nèi)存消耗,寫的時(shí)候發(fā)生了大量內(nèi)存消耗。

關(guān)于第一次讀,上面已經(jīng)做過解釋,下面主要看讀完之后的頁面發(fā)生寫訪問的情況。

2.4.1 從mmap說起

實(shí)際上,對于一個(gè)私有的內(nèi)存映射,在mmap的時(shí)候?yàn)轫摫碛成錅?zhǔn)備訪問權(quán)限的時(shí)候并不是給予所有的權(quán)限,而是把可寫屬性去掉了。

我們可以從源代碼找到答案:

"mm/mmap.c"

do_mmap
->mmap_region
->vma_set_page_prot(vma)
->vm_page_prot=vm_pgprot_modify(vma->vm_page_prot,vm_flags);---------1
->pgprot_modify(oldprot,vm_get_page_prot(vm_flags))
->WRITE_ONCE(vma->vm_page_prot,vm_page_prot);---------------2


/*descriptionofeffectsofmappingtypeandprotincurrentimplementation.
*thisisduetothelimitedx86pageprotectionhardware.Theexpected
*behaviorisinparens:
*
*map_typeprot
*PROT_NONEPROT_READPROT_WRITEPROT_EXEC
*MAP_SHAREDr:(no)nor:(yes)yesr:(no)yesr:(no)yes
*w:(no)now:(no)now:(yes)yesw:(no)no
*x:(no)nox:(no)yesx:(no)yesx:(yes)yes
*
*MAP_PRIVATEr:(no)nor:(yes)yesr:(no)yesr:(no)yes
*w:(no)now:(no)now:(copy)copyw:(no)no
*x:(no)nox:(no)yesx:(no)yesx:(yes)yes
*/
->vm_get_page_prot
pgprot_tprotection_map[16]__ro_after_init={
__P000,__P001,__P010,__P011,__P100,__P101,__P110,__P111,
__S000,__S001,__S010,__S011,__S100,__S101,__S110,__S111
};


對于__Pxxx, 最后一個(gè)x表示vma屬性是否可讀,倒數(shù)第二個(gè)x表示vma屬性是否可寫,P后面的x表示是否可執(zhí)行。

1標(biāo)簽處根據(jù)mmap傳遞的訪問權(quán)限來構(gòu)造最終的訪問權(quán)限標(biāo)識(shí)。

2標(biāo)簽處將構(gòu)造好的訪問權(quán)限標(biāo)識(shí)記錄到vma->vm_page_prot中,供缺頁異常設(shè)置頁表使用。

注釋中已經(jīng)做了詳細(xì)的解釋,具體頁表屬性如何表示由各自的處理器架構(gòu)相關(guān)代碼來做(eg: 對于x86架構(gòu) #define __P111 PAGE_COPY_EXEC),我們只需要知道:無論我們想讓vma具備那些屬性組合,都會(huì)屏蔽掉寫屬性,具體可以查看相關(guān)的處理器架構(gòu)實(shí)現(xiàn)。

所以,再次回到缺頁異常處理代碼中。在2.2小節(jié)的4標(biāo)簽處,使用mmap設(shè)置好的頁表訪問權(quán)限設(shè)置頁表屬性,當(dāng)前場景我們知道,mmap中指定為私有的可讀可寫屬性,而頁表中只是設(shè)置為了只讀屬性

2.4.2 寫時(shí)復(fù)制的觸發(fā)

讀訪問將虛擬頁以只讀的方式映射到了0頁,當(dāng)再次發(fā)生寫操作時(shí),就會(huì)再次觸數(shù)據(jù)訪問異常,最終進(jìn)入缺頁異常處理例程中。

下面給出調(diào)用鏈:

"mm/memory.c"

handle_pte_fault
->if(vmf->flags&FAULT_FLAG_WRITE){-----------1
if(!pte_write(entry))-----------2
returndo_wp_page(vmf);-----------3

可以看到最終也是在handle_pte_fault中處理:在1標(biāo)簽處判斷是否為寫訪問。在2標(biāo)簽處判斷頁表項(xiàng)的屬性是否是只讀。在3標(biāo)簽處進(jìn)行實(shí)際的寫時(shí)復(fù)制處理。

以上分析可知:發(fā)生寫訪問操作時(shí),如果vma可寫,但是頁表屬性標(biāo)識(shí)不可寫(只讀),會(huì)發(fā)生寫時(shí)復(fù)制缺頁異常,對于當(dāng)前場景的0頁的寫訪問就是如此,在do_wp_page中會(huì)重新分配物理頁面映射到虛擬頁面,然后頁表設(shè)置為可寫屬性,就完成了缺頁處理。

3.總結(jié)

1)mmap分配私有匿名內(nèi)存時(shí),會(huì)設(shè)置vma的vm_page_prot成員,去除掉頁表的寫訪問標(biāo)識(shí)。

2)第一次讀匿名頁時(shí),對于可讀可寫的vma,虛擬頁會(huì)以只讀的方式映射到0頁。

3)第一次寫匿名頁時(shí),對于可讀可寫的vma,會(huì)申請物理頁面,虛擬頁以可讀可寫的方式映射到此物理頁。

4)第一次讀匿名頁后,然后寫匿名頁,先只讀方式映射到0頁,然后發(fā)生寫時(shí)復(fù)制,分配物理頁,虛擬頁以可讀可寫的方式映射到此物理頁。

可以發(fā)現(xiàn),訪問匿名頁面時(shí)發(fā)生的“化學(xué)反應(yīng)”并不是那么的簡單,其中會(huì)涉及mmap的映射原則,0頁的映射,匿名頁面的處理,寫時(shí)復(fù)制的處理等等,而且讀寫順序不一樣,產(chǎn)生的結(jié)果也會(huì)不一樣,大家可以結(jié)合內(nèi)核源代碼進(jìn)行分析,希望對大家理解匿名頁缺頁異常有所幫助。

責(zé)任編輯:haq


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

    關(guān)注

    87

    文章

    11459

    瀏覽量

    212789
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4886

    瀏覽量

    70253

原文標(biāo)題:3.總結(jié)

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

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    HarmonyOS5云服務(wù)技術(shù)分享--匿名登錄功能指南

    匿名登錄? 想象一下新用戶第一次打開你的應(yīng)用,繁瑣的注冊流程可能會(huì)勸退不少人。匿名登錄就像給用戶一張「臨時(shí)通行證」,既能保留基礎(chǔ)用戶數(shù)據(jù),又能大幅降低使用門檻,有效提升用戶留存率~ ?? 集成指南(5步
    發(fā)表于 05-22 16:41

    Linux權(quán)限管理基礎(chǔ)入門

    Linux的廣闊天空中,權(quán)限管理猶如一只翱翔的雄鷹,掌控著系統(tǒng)的安全與秩序。掌握Linux權(quán)限,不僅能讓你的系統(tǒng)管理更加得心應(yīng)手,還能有效防止未授權(quán)訪問和數(shù)據(jù)泄露。本文將帶你深入探索Linu
    的頭像 發(fā)表于 05-06 13:44 ?150次閱讀
    <b class='flag-5'>Linux</b>權(quán)限管理基礎(chǔ)入門

    Allegro Skill布局功能之按擺放器件介紹

    在電路設(shè)計(jì),原理圖中常以一個(gè)功能模塊的器件繪制在同一面上,因此,通常將器件在pcb按擺放在一起,更方便進(jìn)行模塊化布局。為此,F(xiàn)any skill添加了將pcb的器件按照原理圖
    的頭像 發(fā)表于 04-23 17:10 ?394次閱讀
    Allegro Skill布局功能之按<b class='flag-5'>頁</b>擺放器件介紹

    Linux系統(tǒng)通過預(yù)留物理內(nèi)存實(shí)現(xiàn)ARM與FPGA高效通信的方法

    在嵌入式系統(tǒng)開發(fā),ARM 和 FPGA 之間的通信可以使用 ARM 側(cè)的 DDR 作為通道。由于 FPGA 也可以直接訪問到 ARM 側(cè) DDR,但 DDR 作為共享通信時(shí),就不能被操作系統(tǒng)的內(nèi)存
    的頭像 發(fā)表于 04-16 13:42 ?531次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>中</b>通過預(yù)留物理內(nèi)存實(shí)現(xiàn)ARM與FPGA高效通信的方法

    利用eBPF程序繞過內(nèi)核以加速存儲(chǔ)訪問

    隨著微秒級NVMe存儲(chǔ)的蓬勃發(fā)展,Linux內(nèi)核存儲(chǔ)棧的開銷幾乎是存儲(chǔ)訪問時(shí)間的兩倍,已經(jīng)成為性能瓶頸。
    的頭像 發(fā)表于 03-01 16:09 ?434次閱讀
    利用eBPF程序繞過內(nèi)核以加速存儲(chǔ)<b class='flag-5'>訪問</b>

    linux下編譯了cyusbserial SDK生成so文件,但是運(yùn)行測試程序和編寫API都訪問不到DLP3010EVM,為什么?

    在win下我可以正常使用GUI軟件和示例API訪問DLP3010EVM,但是在linux下我編譯了cyusbserial SDK生成so文件,但是運(yùn)行測試程序和編寫API都訪問不到DLP。我目的
    發(fā)表于 02-26 08:27

    DevEco Studio構(gòu)建分析工具Build Analyzer 為原生鴻蒙應(yīng)用開發(fā)提速

    至Build Analyzer簽。 打開Build Analyzer,Overview窗格,展示了構(gòu)建歷史、構(gòu)建參數(shù)、工具鏈版本及構(gòu)建整體耗時(shí)等信息;切換到Tasks視圖,即可進(jìn)一步對構(gòu)建過程分析
    發(fā)表于 02-17 18:06

    基于OpenSBI的linux nommu實(shí)現(xiàn)

    :SupervisorSoftwareBinaryInterface軟件二進(jìn)制接口Linux內(nèi)核工作在S模式下時(shí),不能直接訪問機(jī)器定時(shí)器。而系統(tǒng)的運(yùn)行依賴于定時(shí)器,為了解決這個(gè)問
    的頭像 發(fā)表于 02-08 13:43 ?525次閱讀
    基于OpenSBI的<b class='flag-5'>linux</b> nommu實(shí)現(xiàn)

    SQLite數(shù)據(jù)訪問組件

    SQLite 數(shù)據(jù)訪問組件 SQLite 數(shù)據(jù)訪問組件 (LiteDAC) 是一個(gè)組件庫 它提供從 Delphi 和 C++ Builder 到 SQLite 的原生連接,包括 Community
    的頭像 發(fā)表于 02-08 11:48 ?385次閱讀
    SQLite數(shù)據(jù)<b class='flag-5'>訪問</b>組件

    Linux lsof命令的基本用法

    linux 系統(tǒng),一切皆文件。通過文件不僅僅可以訪問常規(guī)數(shù)據(jù),還可以訪問網(wǎng)絡(luò)連接和硬件。所以 lsof 命令不僅可以查看進(jìn)程打開的文件、目錄,還可以查看進(jìn)程監(jiān)聽的端口等 sock
    的頭像 發(fā)表于 10-23 11:52 ?1065次閱讀
    <b class='flag-5'>Linux</b> lsof命令的基本用法

    存儲(chǔ)器訪問速度最快的是什么

    在探討存儲(chǔ)器訪問速度最快的是哪一種時(shí),我們首先需要了解計(jì)算機(jī)存儲(chǔ)系統(tǒng)的層次結(jié)構(gòu)以及各類存儲(chǔ)器的特性和功能。計(jì)算機(jī)存儲(chǔ)系統(tǒng)通常包括多個(gè)層次的存儲(chǔ)器,從速度最快、容量最小的寄存器開始,到速度較慢、容量較大的外存儲(chǔ)器結(jié)束。這些存儲(chǔ)器在訪問
    的頭像 發(fā)表于 10-12 17:01 ?3546次閱讀

    匿名瀏覽到數(shù)據(jù)安全:代理IP用戶心聲全記錄

    匿名瀏覽到數(shù)據(jù)安全,代理IP技術(shù)在現(xiàn)代網(wǎng)絡(luò)環(huán)境扮演著重要角色。以下是代理IP用戶心聲的全記錄,涵蓋了其應(yīng)用、優(yōu)勢、挑戰(zhàn)及用戶心聲。
    的頭像 發(fā)表于 09-30 08:59 ?385次閱讀

    動(dòng)態(tài)代理IP的匿名性和透明度,為主要考慮關(guān)鍵!

    動(dòng)態(tài)代理IP的匿名性和透明度是用戶選擇代理服務(wù)時(shí)需要考慮的關(guān)鍵因素。根據(jù)用戶的需求和場景,可以選擇不同匿名級別和透明度的代理服務(wù)來平衡隱私保護(hù)和網(wǎng)絡(luò)訪問的需求。
    的頭像 發(fā)表于 09-20 07:36 ?532次閱讀
    動(dòng)態(tài)代理IP的<b class='flag-5'>匿名</b>性和透明度,為主要考慮關(guān)鍵!

    Linux內(nèi)核表映射的基礎(chǔ)知識(shí)

    大家在看內(nèi)核代碼時(shí)會(huì)經(jīng)常看的以上術(shù)語,但在ARM的芯片手冊并沒有用到這些術(shù)語,而是使用L1,L2,L3表這種術(shù)語。
    的頭像 發(fā)表于 08-07 15:53 ?1421次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>中</b><b class='flag-5'>頁</b>表映射的基礎(chǔ)知識(shí)

    詳解Linux的權(quán)限控制

    本章將和大家分享Linux的權(quán)限控制。廢話不多說,下面我們直接進(jìn)入主題。
    的頭像 發(fā)表于 08-05 15:32 ?924次閱讀
    詳解<b class='flag-5'>Linux</b><b class='flag-5'>中</b>的權(quán)限控制