iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
自我挑戰組

Linux Kernel 網路巡禮系列 第 16

記憶體管理 (1) - Address Space

  • 分享至 

  • xImage
  •  

這次的鐵人賽也已經完成一半拉。
https://ithelp.ithome.com.tw/upload/images/20240930/20152703LhYdpAZ9Zi.png
在前半段的內容我們花了大量的時間,在講檔案系統和 system call。接下來,我們要調轉方向,從記憶體管理和PCI設備開始研究網卡相關的議題。


在程式開發中,我們常常提到記憶體地址,然而這些地址實際上都是虛擬地址,並不是 RAM 內部實際存放資料的物理地址。虛擬地址必須經過一系列的轉換與映射,才能夠對應到 RAM 的物理地址,這個過程涉及到 Segmentation(分段)、Paging(分頁)、TLB(Translation Lookaside Buffer)、MMU(Memory Management Unit)等結構與技術。

Address Space and Translation

首先,我們需要了解 address space(地址空間)的概念。Address space 是一個參照,我們討論的記憶體地址,這個數字本身並沒有直接意義,只有在特定的 address space 範圍內,它才具備實際意義。

程式在執行時,使用的是虛擬記憶體地址。為了能夠實際存取 RAM,虛擬記憶體地址需要被轉換成 RAM 使用的物理地址。這個轉換過程對程式本身是透明的,完全由 CPU 的硬體自動完成,負責這個記憶體轉換的模組稱為 Memory Management Unit (MMU)。

https://ithelp.ithome.com.tw/upload/images/20240930/20152703zMNth86mEY.png

在 Intel 的 CPU 架構中,虛擬地址又稱為邏輯地址(Logical Address)。從邏輯地址到物理地址的轉換過程包含兩個步驟:

  1. 首先通過分段機制(Segmentation)轉換成線性地址(Linear Address)
  2. 接著再通過分頁機制(Paging)轉換成物理地址(Physical Address)。

這兩層的轉換都是由 MMU 自動完成的。接下來兩天,我們會分別看看 Paging 跟 Segmentation 是如何運作的。


上一篇
網路命名空間、proc檔案系統與nsfs檔案系統 (3)
下一篇
記憶體管理 (2) - Paging 機制
系列文
Linux Kernel 網路巡禮30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言