国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制

這篇具有很好參考價(jià)值的文章主要介紹了【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

內(nèi)存主要是用來存儲(chǔ)系統(tǒng)和應(yīng)用程序的指令、數(shù)據(jù)、緩存等

內(nèi)存映射

內(nèi)存是需要安全機(jī)制保護(hù)的,所以只有內(nèi)核才可以直接訪問物理內(nèi)存。進(jìn)程如果要訪問內(nèi)存需要通過獨(dú)立的虛擬地址空間。

虛擬地址空間其實(shí)包含兩部分。一部分是內(nèi)核空間,另一部分就是用戶空間。
【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制,# 操作系統(tǒng),# Linux,linux,運(yùn)維,服務(wù)器
進(jìn)程有用戶態(tài)和內(nèi)核態(tài),用戶態(tài)下只能訪問用戶空間,只有切換到內(nèi)核態(tài)時(shí)才可以訪問內(nèi)核空間。
只有實(shí)際使用的虛擬內(nèi)存才會(huì)分配物理內(nèi)存,通過內(nèi)存映射來管理。
內(nèi)存映射其實(shí)就是將物理地址內(nèi)存映射到虛擬內(nèi)存。為每個(gè)進(jìn)程維護(hù)了一張頁表
【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制,# 操作系統(tǒng),# Linux,linux,運(yùn)維,服務(wù)器
頁表其實(shí)是存儲(chǔ)在CPU的內(nèi)存管理單元MMU中。當(dāng)發(fā)生缺頁中斷的時(shí)候,進(jìn)入內(nèi)核分配內(nèi)存,更新進(jìn)程頁表,然后返回用戶空間。
TLB是MMU中的高速緩存,通過減少上下文切換,可以減少TLB的刷新次數(shù),就可以提高TLB的使用率。進(jìn)而提高CPU的內(nèi)存訪問性能。

MMU是按照4KB為一頁進(jìn)行存儲(chǔ)的,如果是4GB內(nèi)存,那么就需要100多W頁表項(xiàng)進(jìn)行存儲(chǔ),才可以實(shí)現(xiàn)整個(gè)地址空間的映射。為了解決頁表項(xiàng)過多的問題,Linux提供了兩種機(jī)制,多級(jí)頁表&大頁

多級(jí)頁表其實(shí)就是按照多個(gè)層級(jí),最后按照對(duì)應(yīng)的偏移地址。如下就是通過4級(jí)頁表來管理。并且只存儲(chǔ)使用的內(nèi)存。
【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制,# 操作系統(tǒng),# Linux,linux,運(yùn)維,服務(wù)器

虛擬內(nèi)存空間分布

【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制,# 操作系統(tǒng),# Linux,linux,運(yùn)維,服務(wù)器
空間內(nèi)存分配其實(shí)就是按照 棧、文件映射、堆、數(shù)據(jù)段、只讀段。堆和文件映射是動(dòng)態(tài)分配的。

內(nèi)存分配與回收

內(nèi)存的分配是通過brk()和mmap()兩個(gè)函數(shù)進(jìn)行處理的。
brk() : 分配小于128K的內(nèi)存,使用完并不立即歸還給系統(tǒng),而是緩存起來重復(fù)利用
mmap() : 直接使用內(nèi)存映射來分配,也就是在文件映射段找一塊空閑內(nèi)存分配出去。

而當(dāng)內(nèi)存不足時(shí),

  • 回收緩存:使用LRU算法等進(jìn)行回收。
  • 回收不常用的內(nèi)存,通過交換分區(qū)直接寫到磁盤中
  • 殺死進(jìn)程:內(nèi)存緊張時(shí)通過OOM,殺死占用大量內(nèi)存的進(jìn)程。

交換分區(qū) Swap
其實(shí)就是把一塊磁盤當(dāng)作內(nèi)存來使用,把不需要的進(jìn)程數(shù)據(jù)先存儲(chǔ)到磁盤中稱為幻出,把數(shù)據(jù)從磁盤拉入內(nèi)存稱為換入。
但是swap可以增加系統(tǒng)內(nèi)存,但是磁盤讀寫慢,所以會(huì)導(dǎo)致嚴(yán)重的內(nèi)存性能問題。

OOM
內(nèi)核的一種保護(hù)機(jī)制,監(jiān)控進(jìn)程內(nèi)存的使用情況,大概就是為每個(gè)進(jìn)程進(jìn)行評(píng)分oom_socre。占用分?jǐn)?shù)比較高的,就容易被殺死。

/proc 

范圍在[-17, 15 ]可以進(jìn)行設(shè)置 -17是禁止。數(shù)值越少,越不容易被OOM殺死。

可以通過配置

echo -16 > /proc/$(pidof sshd)/oom_adj

如何查看內(nèi)存使用情況

【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制,# 操作系統(tǒng),# Linux,linux,運(yùn)維,服務(wù)器
total是總內(nèi)存、used是硬使用內(nèi)存,包含共享內(nèi)存、free是未使用內(nèi)存、shared是共享內(nèi)存的大小。
buff/cache 是緩存和緩沖區(qū)的大小。 available是新進(jìn)程可用內(nèi)存大小。

【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制,# 操作系統(tǒng),# Linux,linux,運(yùn)維,服務(wù)器
VIRT:進(jìn)程虛擬內(nèi)存大小
RES常駐內(nèi)存大小
SHR 共享內(nèi)存大小
%MEM是進(jìn)程占用內(nèi)存百分比。

小結(jié)

本篇主要簡(jiǎn)要介紹虛擬內(nèi)存、內(nèi)存如何分配、如何回收的、以及如何進(jìn)行查看內(nèi)存占用TOP、FREE兩個(gè)命令。文章來源地址http://www.zghlxwxcb.cn/news/detail-700386.html

到了這里,關(guān)于【操作系統(tǒng)】聊聊Linux內(nèi)存工作機(jī)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【操作系統(tǒng)】聊聊不可中斷進(jìn)程和僵尸進(jìn)程

    【操作系統(tǒng)】聊聊不可中斷進(jìn)程和僵尸進(jìn)程

    當(dāng)我們輸入top命令之后 其中S代表的是當(dāng)前進(jìn)程的狀態(tài) R (Running 或 Runnable) 進(jìn)程在CPU的就緒隊(duì)列中,正在運(yùn)行或者等待運(yùn)行。 D (Disk Sleep) 不可中斷睡眠,進(jìn)程正在跟硬件交互,不運(yùn)行被其他進(jìn)程或者中斷打斷。 Z (Zombie) 進(jìn)程已經(jīng)結(jié)束,但是父進(jìn)程沒有回收資源 (描述符、PID等

    2024年02月07日
    瀏覽(15)
  • 操作系統(tǒng)的運(yùn)行機(jī)制、中斷和異常、系統(tǒng)調(diào)用

    操作系統(tǒng)的運(yùn)行機(jī)制、中斷和異常、系統(tǒng)調(diào)用

    ??個(gè)人主頁: ?? 葉落閑庭 ??我的專欄:?? c語言 數(shù)據(jù)結(jié)構(gòu) javaweb 石可破也,而不可奪堅(jiān);丹可磨也,而不可奪赤。 程序是如何運(yùn)行的? 一條高級(jí)語言的代碼翻譯過來可能會(huì)對(duì)應(yīng)多條機(jī)器指令 程序運(yùn)行的過程就是CPU一條一條的機(jī)器指令的執(zhí)行過程 “指令”就是處理器(

    2024年02月14日
    瀏覽(17)
  • 操作系統(tǒng) day03(運(yùn)行機(jī)制)

    操作系統(tǒng) day03(運(yùn)行機(jī)制)

    機(jī)器指令 二進(jìn)制機(jī)器指令就是處理器(CPU)能識(shí)別、執(zhí)行的最基本命令 程序運(yùn)行的過程就是CPU執(zhí)行一條一條的機(jī)器指令的過程 應(yīng)用程序和內(nèi)核程序 操作系統(tǒng)的最重要角色是:系統(tǒng)資源的管理者,而操作系統(tǒng)的對(duì)系統(tǒng)資源的管理工作就是在內(nèi)核部分實(shí)現(xiàn)的 特權(quán)指令和非特權(quán)

    2024年02月06日
    瀏覽(17)
  • [操作系統(tǒng)]3.內(nèi)存管理

    和前面兩篇是差不多的思路,僅為快速復(fù)習(xí)操作i系統(tǒng)基礎(chǔ)知識(shí)點(diǎn),例題暫無,考試不要參考,知識(shí)點(diǎn)來自王道操作系統(tǒng) 內(nèi)存管理主要完成的功能有 內(nèi)存空間的分配和回收 地址轉(zhuǎn)換(把邏輯地址轉(zhuǎn)化為內(nèi)存物理地址) 內(nèi)存空間的擴(kuò)充(覆蓋,交換,虛擬化) 存儲(chǔ)保護(hù) 因?yàn)橐粋€(gè)進(jìn)程如果想

    2024年02月08日
    瀏覽(35)
  • 【操作系統(tǒng)】內(nèi)存管理概念

    【操作系統(tǒng)】內(nèi)存管理概念

    1、 編譯:由編譯程序?qū)⒂脩粼创a編譯成若干個(gè)目標(biāo)模塊(編譯就是把高級(jí)語言翻譯成機(jī)器語言) 2、 鏈接:由鏈接程序?qū)⒕幾g后形成的一組目標(biāo)模塊,以及所需庫函數(shù)鏈接在一起,形成一個(gè)完整的裝入模塊 ① 靜態(tài)鏈接:在程序運(yùn)行之前,先將各目標(biāo)模塊及它們所需的庫函

    2024年02月06日
    瀏覽(33)
  • 【操作系統(tǒng)】03.內(nèi)存管理

    【操作系統(tǒng)】03.內(nèi)存管理

    現(xiàn)代操作系統(tǒng)使用的連接方式:運(yùn)行時(shí)動(dòng)態(tài)鏈接 對(duì)某些模塊的鏈接推遲到程序執(zhí)行時(shí)才進(jìn)行 現(xiàn)代操作系統(tǒng)使用的裝入方式:動(dòng)態(tài)重定位 程序裝入內(nèi)存后,邏輯地址不會(huì)立即轉(zhuǎn)換成物理地址,而是推遲到指令執(zhí)行的時(shí)候,需要一個(gè)重定位寄存器的支持 單一連續(xù)分配 固定分區(qū)

    2024年02月07日
    瀏覽(21)
  • 操作系統(tǒng)-內(nèi)存分配算法

    操作系統(tǒng)-內(nèi)存分配算法

    操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)題目 ??實(shí) 驗(yàn) 四內(nèi)存分配算法 ? ? 1.1 實(shí)驗(yàn)?zāi)康?一個(gè)好的計(jì)算機(jī)系統(tǒng)不僅要有一個(gè)足夠容量的、存取速度高的、穩(wěn)定可靠的主存儲(chǔ)器,而且要能合理地分配和使用這些存儲(chǔ)空間。當(dāng)用戶提出申請(qǐng)主存儲(chǔ)器空間時(shí),存儲(chǔ)管理必須根據(jù)申請(qǐng)者的要求,

    2024年02月03日
    瀏覽(20)
  • 【操作系統(tǒng)】內(nèi)存管理

    【操作系統(tǒng)】內(nèi)存管理

    本系列參考王道考研-操作系統(tǒng)以及博主@BitHachi 因?yàn)閏pu的處理速度很快,而外存的讀取速度又很慢,所以我們就需要先加載到內(nèi)存中,內(nèi)存的讀取速度比外存要快得多,如此實(shí)現(xiàn)更高效的處理 指令的工作原理 從X=X+1大致看一下指令的執(zhí)行過程 指令的工作基于地址。每個(gè)地址對(duì)

    2024年02月07日
    瀏覽(18)
  • 【操作系統(tǒng)】內(nèi)存空間

    【操作系統(tǒng)】內(nèi)存空間

    想要pmap這個(gè)進(jìn)程,需要進(jìn)程號(hào) 但是這個(gè)進(jìn)程在啟動(dòng)的一瞬間就執(zhí)行完了 用GDB把程序暫停下來,然后用pmap觀察地址空間 用 info inferiors 得到gdb里的進(jìn)程號(hào) ro 可讀 :只讀數(shù)據(jù) rx 可讀可執(zhí)行 :代碼 rw 可讀可寫 :待初始化值的變量 動(dòng)態(tài)鏈接的二進(jìn)制文件在開始執(zhí)行main函數(shù)之前

    2024年02月03日
    瀏覽(17)
  • 深入理解Windows操作系統(tǒng)機(jī)制(二)

    深入理解Windows操作系統(tǒng)機(jī)制(二)

    我是荔園微風(fēng),作為一名在IT界整整25年的老兵,今天我們來重新審視一下Windows這個(gè)我們熟悉的不能再熟悉的系統(tǒng)。 我們每天都在用Windows操作系統(tǒng),但是其實(shí)我們每天直接在打交道的并不是Windows操作系統(tǒng)的內(nèi)核,而是Windows操作系統(tǒng)的人機(jī)交互界面,這個(gè)界面其實(shí)只是Window

    2024年02月17日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包