星期日,感覺是個適合算數的好日子,所以今天的文件,就決定是你了 Virtual Memory Layout on RISC-V Linux
!
=============================
RISC-V Linux 的虛擬記憶體佈局
=============================
:Author: Alexandre Ghiti <alex@ghiti.fr>
:Date: 12 February 2021
這份文件描述 RISC-V Linux 核心的虛擬記憶體佈局。
32 位元 RISC-V Linux 核心
=========================
32 位元 RISC-V Linux 核心
------------------------
待完成
64 位元 RISC-V Linux 核心
=========================
RISC-V 的特權架構文件描述 64 位元長度的位址
"必須讓第 63-48 位都等於第 47 位,否則會發生分頁錯誤中斷。"
而這表示有一個巨大的記憶體"孔洞"將虛擬記憶體空間分成兩半,
下半部是使用者空間所在的位址,上半部則是 RISC-V Linux 核心所使用的位址。
RISC-V Linux Kernel SV39
------------------------
RISC-V Linux Kernel 64 bit
的內文是引用 SV48 的文句;而記憶體的佈局(layout) 則是以 SV39 為例。different per mm
,這裡的 mm 指的應該是核心中使用到的資料結構 (data structure) struct mm
,這個資料結構是用來描述不同程序(process)所使用的記憶體空間(memory space)。kasan
、fixmap
、vmalloc/ioremap
、vmemmap
等等,都是核心內部使用到的不同技術,也分別有不同的文件來做介紹,這邊就不詳加贅述了,有機會另闢新文再來做紀錄。(因為筆者自己也沒有很清楚每一項的功能XDDD)ffffffe000000000 | -128 GB | ffffffff7fffffff | 124 GB | direct mapping of all physical memory
這一個區段,拿 ffffffff7fffffff
- ffffffe000000000
計算出來的大小應該是 126 GB
。126 GB
的話,和接下來的區段並不吻合,所以正確的應該是:
124 GB
fffffffeffffffff
$ git send-email --to corbet@lwn.net \
--to src.res@email.cn \
--to alex@ghiti.fr \
--to linux-kernel@vger.kernel.org \
--to linux-doc@vger.kernel.org \
--to linux-doc-tw-discuss@lists.sourceforge.net \
--cc ycliang@cs.nctu.edu.tw \
--cc ycliang@andestech.com \
*.patch
# *.patch == 0001-doc-Fix-typo-in-Documentation-riscv-vm-layout.patch,0002-docs-zh_TW-Add-translation-for-riscv-vm-layout.patch
那我們一樣明天見啦~