chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

Linux中匿名頁(yè)的訪問(wèn)分析

Linux閱碼場(chǎng) ? 來(lái)源:Linux內(nèi)核遠(yuǎn)航者 ? 作者:Linux內(nèi)核遠(yuǎn)航者 ? 2021-10-12 17:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1.實(shí)例代碼

首先以一個(gè)簡(jiǎn)單的示例代碼來(lái)說(shuō)明:

#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;
}

代碼非常簡(jiǎn)單:首先通過(guò)mmap分配100M的私有可讀可寫(xiě)匿名頁(yè)面,然后進(jìn)行讀寫(xiě)訪問(wè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í)候,我們還沒(méi)有開(kāi)始通過(guò)mmap分配內(nèi)存,此時(shí)free命令輸出作為參考。

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

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

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

2.內(nèi)核原理

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

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

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

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

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

缺頁(yè)異常調(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

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

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

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)簽處:判斷虛擬地址對(duì)應(yīng)的pmd表項(xiàng)是否為空,為空來(lái)分配直接頁(yè)表設(shè)置到pmd表項(xiàng)中。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.4.1 從mmap說(shuō)起

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

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

"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
};


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

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

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

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

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

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

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

下面給出調(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)簽處判斷是否為寫(xiě)訪問(wèn)。在2標(biāo)簽處判斷頁(yè)表項(xiàng)的屬性是否是只讀。在3標(biāo)簽處進(jìn)行實(shí)際的寫(xiě)時(shí)復(fù)制處理。

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

3.總結(jié)

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

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

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

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

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

責(zé)任編輯:haq


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

    關(guān)注

    88

    文章

    11822

    瀏覽量

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

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74417

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何理解Linux內(nèi)核的PCIe驅(qū)動(dòng)

    各異的芯片組,加上各種 PCI 設(shè)備自身獨(dú)特的功能需求,Linux 內(nèi)核的 PCI 支持遠(yuǎn)比我們希望的要復(fù)雜得多。今天這篇文章,我們將從驅(qū)動(dòng)開(kāi)發(fā)的視角,梳理 Linux PCI 設(shè)備驅(qū)動(dòng)的核心生命周期與關(guān)鍵 API。
    的頭像 發(fā)表于 04-11 17:22 ?1289次閱讀

    無(wú)法通過(guò) ssh 訪問(wèn)怎么解決?

    我無(wú)法通過(guò) ssh 訪問(wèn) VisionFive V1,即使在本地子網(wǎng)/網(wǎng)絡(luò)也無(wú)法訪問(wèn)。相比之下,我確實(shí)可以 ssh 訪問(wèn) V1 所連接的同一路由器上的 RaspPi。所以這不是路由器
    發(fā)表于 04-01 07:11

    【「Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)」閱讀體驗(yàn)】充分發(fā)揮硬件潛力

    Linux內(nèi)核內(nèi)存分配 Linux系統(tǒng)使用了一種稱為“虛擬內(nèi)存”的機(jī)制。虛擬內(nèi)存機(jī)制使得每個(gè)內(nèi)存地址都是虛擬的,這意味著它們不會(huì)直接指向RAM的任何地址。這樣我們訪問(wèn)內(nèi)存
    發(fā)表于 02-04 22:30

    Linux進(jìn)程樹(shù)分析工具pstree詳解與實(shí)戰(zhàn)指南(另一視角優(yōu)化Linux系統(tǒng))

    Linux 系統(tǒng)開(kāi)發(fā)與運(yùn)維,理解進(jìn)程的運(yùn)行狀態(tài)和相互關(guān)系是排查問(wèn)題、優(yōu)化性能的基礎(chǔ)。pstree 作為一款輕量高效的進(jìn)程樹(shù)可視化工具,能直觀展示系統(tǒng)中所有進(jìn)程的父子關(guān)系,為系統(tǒng)分析提供關(guān)鍵線索。本文將從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化,
    的頭像 發(fā)表于 02-04 16:21 ?919次閱讀
    <b class='flag-5'>Linux</b>進(jìn)程樹(shù)<b class='flag-5'>分析</b>工具pstree詳解與實(shí)戰(zhàn)指南(另一視角優(yōu)化<b class='flag-5'>Linux</b>系統(tǒng))

    【「Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)」閱讀體驗(yàn)】+讀深入理解Linux內(nèi)核內(nèi)存分配

    每個(gè)內(nèi)存地址是虛擬的,不是直接指向RAM的任何地址。當(dāng)用戶訪問(wèn)內(nèi)存的存儲(chǔ)單元時(shí),都會(huì)進(jìn)行地址轉(zhuǎn)換以匹配相應(yīng)的物理內(nèi)存。書(shū)籍的第10章討論了五個(gè)主題,對(duì)Linux內(nèi)核內(nèi)存分配進(jìn)行詳細(xì)
    發(fā)表于 01-16 20:05

    飛凌嵌入式ElfBoard-Linux系統(tǒng)的文件分類

    的主要功能和Windows系統(tǒng)快捷方式類似,它是指向另一個(gè)文件或者目錄,符號(hào)鏈接本身不包含數(shù)據(jù)。6.管道(Pipe)和套接字(Socket)Linux提供了管道和套接字機(jī)制,用于不同進(jìn)程之間的通信。管道和套接字也被視為文件,并通過(guò)文件描述符進(jìn)行
    發(fā)表于 12-09 08:59

    為什么不建議用匿名結(jié)構(gòu)體

    bit_1:1 ;uint8_t bit_2:1 ; }; uint8_t value; }info2; }info_t; 在這個(gè)例子,下面這個(gè)就是所謂的匿名結(jié)構(gòu)體,因?yàn)檫@個(gè) struct 沒(méi)有
    發(fā)表于 12-04 07:39

    探索操作系統(tǒng)底層的關(guān)鍵接口

      在linux,將程序的運(yùn)行空間分為內(nèi)核空間與用戶空間(內(nèi)核態(tài)和用戶態(tài)),在邏輯上它們之間是相互隔離的,因此用戶程序不能訪問(wèn)內(nèi)核數(shù)據(jù),也無(wú)法使用內(nèi)核函數(shù)。當(dāng)用戶進(jìn)程必須訪問(wèn)內(nèi)核或使
    的頭像 發(fā)表于 11-08 12:42 ?893次閱讀

    SSH 遠(yuǎn)程連接內(nèi)網(wǎng) Linux 服務(wù)器

    利用 ZeroNews,您可對(duì)用內(nèi)網(wǎng)的 Linux 服務(wù)器進(jìn)行統(tǒng)一的 SSH 遠(yuǎn)程連接管理,當(dāng)用戶外出時(shí),可通過(guò) ZeroNews 分配的公網(wǎng)域名地址,快速訪問(wèn)企業(yè)內(nèi)部、家庭的 Linux
    的頭像 發(fā)表于 09-17 19:52 ?608次閱讀
    SSH 遠(yuǎn)程連接內(nèi)網(wǎng) <b class='flag-5'>Linux</b> 服務(wù)器

    用淘寶 API 實(shí)現(xiàn)天貓店鋪商品詳情頁(yè)智能優(yōu)化

    ? 在競(jìng)爭(zhēng)激烈的電商環(huán)境,天貓店鋪的商品詳情頁(yè)是影響用戶轉(zhuǎn)化率的關(guān)鍵因素。通過(guò)淘寶開(kāi)放平臺(tái)提供的API,我們可以實(shí)現(xiàn)智能優(yōu)化,提升用戶體驗(yàn)和銷售業(yè)績(jī)。本文將從零開(kāi)始,逐步介紹如何利用淘寶API進(jìn)行
    的頭像 發(fā)表于 08-13 14:35 ?980次閱讀
    用淘寶 API 實(shí)現(xiàn)天貓店鋪商品詳情<b class='flag-5'>頁(yè)</b>智能優(yōu)化

    手把手教你如何調(diào)優(yōu)Linux網(wǎng)絡(luò)參數(shù)

    在高并發(fā)網(wǎng)絡(luò)服務(wù)場(chǎng)景Linux內(nèi)核的默認(rèn)網(wǎng)絡(luò)參數(shù)往往無(wú)法滿足需求,導(dǎo)致性能瓶頸、連接超時(shí)甚至服務(wù)崩潰。本文基于真實(shí)案例分析,從參數(shù)解讀、問(wèn)題診斷到優(yōu)化實(shí)踐,手把手教你如何調(diào)優(yōu)Linux
    的頭像 發(fā)表于 05-29 09:21 ?1217次閱讀

    如何配置Linux防火墻和Web服務(wù)器

    在當(dāng)今數(shù)字化時(shí)代,網(wǎng)絡(luò)安全顯得尤為重要。Linux作為一種開(kāi)源操作系統(tǒng),廣泛應(yīng)用于服務(wù)器管理和網(wǎng)絡(luò)配置。本篇文章將詳細(xì)介紹如何配置Linux防火墻和Web服務(wù)器,確保內(nèi)網(wǎng)與外網(wǎng)的安全訪問(wèn)
    的頭像 發(fā)表于 05-24 15:26 ?2093次閱讀
    如何配置<b class='flag-5'>Linux</b>防火墻和Web服務(wù)器

    詳解Linux系統(tǒng)的服務(wù)管理

    Linux,無(wú)論何時(shí)當(dāng)你安裝任何帶有服務(wù)和守護(hù)進(jìn)程的包,系統(tǒng)默認(rèn)會(huì)把這些服務(wù)的初始化及 systemd腳本添加進(jìn)去,不過(guò)此時(shí)它們并沒(méi)有被啟用。
    的頭像 發(fā)表于 05-23 15:10 ?951次閱讀
    詳解<b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>中</b>的服務(wù)管理

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

    匿名登錄? 想象一下新用戶第一次打開(kāi)你的應(yīng)用,繁瑣的注冊(cè)流程可能會(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)訪問(wèn)和數(shù)據(jù)泄露。本文將帶你深入探索Linu
    的頭像 發(fā)表于 05-06 13:44 ?932次閱讀
    <b class='flag-5'>Linux</b>權(quán)限管理基礎(chǔ)入門