色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

為什么linux需要物理內(nèi)存分配器?

任何操作系統(tǒng)中最基本的部分之一就是管理內(nèi)存。該子系統(tǒng)通常稱(chēng)為內(nèi)存管理單元或MMU。這個(gè)子系統(tǒng)是一個(gè)非常復(fù)雜的子系統(tǒng),但是對(duì)我們來(lái)說(shuō)幸運(yùn)的是,它有很多文獻(xiàn)記錄。

當(dāng)我們談?wù)搩?nèi)存時(shí),通常是我們所指的物理RAM。總物理RAM是您要在新PC或服務(wù)器中尋找的最重要屬性之一。但是,最終使用RAM的是操作系統(tǒng)。操作系統(tǒng)充當(dāng)應(yīng)用程序和物理內(nèi)存之間的抽象層。該層將物理RAM劃分為虛擬“頁(yè)面”,這是操作系統(tǒng)可以使用的最小數(shù)據(jù)單元。默認(rèn)情況下,在Linux系統(tǒng)中,頁(yè)面大小為4KB,因?yàn)閱为?dú)處理每個(gè)位將太復(fù)雜而無(wú)法高效。

當(dāng)Linux使用系統(tǒng)RAM時(shí),它將創(chuàng)建一個(gè)虛擬內(nèi)存層,然后將進(jìn)程分配給虛擬內(nèi)存。虛擬內(nèi)存實(shí)際上是RAM和交換空間的結(jié)合。交換空間是硬盤(pán)驅(qū)動(dòng)器中的一部分,如果可用的RAM用完了,則指定為可用空間。這里是額外的抽象層,因此每個(gè)正在運(yùn)行的進(jìn)程都不會(huì)重疊,并嘗試使用已被另一個(gè)進(jìn)程使用的內(nèi)存。這也意味著虛擬內(nèi)存可以擴(kuò)展到物理RAM容量之外,即使在效率不高的情況下,這也可能有用。

如前所述,操作系統(tǒng)允許進(jìn)程訪問(wèn)RAM的一部分。該進(jìn)程完全無(wú)法控制內(nèi)存分配。因此,在應(yīng)用程序上工作的開(kāi)發(fā)人員,尤其是用高級(jí)代碼編寫(xiě)的開(kāi)發(fā)人員,不必?fù)?dān)心使用內(nèi)存。

通常,任何文件或文件系統(tǒng)的一部分都使用系統(tǒng)命令mmap進(jìn)行映射,并稱(chēng)為內(nèi)存映射文件。如果一個(gè)內(nèi)存頁(yè)面文件沒(méi)有任何關(guān)聯(lián)的文件,則稱(chēng)為匿名內(nèi)存,并且使用“malloc”函數(shù)分配ut。

通過(guò)使用分配文件映射的內(nèi)存和匿名內(nèi)存的方式,操作系統(tǒng)可以使使用相同文件的進(jìn)程與相同的虛擬內(nèi)存頁(yè)面一起工作,從而更有效地使用內(nèi)存。有時(shí),一個(gè)進(jìn)程正在占用另一個(gè)進(jìn)程所需的內(nèi)存。在這種情況下,操作系統(tǒng)使用OOM(內(nèi)存不足)殺手。該實(shí)用程序選擇一個(gè)進(jìn)程,然后將其內(nèi)存頁(yè)重新分配給其他進(jìn)程。在Linux中,默認(rèn)情況下啟用此OOM殺手。如果禁用它,則除了擴(kuò)展到硬盤(pán)驅(qū)動(dòng)器之外,如果系統(tǒng)用盡了內(nèi)存,則基本上無(wú)權(quán)使用系統(tǒng)。

“Cgroups”是用于將進(jìn)程隔離到特定內(nèi)存地址的實(shí)用程序,該程序?qū)⑦M(jìn)程分組為邏輯組并為其分配一定數(shù)量的內(nèi)存。Linux中包含cgroup實(shí)際上為當(dāng)今使用的容器(例如Docker和OpenVZ)奠定了基礎(chǔ)。

Linux還能夠使用NUMA(非統(tǒng)一內(nèi)存訪問(wèn))與多處理器系統(tǒng)一起使用。這樣做的目的是嘗試為最接近物理RAM的CPU上運(yùn)行的進(jìn)程分配內(nèi)存。