0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

如意 ? 來源:Linux學(xué)習(xí) ? 作者:佚名 ? 2020-08-28 10:45 ? 次閱讀

linux 內(nèi)存地址空間

1、linux 內(nèi)存地址空間 Linux 內(nèi)存管理全貌

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

2、內(nèi)存地址——用戶態(tài)&內(nèi)核態(tài)

用戶態(tài):Ring3 運(yùn)行于用戶態(tài)的代碼則要受到處理器的諸多

內(nèi)核態(tài):Ring0 在處理器的存儲(chǔ)保護(hù)中,核心態(tài)

用戶態(tài)切換到內(nèi)核態(tài)的 3 種方式:系統(tǒng)調(diào)用、異常、外設(shè)中斷

區(qū)別:每個(gè)進(jìn)程都有完全屬于自己的,獨(dú)立的,不被干擾的內(nèi)存空間;用戶態(tài)的程序就不能隨意操作內(nèi)核地址空間,具有一定的安全保護(hù)作用;內(nèi)核態(tài)線程共享內(nèi)核地址空間;

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

3、內(nèi)存地址——MMU 地址轉(zhuǎn)換

MMU 是一種硬件電路,它包含兩個(gè)部件,一個(gè)是分段部件,一個(gè)是分頁部件

分段機(jī)制把一個(gè)邏輯地址轉(zhuǎn)換為線性地址

分頁機(jī)制把一個(gè)線性地址轉(zhuǎn)換為物理地址

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

4、內(nèi)存地址——分段機(jī)制

1) 段選擇符

為了方便快速檢索段選擇符,處理器提供了 6 個(gè)分段寄存器來緩存段選擇符,它們是:cs,ss,ds,es,fs 和 gs

段的基地址(Base Address):在線性地址空間中段的起始地址

段的界限(Limit):在虛擬地址空間中,段內(nèi)可以使用的最大偏移量

2) 分段實(shí)現(xiàn)

邏輯地址的段寄存器中的值提供段描述符,然后從段描述符中得到段基址和段界限,然后加上邏輯地址的偏移量,就得到了線性地址

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

5、內(nèi)存地址——分頁機(jī)制(32 位)

分頁機(jī)制是在分段機(jī)制之后進(jìn)行的,它進(jìn)一步將線性地址轉(zhuǎn)換為物理地址

10 位頁目錄,10 位頁表項(xiàng), 12 位頁偏移地址

單頁的大小為 4KB

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

6、用戶態(tài)地址空間

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

TEXT:代碼段可執(zhí)行代碼、字符串字面值、只讀變量

DATA:數(shù)據(jù)段,映射程序中已經(jīng)初始化的全局變量

BSS 段:存放程序中未初始化的全局變量

HEAP:運(yùn)行時(shí)的堆,在程序運(yùn)行中使用 malloc 申請(qǐng)的內(nèi)存區(qū)域

MMAP:共享庫(kù)及匿名文件的映射區(qū)域

STACK:用戶進(jìn)程棧

7、內(nèi)核態(tài)地址空間

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

直接映射區(qū):線性空間中從 3G 開始最大 896M 的區(qū)間,為直接內(nèi)存映射區(qū)

動(dòng)態(tài)內(nèi)存映射區(qū):該區(qū)域由內(nèi)核函數(shù) vmalloc 來分配

永久內(nèi)存映射區(qū):該區(qū)域可訪問高端內(nèi)存

固定映射區(qū):該區(qū)域和 4G 的頂端只有 4k 的隔離帶,其每個(gè)地址項(xiàng)都服務(wù)于特定的用途,如:ACPI_BASE 等

8、進(jìn)程內(nèi)存空間

用戶進(jìn)程通常情況只能訪問用戶空間的虛擬地址,不能訪問內(nèi)核空間虛擬地址

內(nèi)核空間是由內(nèi)核負(fù)責(zé)映射,不會(huì)跟著進(jìn)程變化;內(nèi)核空間地址有自己對(duì)應(yīng)的頁表,用戶進(jìn)程各自有不同額頁表

Linux操作系統(tǒng)知識(shí)講解:走進(jìn)linux 內(nèi)存地址空間

責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11324

    瀏覽量

    209938
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3040

    瀏覽量

    74167
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6858

    瀏覽量

    123485
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解

    Linux 操作系統(tǒng)和驅(qū)動(dòng)程序運(yùn)行在內(nèi)核空間,應(yīng)用程序運(yùn)行在用戶空間,兩者不能簡(jiǎn)單地使用指針傳遞數(shù)據(jù),因?yàn)?b class='flag-5'>Linux使用的虛擬
    發(fā)表于 05-08 10:33 ?3473次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>地址</b>映射模型與<b class='flag-5'>Linux</b>內(nèi)核高端<b class='flag-5'>內(nèi)存</b>詳解

    Linux操作系統(tǒng)基礎(chǔ)知識(shí)學(xué)習(xí)

    本文是我在學(xué)校自學(xué)Linux時(shí)所做的筆記,純理論,希望對(duì)大家有所幫助。文章中,Q表示問題,A表示回答。Linux操作系統(tǒng)概述Q1.什么是GNU?Linux與GNU有什么關(guān)系?A:1.G
    發(fā)表于 11-30 10:43

    Linux內(nèi)存系統(tǒng)---走進(jìn)Linux 內(nèi)存

    Linux內(nèi)存系統(tǒng)---走進(jìn)Linux 內(nèi)存 1、內(nèi)存
    發(fā)表于 08-26 08:05

    Linux操作系統(tǒng)

    linux的教學(xué)內(nèi)容1 、Linux概述 2 、Linux操作系統(tǒng)安裝3、 Linux的內(nèi)核 4 、Li
    發(fā)表于 04-10 16:54 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統(tǒng)</b>

    什么是Linux操作系統(tǒng)

    什么是Linux操作系統(tǒng)  簡(jiǎn)單地說,Linux是一套
    發(fā)表于 12-26 12:04 ?1408次閱讀

    Linux快速入門之安裝Linux操作系統(tǒng)及小結(jié)

    實(shí)驗(yàn)內(nèi)容 安裝Linux(Red Hat Enterprise 4 AS版本)操作系統(tǒng),查看Linux的目錄結(jié)構(gòu)。 3.實(shí)驗(yàn)步驟 (1)磁盤規(guī)劃。 在這一步驟中,需要留出最好有5GB以上的空間
    發(fā)表于 10-18 14:16 ?0次下載

    Linux下進(jìn)程的內(nèi)存結(jié)構(gòu)

    Linux操作系統(tǒng)采用虛擬內(nèi)存管理技術(shù),使得每個(gè)進(jìn)程都有各自互不干涉的進(jìn)程地址空間。該地址
    發(fā)表于 06-01 09:17 ?1488次閱讀
    <b class='flag-5'>Linux</b>下進(jìn)程的<b class='flag-5'>內(nèi)存</b>結(jié)構(gòu)

    深入淺出Linux的進(jìn)程地址空間

    我們知道,在32位機(jī)器上linux操作系統(tǒng)中的進(jìn)程的地址空間大小是4G,其中0-3G是用戶空間,3G-4G是內(nèi)核
    的頭像 發(fā)表于 06-20 09:57 ?1952次閱讀

    Linux操作系統(tǒng)知識(shí)講解走進(jìn)內(nèi)存

    Linux操作系統(tǒng)知識(shí)講解走進(jìn)內(nèi)存
    的頭像 發(fā)表于 08-28 10:30 ?2380次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>知識(shí)</b><b class='flag-5'>講解</b>:<b class='flag-5'>走進(jìn)</b><b class='flag-5'>內(nèi)存</b>

    Linux操作系統(tǒng)知識(shí)講解走進(jìn)Linux 內(nèi)存分配算法

    Linux操作系統(tǒng)知識(shí)講解走進(jìn)Linux 內(nèi)存分配
    的頭像 發(fā)表于 08-28 10:57 ?5478次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>知識(shí)</b><b class='flag-5'>講解</b>:<b class='flag-5'>走進(jìn)</b><b class='flag-5'>Linux</b> <b class='flag-5'>內(nèi)存</b>分配算法

    Linux操作系統(tǒng)知識(shí)講解走進(jìn)Linux 內(nèi)存使用場(chǎng)景

    Linux操作系統(tǒng)知識(shí)講解走進(jìn)Linux 內(nèi)存使用
    的頭像 發(fā)表于 08-28 11:04 ?2990次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>知識(shí)</b><b class='flag-5'>講解</b>:<b class='flag-5'>走進(jìn)</b><b class='flag-5'>Linux</b> <b class='flag-5'>內(nèi)存</b>使用場(chǎng)景

    Linux操作系統(tǒng)知識(shí)講解:避免內(nèi)存使用七大坑

    Linux操作系統(tǒng)知識(shí)講解:避免內(nèi)存使用七大坑
    的頭像 發(fā)表于 08-28 11:12 ?2855次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>知識(shí)</b><b class='flag-5'>講解</b>:避免<b class='flag-5'>內(nèi)存</b>使用七大坑

    linux操作系統(tǒng)基礎(chǔ)知識(shí)

    本文主要闡述了linux操作系統(tǒng)基礎(chǔ)知識(shí)。
    發(fā)表于 06-04 15:07 ?5895次閱讀

    深入剖析Linux共享內(nèi)存原理

    Linux系統(tǒng)中,每個(gè)進(jìn)程都有獨(dú)立的虛擬內(nèi)存空間,也就是說不同的進(jìn)程訪問同一段虛擬內(nèi)存地址所得到的數(shù)據(jù)是不一樣的,這是因?yàn)椴煌M(jìn)程相同的虛擬內(nèi)存地
    的頭像 發(fā)表于 10-30 09:52 ?2306次閱讀
    深入剖析<b class='flag-5'>Linux</b>共享<b class='flag-5'>內(nèi)存</b>原理

    什么是內(nèi)存 操作系統(tǒng)內(nèi)存介紹

    。 簡(jiǎn)而言之,電腦上的程序(進(jìn)程)運(yùn)行是需要使用到對(duì)應(yīng)大小的物理內(nèi)存。 虛擬內(nèi)存 實(shí)際上運(yùn)行的進(jìn)程并不是直接使用物理內(nèi)存地址,而是把進(jìn)程使用的內(nèi)存地址與實(shí)際的物理
    的頭像 發(fā)表于 10-09 16:23 ?947次閱讀
    什么是<b class='flag-5'>內(nèi)存</b> <b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>內(nèi)存</b>介紹