最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一文帶你解析Linux內(nèi)核內(nèi)存布局?。▽W(xué)習(xí)起來吧~)

2022-05-31 17:38 作者:補給站Linux內(nèi)核  | 我要投稿

內(nèi)核內(nèi)存布局

64位Linux一般使用48位來表示虛擬地址空間,43位表示物理地址, 通過命令:cat /proc/cpuinfo。


cat /proc/meminfo


ARM64架構(gòu)處理器采用48位物理尋址機制,最大可尋找256TB的物理地址空間。對于目前應(yīng)用完全足夠,不需要擴展到64位的物理尋址。虛擬地址也同樣最大支持48位尋址,所以 在處理器架構(gòu)設(shè)計上,把虛擬地址空間劃分為兩個空間,每個空間最大支持256TB,linux內(nèi)核在大多數(shù)體系結(jié)構(gòu)上都把兩個地址劃分為:用戶空間和內(nèi)核空間。

用戶空間:0x0000_0000_0000_0000至0x0000_ffff_ffff_ffff。 內(nèi)核空間:0xffff_0000_0000_0000至0xffff_ffff_ffff_ffff。


【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦!??!前100名進群領(lǐng)取,額外贈送一份價值699的內(nèi)核資料包(含視頻教程、電子書、實戰(zhàn)項目及代碼)??

內(nèi)存布局

  • QEMU平臺,可以打印ARM64架構(gòu)linux內(nèi)核內(nèi)存分布情況。


堆管理

  • 堆是進程中主要用于動態(tài)分配變量和數(shù)據(jù) 的內(nèi)存區(qū)域,堆的管理對應(yīng)程序員不是直接可見的。因為它依賴標準庫提供的各個輔助函數(shù)(其 中最重要的是malloc)來分配任意長度的內(nèi)存區(qū)。 malloc和內(nèi)核之間的經(jīng)典接口是brk系統(tǒng)調(diào)用,負責(zé)擴展/收縮堆。 堆是一個連續(xù)的內(nèi)存區(qū)域,在擴展時自下至上增長。其中mm_struct結(jié)構(gòu),包含堆在虛擬地 址空間中的起始和當前結(jié)束地址(start_brk和brk)。

sys_brk流程


  • brk機制基于匿名映射實現(xiàn),以減少內(nèi)部的開銷。在檢查過用于brk的值的新地址未超出堆的限制之后,sys_brk第一個重要的操作是將請求的地址按頁長對齊。

  • brk()用于用戶進程想內(nèi)核申請空間,用于擴展用戶堆??臻g,或者回收用戶堆??臻g。

  • malloc()為小空間申請,brk()為大空間申請。do_brk()用于增長動態(tài)分配區(qū)。do_munmap()釋放動態(tài)分配區(qū)。

do_brk()源碼分析

  • 大內(nèi)核鎖BKL

  • 遞歸鎖:嵌套上鎖解鎖。

  • 自動釋放特性。

  • 本質(zhì)上自旋鎖,不同在于自旋鎖不可以遞歸獲取鎖(會導(dǎo)致死鎖),大內(nèi)核鎖可以遞歸獲取鎖,保護整個內(nèi)核。保持鎖的時間太長,嚴重影響系統(tǒng)性能和可伸縮性,因而被淘汰。

  • 【注意】

  • 原子操作對整數(shù)操作,自旋鎖和信號量應(yīng)用比較廣泛。當臨界區(qū)小應(yīng)該選擇自旋鎖,反之應(yīng)該信號量。

  • per-CPU計數(shù)器

  • 引入目的是加速SMP系統(tǒng)上計數(shù)器操作。

  • 基本原理:

  • 計數(shù)器的準確值存儲在內(nèi)存中的某一個地址,準確值所在內(nèi)存位置之后是一個數(shù)組,每個數(shù)組想對應(yīng)于系統(tǒng)中的一個CPU。

  • Linux系統(tǒng)尤其是針對SMP或者NUMA架構(gòu)的多CPU系統(tǒng)的時候,主要描述每個CPU私有數(shù)據(jù)時,系統(tǒng)提供該機制per-cpu。

  • 三種CPU模式:x86 x64 ia64

  • X86表示基于X86指令安裝模式;

  • x64表示64位系統(tǒng)程序;

  • ia64主要用于企業(yè)級服務(wù)器,inter安騰架構(gòu)基于a64處理器架構(gòu)的服務(wù)器,64位運算能力、尋址空間,數(shù)據(jù)處理能力方面突破性提高。

  • 總結(jié)

  • 本文介紹了內(nèi)核的內(nèi)存布局,分布情況,堆管理,malloc與brk區(qū)別,大內(nèi)核鎖,per-CPU計數(shù)器等。




一文帶你解析Linux內(nèi)核內(nèi)存布局?。▽W(xué)習(xí)起來吧~)的評論 (共 條)

分享到微博請遵守國家法律
许昌市| 同德县| 修文县| 塘沽区| 东乌珠穆沁旗| 海门市| 连平县| 甘孜县| 汝南县| 咸阳市| 平南县| 广东省| 团风县| 荆州市| 麻城市| 治县。| 新野县| 涟源市| 射洪县| 扬中市| 沁水县| 邻水| 右玉县| 长宁区| 阿鲁科尔沁旗| 玛曲县| 德清县| 平乡县| 桃源县| 福清市| 晋中市| 河东区| 丰城市| 新津县| 迁西县| 泸溪县| 万载县| 库伦旗| 绩溪县| 黄骅市| 蚌埠市|