新聞中心
隨著計(jì)算機(jī)技術(shù)的發(fā)展,我們所使用的計(jì)算機(jī)已經(jīng)越來越高效、智能化。那么在這個(gè)高度發(fā)達(dá)的信息時(shí)代,計(jì)算機(jī)內(nèi)存顯得更加重要。虛擬內(nèi)存就是處理器能夠訪問的計(jì)算機(jī)內(nèi)存空間比實(shí)際可用的內(nèi)存空間要多的一種技術(shù)。Linux虛擬內(nèi)存(Virtual Memory)是現(xiàn)代操作系統(tǒng)中運(yùn)用的一項(xiàng)重要技術(shù),它能夠使進(jìn)程擁有一個(gè)似乎無限大的內(nèi)存空間,并且能夠優(yōu)化系統(tǒng)內(nèi)存的使用,同時(shí)減少由于內(nèi)存不足而導(dǎo)致的崩潰。本文將深入探討Linux虛擬內(nèi)存,并分析其對(duì)進(jìn)程的影響。

創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè),為客戶提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗(yàn),各類網(wǎng)站都可以開發(fā),品牌網(wǎng)站建設(shè),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計(jì),建網(wǎng)站費(fèi)用,建網(wǎng)站多少錢,價(jià)格優(yōu)惠,收費(fèi)合理。
1. Linux虛擬內(nèi)存的概念
Linux虛擬內(nèi)存是一種把硬盤的空間當(dāng)做內(nèi)存來使用的技術(shù),它能夠?qū)崿F(xiàn)運(yùn)行程序時(shí),以更多的內(nèi)存來執(zhí)行程序。Linux虛擬內(nèi)存通過操作系統(tǒng)把使用內(nèi)存較少的應(yīng)用程序遷移至硬盤存儲(chǔ)空間,進(jìn)而釋放系統(tǒng)內(nèi)存空間,從而優(yōu)化內(nèi)存的使用。此外,Linux虛擬內(nèi)存技術(shù)還允許進(jìn)程進(jìn)行數(shù)據(jù)共享,避免了多個(gè)進(jìn)程同時(shí)占用大量內(nèi)存的情況。
2. Linux虛擬內(nèi)存的工作原理
Linux虛擬內(nèi)存的工作機(jī)制與CPU緩存一樣,都是通過把數(shù)據(jù)存儲(chǔ)在內(nèi)存中的緩沖區(qū)來實(shí)現(xiàn)快速存取,同時(shí)它也可以在硬盤上進(jìn)行數(shù)據(jù)的保存和提取。當(dāng)一個(gè)進(jìn)程需要讀取或?qū)懭氪鎯?chǔ)設(shè)備時(shí),虛擬內(nèi)存會(huì)將數(shù)據(jù)直接放入內(nèi)存緩沖區(qū)中進(jìn)行操作,當(dāng)數(shù)據(jù)傳輸完畢后,則可以將緩沖區(qū)中的數(shù)據(jù)寫入到磁盤上,或是從磁盤中讀出數(shù)據(jù)到緩沖區(qū)。
一個(gè)進(jìn)程在運(yùn)行時(shí)會(huì)被分配一個(gè)獨(dú)立的虛擬地址空間,在虛擬地址控件中,可以分配給進(jìn)程的內(nèi)存超出物理內(nèi)存的大小,這使得進(jìn)程擁有虛擬內(nèi)存,而不僅僅是物理內(nèi)存。Linux虛擬內(nèi)存的分配方式是按照需求生成,也就是說,當(dāng)進(jìn)程需要更多的內(nèi)存時(shí),虛擬內(nèi)存會(huì)為其分配足夠的地址空間,然后根據(jù)需要將地址空間映射到對(duì)應(yīng)的物理內(nèi)存上。
3. Linux虛擬內(nèi)存對(duì)進(jìn)程的影響
Linux虛擬內(nèi)存的優(yōu)勢(shì)不僅僅在于優(yōu)化內(nèi)存的使用,同時(shí)也對(duì)進(jìn)程的運(yùn)行產(chǎn)生了深遠(yuǎn)的影響。具體可以從以下三個(gè)方面來說明:
(1)節(jié)省內(nèi)存消耗:在物理內(nèi)存不足的情況下,Linux虛擬內(nèi)存會(huì)將一部分內(nèi)存數(shù)據(jù)保存至磁盤上,并根據(jù)進(jìn)程的需求實(shí)時(shí)將緩存區(qū)數(shù)據(jù)載入內(nèi)存。這項(xiàng)技術(shù)能夠大大節(jié)省內(nèi)存的消耗,并保障較小的內(nèi)存訪問延遲,在資源非常緊缺的情況下,能夠維持系統(tǒng)的穩(wěn)定。
(2)保護(hù)電腦不被迅速崩潰:虛擬內(nèi)存技術(shù)大大提高了Linux系統(tǒng)的健壯性,當(dāng)進(jìn)程使用內(nèi)存超過其預(yù)設(shè)的值時(shí),操作系統(tǒng)會(huì)通過移動(dòng)內(nèi)存網(wǎng)格區(qū)來完成數(shù)據(jù)的管理,進(jìn)而避免了崩潰的情況。
(3)優(yōu)化多任務(wù)處理:Linux虛擬內(nèi)存能夠優(yōu)化多任務(wù)處理效果,多個(gè)進(jìn)程在虛擬地址空間中運(yùn)行,彼此無互相干擾。這使得系統(tǒng)在高度多任務(wù)處理的情況下,還能保持極快的反應(yīng)速度,同時(shí)也保障了數(shù)據(jù)的完整性,提高了應(yīng)用的穩(wěn)定性。
Linux虛擬內(nèi)存是一種優(yōu)秀的操作系統(tǒng)技術(shù),能夠提高計(jì)算機(jī)系統(tǒng)的運(yùn)行效率和穩(wěn)定性。采用虛擬內(nèi)存技術(shù),能夠在易耗資源的環(huán)境下保障系統(tǒng)的正常運(yùn)行。在進(jìn)一步的技術(shù)創(chuàng)新中,Linux虛擬內(nèi)存技術(shù)將會(huì)繼續(xù)進(jìn)化,為系統(tǒng)的運(yùn)行機(jī)制增強(qiáng)更多的智能和效益。
相關(guān)問題拓展閱讀:
- linux tmp目錄與內(nèi)存解析
- linux里面虛擬內(nèi)存和swap有什么區(qū)別?
linux tmp目錄與內(nèi)存解析
使用free可以獲取到設(shè)備當(dāng)前的內(nèi)存
其中,各項(xiàng)表示的含義如下所示:
total: 總計(jì)
物理內(nèi)存
大小。
used: 已使用內(nèi)存大小。
free: 可使用內(nèi)存大小伍梁。
shared: 多個(gè)進(jìn)程共享的內(nèi)存總額。
buffers/cached: 磁盤緩存大小。
單位都為KB。
對(duì)于系統(tǒng)而言,buffers和cached都是被使用的,所以可用內(nèi)存為KB。
對(duì)于
應(yīng)用程序
而言,buffers和cached是可用的。當(dāng)應(yīng)用程序需要內(nèi)存的時(shí)候,buffers和cached會(huì)被回收。從應(yīng)用程序的角度而言,可用內(nèi)存=free memory+buffers+cached。按上面的例子,即可用內(nèi)存為+18864+123656=。
使用cat /proc/meminfo可以查看更詳細(xì)的內(nèi)存信息。
/proc/iomem:查看物理設(shè)備在物理內(nèi)存中的映射關(guān)系
/proc/slabinfo:內(nèi)核對(duì)象的當(dāng)前使用狀態(tài)
/proc/vmstat:
虛擬內(nèi)存
統(tǒng)計(jì)信息??梢允褂胿mstat – Report virtual memory statistics 打印虛擬內(nèi)存狀態(tài)。
如上所示,/tmp為內(nèi)存
文件系統(tǒng)
,內(nèi)存掛載為內(nèi)存文件系統(tǒng)(tmpfs)。使用的物理空間不是磁盤,而是
內(nèi)存條
。設(shè)備重啟后,/tmp下文件全清空腔攔運(yùn)。
tmpfs文件系統(tǒng)衡消產(chǎn)生原因是為了提高性能。程序運(yùn)行時(shí)候產(chǎn)生的臨時(shí)文件放在磁盤會(huì)影響性能,于是tmpfs作為虛擬內(nèi)存子系統(tǒng)來儲(chǔ)存文件。POSIX共享內(nèi)存也是基于tmpfs來實(shí)現(xiàn)的。
tmpfs的更大空間由RM(Real Memory,即物理內(nèi)存)和swap(硬盤虛擬的內(nèi)存空間)組成。
查看掛載信息,可知 tmpfs 文件系統(tǒng)的掛載點(diǎn)有兩個(gè),一個(gè)/dev/shm,另一個(gè)為/tmp。默認(rèn)情況下, /tmp 將最多使用一半內(nèi)存。
如果往/tmp文件夾加入大量文件,也會(huì)造成系統(tǒng)內(nèi)存不足。
使用ps可以查看進(jìn)程的狀態(tài)
其中與內(nèi)存相關(guān)項(xiàng)含義如下所示:
VSZ:虛擬內(nèi)存大小。virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change. (alias vsize).
RSS:實(shí)際使用物理內(nèi)存。resident set size, the non-swapped physical memory that a task has used (in kiloBytes). (alias rssize, rsz).
虛擬內(nèi)存是對(duì)進(jìn)程而言使用的內(nèi)存,會(huì)比較大,可以理解為一個(gè)內(nèi)存布局,建立虛擬內(nèi)存和磁盤文件的映射關(guān)系。在進(jìn)程調(diào)用的時(shí)候,查找虛擬內(nèi)存,將虛擬內(nèi)存對(duì)應(yīng)磁盤文件拷貝到物理內(nèi)存,進(jìn)行調(diào)度尋址等操作。
進(jìn)程使用的物理內(nèi)存為RSS表示的物理內(nèi)存大小,其中包括鏈接的
動(dòng)態(tài)庫
使用的內(nèi)存,不只是單獨(dú)進(jìn)程使用的物理內(nèi)存大小。
也可以通過/proc/下去查找對(duì)應(yīng)進(jìn)程id的相關(guān)內(nèi)存信息。
/proc/pid/maps pid為進(jìn)程號(hào),顯示當(dāng)前進(jìn)程所占用的虛擬地址。
/proc/pid/statm 進(jìn)程所占用的內(nèi)存。
linux里面虛擬內(nèi)存和swap有什么區(qū)別?
為了提高磁盤存取效率, Linux做了一些精心的設(shè)計(jì), 除了對(duì)dentry進(jìn)行緩存(用于VFS,加速文件路徑名到inode的轉(zhuǎn)換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache.前者針對(duì)磁盤塊的讀寫,后者針對(duì)文件inode的讀寫.這些Cache有效縮短了I/O系統(tǒng)調(diào)用(比如 read,write,getdents)的時(shí)間.
內(nèi)存活動(dòng)基本上可以用3個(gè)數(shù)字來量化:活動(dòng)虛擬內(nèi)存總量,交換(swapping)率和調(diào)頁(paging)率.其中之一個(gè)數(shù)字表明內(nèi)存的總需求量,后兩個(gè)數(shù)字表示那些內(nèi)存中有多少比例正處在使用之中.目標(biāo)是減少內(nèi)存活動(dòng)或增加內(nèi)存量,直到調(diào)頁率保持在一個(gè)可以接受的水平上為止.
活動(dòng)虛擬內(nèi)存的總量(VM)=實(shí)際內(nèi)存大?。╯ize of real memory)(物理內(nèi)存)+使用的交換空間大小(amount of swap space used)
當(dāng)程序運(yùn)行需要的內(nèi)存大于物理內(nèi)存時(shí),Linux系統(tǒng)采用了調(diào)頁機(jī)制,即系統(tǒng)copy一些內(nèi)存中的頁面到磁盤上,騰出來空間供進(jìn)程使用。
大多數(shù)系統(tǒng)可以忍受偶爾的調(diào)頁,但是頻繁的調(diào)頁會(huì)使系統(tǒng)性能急劇下降。
Linux內(nèi)存管理:Linux系統(tǒng)通過2種方法進(jìn)行內(nèi)存管理,“調(diào)頁算法”,“交換技術(shù)”。
調(diào)頁算法是將內(nèi)存中最近不常使用的判簡鏈頁面換到磁盤上,把常使用的頁面(活動(dòng)頁面)保留在內(nèi)存中供進(jìn)程使用。
交換技術(shù)是系統(tǒng)將整個(gè)進(jìn)程,而不是部分頁面,全部換到磁盤上。正常情況下,系統(tǒng)會(huì)發(fā)生一些交換過程。
當(dāng)內(nèi)存嚴(yán)重不足時(shí),系統(tǒng)會(huì)頻繁使用調(diào)頁和交換,這增加了磁盤I/O的負(fù)載。進(jìn)一步降低了系統(tǒng)對(duì)作業(yè)的執(zhí)行速度,即系統(tǒng)I/O資源問題又會(huì)影響到內(nèi)存資源的分配。
Linux的虛擬內(nèi)存是一個(gè)十分復(fù)雜的子系統(tǒng),它實(shí)現(xiàn)了進(jìn)程間代碼與數(shù)據(jù)共享機(jī)制的透明性,并能夠分配比系統(tǒng)現(xiàn)有物理內(nèi)存更多的內(nèi)存,某些操作系統(tǒng)的虛存甚至能通過提供緩存功能影響到文件系統(tǒng)的性能,各種風(fēng)格的Linux的虛存的實(shí)現(xiàn)方式區(qū)別很大,但都離不開下面的4個(gè)概念。
1:實(shí)際內(nèi)存
實(shí)際內(nèi)存是指一個(gè)系統(tǒng)中實(shí)際存在的物理內(nèi)存,稱為RAM。實(shí)際內(nèi)咐并存是存儲(chǔ)臨時(shí)數(shù)據(jù)最快最有效的方掘?qū)O式,因此必須盡可能地分配給應(yīng)用程序,現(xiàn)在的RAM的形式有多種:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用糾錯(cuò)機(jī)制(ECC)。
2:交換空間
交換空間是專門用于臨時(shí)存儲(chǔ)內(nèi)存的一塊磁盤空間,通常在頁面調(diào)度和交換進(jìn)程數(shù)據(jù)時(shí)使用,通常推薦交換空間的大小應(yīng)該是物理內(nèi)存的二到四倍。
3:頁面調(diào)度
頁面調(diào)度是指從磁盤向內(nèi)存?zhèn)鬏敂?shù)據(jù),以及相反的過程,這個(gè)過程之所以被稱為頁面調(diào)度,是因?yàn)長inux內(nèi)存被平均劃分成大小相等的頁面;通常頁面大小為 4KB和8KB(在Solaris中可以用pagesize命令查看)。當(dāng)可執(zhí)行程序開始運(yùn)行時(shí),它的映象會(huì)一頁一頁地從磁盤中換入,與此類似,當(dāng)某些內(nèi)存在一段時(shí)間內(nèi)空閑,就可以把它們換出到交換空間中,這樣就可以把空閑的RAM交給其他需要它的程序使用。
4:交換
頁面調(diào)度通常容易和交換的概念混淆,頁面調(diào)度是指把一個(gè)進(jìn)程所占內(nèi)存的空閑部分傳輸?shù)酱疟P上,而交換是指當(dāng)系統(tǒng)中實(shí)際的內(nèi)存已不夠滿足新的分配需求時(shí),把整個(gè)進(jìn)程傳輸?shù)酱疟P上,交換活動(dòng)通常意味著內(nèi)存不足。
vmstat監(jiān)視內(nèi)存性能:該命令用來檢查虛擬內(nèi)存的統(tǒng)計(jì)信息,并可顯示有關(guān)進(jìn)程狀態(tài)、空閑和交換空間、調(diào)頁、磁盤空間、CPU負(fù)載和交換,cache刷新以及中斷等方面的信息。
關(guān)于linux 進(jìn)程 虛擬內(nèi)存的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價(jià)格厚道的香港/美國云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)——四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,高電服務(wù)器托管,算力服務(wù)器租用,可選線路電信、移動(dòng)、聯(lián)通機(jī)房等。
文章題目:Linux虛擬內(nèi)存及其對(duì)進(jìn)程的影響(linux進(jìn)程虛擬內(nèi)存)
文章分享:http://m.fisionsoft.com.cn/article/coceogh.html


咨詢
建站咨詢
