linux 記憶體管理 (一)這些問題,你都能解釋清楚嗎?
一切的學習都是為了解決問題,而不是為了學習而學習。為了學習而學習,這種行為實在是太傻了,因為最終也學不好。
所以我們要弄清楚記憶體管理究竟能解決什麼樣的問題。
首先站在 Linux 的角度,有以下幾個問題:
1、MMU 是什麼?被設計出來是解決什麼問題的?
2、CPU是如何訪問到記憶體的?
https://mp.weixin.qq.com/s/SdsT6Is0VG84WlzcAkNCJA?
3、程式的 4G 虛擬地址空間是如何產生的?設計虛擬地址空間的目的?4G空間是如何劃分的?
4、為什麼要有DMA、NORMAL、HIGHMEM Zone?每個zone的大小是由誰決定的?
5、系統的記憶體是如何被核心和應用瓜分掉的?
6、底層的記憶體管理演算法buddy是怎麼工作的?它和核心裡面的slab分配器是什麼關係?
7、頻繁的記憶體申請和釋放是否會導致記憶體的碎片化?它的後果是什麼?
8、Linux記憶體耗盡後,系統會發生怎樣的情況?
9、應用程式的記憶體是什麼時候拿到的?malloc()成功後,是否真的拿到了記憶體?應用程式的malloc()與free()與核心的關係究竟是什麼?
10、什麼是lazy分配機制?應用的記憶體為什麼會延後以最懶惰的方式拿到?
11、我寫的應用究竟耗費了多少記憶體?程式的vss/rss/pss/uss分別是什麼概念?虛擬的,真實的,共享的,獨佔的,究竟哪個是哪個?
12、記憶體為什麼要做檔案系統的快取?如何做?快取何時放棄?
13、Free命令裡面顯示的buffers和cached分別是什麼?二者有何區別?
14、交換分割槽、虛擬記憶體究竟是什麼鬼?它們針對的是什麼性質的記憶體?什麼是匿名頁?
15、程式耗費的記憶體、檔案系統的快取何時回收?回收的演算法是不是類似LRU?
16、怎樣追蹤和判決發生了記憶體洩漏?記憶體洩漏後如何查詢洩漏源?
17、記憶體大小這樣影響系統的效能?CPU、記憶體、I/O三角如何互動?它們如何綜合決定系統的一些關鍵效能?
相關文章
- 面試現場:這些常問的面試題你都會了嗎面試題
- 【OpenCV】有關記憶體釋放的一些問題OpenCV記憶體
- 關於Linux系統,這些你都知道嗎?Linux
- 學習Python這些面試題你都知道嗎?Python面試題
- 熟悉 Vue ?你能解釋這個死迴圈嗎?Vue
- 律所管理系統能解決律師事務所存在的這些問題
- 小遊戲掉幀卡頓啟動慢執行記憶體不足……這些問題有解嗎?遊戲記憶體
- Java記憶體問題的一些見解Java記憶體
- 關於Linux系統,這些知識你都瞭解嗎?Linux
- 企業實施PDM能解決這些問題
- Linux面試必問題,想從事Linux工作這些你會了嗎?Linux面試
- 金三銀四跳槽季,這些面試題你都會了嗎?面試題
- 收藏!這些 IDE 使用技巧,你都知道嗎IDE
- 這些必備Java技能,你都會了嗎Java
- 入門新媒體運營,這些事情你都瞭解嗎?
- 先搞清楚這些問題,簡歷上再寫你熟悉Java!Java
- 關於學習Python的疑問,你都清楚了嗎?Python
- Linux C面試題(記憶體管理)Linux面試題記憶體
- 海外發行遊戲 這些涉稅問題你都知道嘛?遊戲
- 這幾個關於Spring 依賴注入的問題你清楚嗎?Spring依賴注入
- 如果有人給你撕逼Java記憶體模型,就把這些問題甩給他Java記憶體模型
- 記一次三個小時面試的收穫,這些問題你能回答嗎?面試
- 自媒體平臺有哪些?這些平臺你都認識嗎?
- python是什麼?這些你都瞭解了嗎?Python
- 別再眼高手低了! 這些Linq方法都清楚地掌握了嗎?
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- vector clear() 方法 記憶體釋放問題記憶體
- 學習Linux,這些命令你都掌握了嗎?Linux
- 你說你懂計算機網路,那這些你都知道嗎計算機網路
- iphone 記憶體管理的一些總結iPhone記憶體
- Linux 記憶體管理:記憶體對映Linux記憶體
- 新媒體入門操作?這些關鍵點你都學會了嗎?
- 做自媒體創作,這些坑你都踩過嗎?快來避雷
- 軟體測試這些你知道嗎?
- iOS 問題整理07----記憶體管理iOS記憶體
- Python操作MySQL儲存,這些你都會了嗎?PythonMySql
- redis為什麼變慢了?這些原因你都知道嗎Redis
- Chrome DevTools中的這些騷操作,你都知道嗎?Chromedev