强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁 > 廠商 > 問答 > linux內存管理,linux的儲存管理機制

linux內存管理,linux的儲存管理機制

來源:整理 時間:2023-08-24 19:52:43 編輯:智能門戶 手機版

本文目錄一覽

1,linux的儲存管理機制

Linux存儲管理的基本框架管理機制 其內核采用虛擬頁式存儲管理,采用三次映射機制實現(xiàn)從線性地址到物理地址的映射。 參考資料: http://club.chinaren.com/bbs/index.jsp?boardid=682&hotmsgid=82224784

linux的儲存管理機制

2,如何有效的學習linux內存管理

Linux內存管理機制: 一 物理內存和虛擬內存 我們知道,直接從物理內存讀寫數(shù)據(jù)要比從硬盤讀寫數(shù)據(jù)要快的多,因此,我們希望所有數(shù)據(jù)的讀取和寫入都在內存完成,而內存是有限的,這樣就引出了物理內存與虛擬內存的概念
linux管理內存是優(yōu)先使用物理內存,只有在物理內存不足的時候才會使用虛擬內存(swap交換分區(qū)),而windows是數(shù)據(jù)隨機的 寫進虛擬內存或者物理內存中的

如何有效的學習linux內存管理

3,linux操作系統(tǒng)下的存儲管理是怎么樣的

樹枝形目錄管理的,所有目錄全掛在/(根目錄)下。.簡單給你介紹下,linux存儲文件都是亂放,比如一間房,linux存放文件就是亂扔里面,讀取時比較快,方便。windows存放文件是一個挨著一個,這樣如果讀取文件時,有些文件被壓在其他文件下面,讀取沒有l(wèi)inux方便。大致這么理解就行。
這不是一兩句能寫清楚的,建議你看看講內核的《linux內核設計與實現(xiàn)(原書第3版)》,比較適合你這樣的有點點基礎的入門新獸。

linux操作系統(tǒng)下的存儲管理是怎么樣的

4,Linux 系統(tǒng)是怎樣進行內存管理的

Linux 系統(tǒng)和android 雖然都是用的是linux內核,但對處理程序內存的方式不一樣,特別是前臺的上層程序,內核級程序基本是一樣的。 linux內核基本是先把數(shù)據(jù)都放在內存上的,內存不夠才放到交換分區(qū)(虛擬內存)上
在終端中運行 fdisk -l查看哪個分區(qū)有空,然后運行sudo mkswap /dev/sda 添加交換分區(qū),sudo swapon /dev/sda啟用分區(qū),sudo /dev/sda swap swap defaults 0 0寫入啟動,如果沒有空的分區(qū),那就在較大的分區(qū)中設置交換文件 sudo dd if=/dev/zero of=/swapfile1 bs=1024k count=512 創(chuàng)建大小為512m的交換文件(512可以自己定義),sudo swapon /swapfile1 啟用交換文件sudo /swapfile1 swap swap defaults 0 0寫入啟動

5,linux 如何動態(tài)分配內存

Linux內核運行在X86機器的物理內存管理使用簡單平坦內存模型,每個用戶進程內存(虛擬內存)地址范圍為從0到TASK_SIZE字節(jié),超過此內存的限制不能被用戶訪問。用戶進程被分為幾個邏輯段,成為虛擬內存區(qū)域,內核跟蹤和管理用戶進程的虛擬內存區(qū)域提供適當?shù)膬却婀芾砗蛢却姹Wo處理。 do_brk()是一個內核函數(shù),用于間接調用管理進程的內存堆的增加和縮減 (brk),它是一個mmap(2)系統(tǒng)調用的簡化版本,只處理匿名映射(如未初始化數(shù)據(jù))。 do_brk()改變進程的地址空間。地址是代表數(shù)據(jù)段結束的一個指針(事實上是進程的堆區(qū)域)。 do_brk()的參數(shù)是一個絕對邏輯地址,這個地址代表地址空間新的結尾。更實際地說,我們在編寫用戶程序的時候從來就不應該使用這個函數(shù)。使用這個函數(shù)的用戶程序就不能再使用malloc(),這是一個大問題,因為標注庫的許多部分依賴于malloc()。 如果在用戶程序中使用do_brk()可能會導致難以發(fā)現(xiàn)的程序崩潰。 do_brk(addr, len)函數(shù)給從addr到addr+len建立虛擬內存區(qū)vm_area_struct(該區(qū)的起始地址為addr;結束地址為addr+len),該虛擬內存區(qū)作為進程的堆來使用。 malloc將從此區(qū)域獲取內存空間(虛擬內存), free()將會把malloc()獲取的虛擬空間釋放掉(歸還到該進程的堆的空閑空間中去)

6,Linux的內存管理機制是什么樣的

在早期的計算機中,程序是直接運行在物理內存上的。換句話說,就是程序在運行的過程中訪問的都是物理地址。如果這個系統(tǒng)只運行一個程序,那么只要這個程序所需的內存不要超過該機器的物理內存就不會出現(xiàn)問題,我們也就不需要考慮內存管理這個麻煩事了,反正就你一個程序,就這么點內存,吃不吃得飽那是你的事情了。然而現(xiàn)在的系統(tǒng)都是支持多任務,多進程的,這樣CPU以及其他硬件的利用率會更高,這個時候我們就要考慮到將系統(tǒng)內有限的物理內存如何及時有效的分配給多個程序了,這個事情本身我們就稱之為內存管理。下面舉一個早期的計算機系統(tǒng)中,內存分配管理的例子,以便于大家理解。加入我們有三個程序,程序1,2,3.程序1運行的過程中需要10M內存,程序2運行的過程中需要100M內存,而程序3運行的過程中需要20M內存。如果系統(tǒng)同時需要運行程序A和B,那么早期的內存管理過程大概是這樣的,將物理內存的前10M分配給A, 接下來的10M-110M分配給B。這種內存管理的方法比較直接,好了,假設我們這個時候想讓程序C也運行,同時假設我們系統(tǒng)的內存只有128M,顯然按照這種方法程序C由于內存不夠是不能夠運行的。大家知道可以使用虛擬內存的技術,內存空間不夠的時候可以將程序不需要用到的數(shù)據(jù)交換到磁盤空間上去,已達到擴展內存空間的目的。下面我們來看看這種內存管理方式存在的幾個比較明顯的問題。就像文章一開始提到的,要很深層次的把握某個技術最好搞清楚其發(fā)展歷程。1.進程地址空間不能隔離由于程序直接訪問的是物理內存,這個時候程序所使用的內存空間不是隔離的。舉個例子,就像上面說的A的地址空間是0-10M這個范圍內,但是如果A中有一段代碼是操作10M-128M這段地址空間內的數(shù)據(jù),那么程序B和程序C就很可能會崩潰(每個程序都可以系統(tǒng)的整個地址空間)。這樣很多惡意程序或者是木馬程序可以輕而易舉的破快其他的程序,系統(tǒng)的安全性也就得不到保障了,這對用戶來說也是不能容忍的。2. 內存使用的效率低如上面提到的,如果我們要像讓程序A、B、C同時運行,那么唯一的方法就是使用虛擬內存技術將一些程序暫時不用的數(shù)據(jù)寫到磁盤上,在需要的時候再從磁盤讀回內存。這里程序C要運行,將A交換到磁盤上去顯然是不行的,因為程序是需要連續(xù)的地址空間的,程序C需要20M的內存,而A只有10M的空間,所以需要將程序B交換到磁盤上去,而B足足有100M,可以看到為了運行程序C我們需要將100M的數(shù)據(jù)從內存寫到磁盤,然后在程序B需要運行的時候再從磁盤讀到內存,我們知道IO操作比較耗時,所以這個過程效率將會十分低下。3. 程序運行的地址不能確定程序每次需要運行時,都需要在內存中非配一塊足夠大的空閑區(qū)域,而問題是這個空閑的位置是不能確定的,這會帶來一些重定位的問題,重定位的問題確定就是程序中引用的變量和函數(shù)的地址,如果有不明白童鞋可以去查查編譯愿意方面的資料。內存管理無非就是想辦法解決上面三個問題,如何使進程的地址空間隔離,如何提高內存的使用效率,如何解決程序運行時的重定位問題?這里引用計算機界一句無從考證的名言:“計算機系統(tǒng)里的任何問題都可以靠引入一個中間層來解決?!爆F(xiàn)在的內存管理方法就是在程序和物理內存之間引入了虛擬內存這個概念。虛擬內存位于程序和屋里內存之間,程序只能看見虛擬內存,再也不能直接訪問物理內存。每個程序都有自己獨立的進程地址空間,這樣就做到了進程隔離。這里的進程地址空間是指虛擬地址。顧名思義既然是虛擬地址,也就是虛的,不是現(xiàn)實存在的地址空間。既然我們在程序和物理地址空間之間增加了虛擬地址,那么就要解決怎么從虛擬地址映射到物理地址,因為程序最終肯定是運行在物理內存中的,主要有分段和分頁兩種技術。分段(Segmentation):這種方法是人們最開始使用的一種方法,基本思路是將程序所需要的內存地址空間大小的虛擬空間映射到某個物理地址空間。段映射機制:每個程序都有其獨立的虛擬的獨立的進程地址空間,可以看到程序A和B的虛擬地址空間都是從0x00000000開始的。我們將兩塊大小相同的虛擬地址空間和實際物理地址空間一一映射,即虛擬地址空間中的每個字節(jié)對應于實際地址空間中的每個字節(jié),這個映射過程由軟件來設置映射的機制,實際的轉換由硬件來完成。這種分段的機制解決了文章一開始提到的3個問題中的進程地址空間隔離和程序地址重定位的問題。程序A和程序B有自己獨立的虛擬地址空間,而且該虛擬地址空間被映射到了互相不重疊的物理地址空間,如果程序A訪問虛擬地址空間的地址不在0x00000000-0x00A00000這個范圍內,那么內核就會拒絕這個請求,所以它解決了隔離地址空間的問題。我們應用程序A只需要關心其虛擬地址空間0x00000000-0x00A00000,而其被映射到哪個物理地址我們無需關心,所以程序永遠按照這個虛擬地址空間來放置變量,代碼,不需要重新定位。無論如何分段機制解決了上面兩個問題,是一個很大的進步,但是對于內存效率問題仍然無能為力。因為這種內存映射機制仍然是以程序為單位,當內存不足時仍然需要將整個程序交換到磁盤,這樣內存使用的效率仍然很低。那么,怎么才算高效率的內存使用呢。事實上,根據(jù)程序的局部性運行原理,一個程序在運行的過程當中,在某個時間段內,只有一小部分數(shù)據(jù)會被經(jīng)常用到。所以我們需要更加小粒度的內存分割和映射方法,此時是否會想到Linux中的Buddy算法和slab內存分配機制呢,哈哈。另一種將虛擬地址轉換為物理地址的方法分頁機制應運而生了。分頁機制:分頁機制就是把內存地址空間分為若干個很小的固定大小的頁,每一頁的大小由內存決定,就像Linux中ext文件系統(tǒng)將磁盤分成若干個Block一樣,這樣做是分別是為了提高內存和磁盤的利用率。試想以下,如果將磁盤空間分成N等份,每一份的大小(一個Block)是1M,如果我想存儲在磁盤上的文件是1K字節(jié),那么其余的999字節(jié)是不是浪費了。所以需要更加細粒度的磁盤分割方式,我們可以將Block設置得小一點,這當然是根據(jù)所存放文件的大小來綜合考慮的,好像有點跑題了,我只是想說,內存中的分頁機制跟ext文件系統(tǒng)中的磁盤分割機制非常相似。Linux中一般頁的大小是4KB,我們把進程的地址空間按頁分割,把常用的數(shù)據(jù)和代碼頁裝載到內存中,不常用的代碼和數(shù)據(jù)保存在磁盤中,我們還是以一個例子來說明,如下圖:進程虛擬地址空間、物理地址空間和磁盤之間的頁映射關系我們可以看到進程1和進程2的虛擬地址空間都被映射到了不連續(xù)的物理地址空間內(這個意義很大,如果有一天我們的連續(xù)物理地址空間不夠,但是不連續(xù)的地址空間很多,如果沒有這種技術,我們的程序就沒有辦法運行),甚至他們共用了一部分物理地址空間,這就是共享內存。進程1的虛擬頁VP2和VP3被交換到了磁盤中,在程序需要這兩頁的時候,Linux內核會產(chǎn)生一個缺頁異常,然后異常管理程序會將其讀到內存中。這就是分頁機制的原理,當然Linux中的分頁機制的實現(xiàn)還是比較復雜的,通過了也全局目錄,也上級目錄,頁中級目錄,頁表等幾級的分頁機制來實現(xiàn)的,但是基本的工作原理是不會變的。分頁機制的實現(xiàn)需要硬件的實現(xiàn),這個硬件名字叫做MMU(Memory Management Unit),他就是專門負責從虛擬地址到物理地址轉換的,也就是從虛擬頁找到物理頁。
文章TAG:linux內存內存管理管理linux內存管理

最近更新

  • 一次系統(tǒng),什么是電力系統(tǒng)的一次系統(tǒng)二次系統(tǒng)一次系統(tǒng),什么是電力系統(tǒng)的一次系統(tǒng)二次系統(tǒng)

    什么是電力系統(tǒng)的一次系統(tǒng)二次系統(tǒng)2,電腦多久需要重做系統(tǒng)3,繼電保護和防雷接地屬于變電站的一次系統(tǒng)設計里面嗎4,正常個人電腦要多久重新做一次系統(tǒng)5,家庭電腦適合多久做一次系統(tǒng)6,一個月.....

    問答 日期:2023-08-24

  • pads2007,PADS2007的下載地址pads2007,PADS2007的下載地址

    PADS2007的下載地址2,PADS2007安裝3,pADS2007是什么軟件4,哪位大哥幫下忙急求PADS2007安裝方法5,PADS20076,怎樣安裝PADS2007急急1,PADS2007的下載地址http://www.gougou.com/search?search=.....

    問答 日期:2023-08-24

  • CPU緩存,CPU的緩存是什么CPU緩存,CPU的緩存是什么

    CPU的緩存是什么2,什么是CPU的緩存3,請問電腦的CPU緩存是什么意思4,什么叫CPU的緩存用什么特別的地方很重要嗎作用出現(xiàn)了問5,CPU緩存是什么意思6,cpu緩存有什么用1,CPU的緩存是什么CPU緩存位.....

    問答 日期:2023-08-24

  • led模塊,LED模塊是什么led模塊,LED模塊是什么

    LED模塊是什么2,led模塊的分類3,請問LED電源LED驅動LED模塊LED模組他們分別是什么關4,led模組的概念5,LED模組是什么LED食人魚模組貼片模組又是什么現(xiàn)在LED模組6,請教什么是LCD和LED模組兩.....

    問答 日期:2023-08-24

  • 松下伺服電機,松下伺服電機驅動器松下伺服電機,松下伺服電機驅動器

    松下伺服電機驅動器2,安川伺服電機與松下伺服電機在性能上的區(qū)別3,去哪買松下伺服電機便宜點4,松下400w伺服電機參數(shù)5,松下A5系列伺服驅動器6,松下伺服電機怎樣調機械剛性7,松下伺服馬達是變.....

    問答 日期:2023-08-24

  • 電磁閥怎么接線,電磁閥怎么接線電磁閥怎么接線,電磁閥怎么接線

    電磁閥怎么接線2,電磁閥的接法3,電磁閥線咋接4,電磁閥怎么接電啊整個的電路連接5,電磁閥怎么接6,中央空調電磁閥三條線怎么接1,電磁閥怎么接線電磁閥的接線盒有三個接線端子,并排端子為電源接.....

    問答 日期:2023-08-24

  • 調試,調試是什么啊調試,調試是什么啊

    調試是什么啊2,調試是什么意思3,名詞解釋調試4,什么叫調試它和測試有什么區(qū)別5,調試是什么意思遇到問題了6,調試是做什么的什么叫調試1,調試是什么啊編好程序后,用各種手段進行查錯和排錯的過.....

    問答 日期:2023-08-24

  • 單片機型號,目前性能比較優(yōu)越的單片機有哪些型號的單片機型號,目前性能比較優(yōu)越的單片機有哪些型號的

    目前性能比較優(yōu)越的單片機有哪些型號的2,最常用的16位單片機是什么型號的啊3,大型公司主要用的是哪幾款單片機4,增強型51系列單片機有哪些5,51單片機就是80c51嗎6,8051單片機和C51單片機有.....

    問答 日期:2023-08-24