我們什么時候應該使用 KASAN(內核地址清理器)而不是 ASAN(地址清理器)?我們不能在內核中使用 ASAN 而不是 KASAN 嗎?為什么?
uj5u.com熱心網友回復:
ASAN 不會有用,因為內核不是普通程式,并且具有更復雜的記憶體和地址空間語意。它需要特殊處理,而 KASAN 知道如何處理事情,因為它正是為此目的而設計的。更不用說,ASAN 的實作方式只允許在作業系統之上的用戶空間應用程式中使用它。
一個簡單的用戶空間行程只有:
- 一個虛擬地址空間
- 堆疊上的自動變數
- bss/data/rodata 部分中的全域變數
- 通過例如動態分配的資料
malloc()
另一方面,內核具有:
- 用于不同目的的許多不同的記憶體分配器(kmalloc、vmalloc、alloc_pages 等)
- 許多不同的資料部分(內核資料、模塊資料等)
- 多個地址空間進行管理和切換
- DMA地址、用戶虛擬地址和物理地址
- 處理并發的不同方式(RCU、各種鎖、參考計數等)
- 處理更復雜的事情......
內核通常比任何用戶空間程式復雜得多,因此您需要專門為此設計的地址清理器,例如 KASAN。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/516470.html
