peterYong,內存管理

從操作系統內存管理來說 , malloc申請一塊內存的背后原理是什么?

peterYong,內存管理


【peterYong,內存管理】內存的一部分空間被用來保存頁表 , 哪個頁被使用了 , 哪個頁空著 , 哪個頁分給了哪個進程 , 內存管理單元mmu都會在頁表里做記錄 。以4k為一頁 , 意味著頁地址數只是物理地址的4096分之一 , 各種查詢法速度都夠用了 。程序內的地址是一個虛擬的連續地址 , 程序對虛擬地址的讀寫由mmu轉換為對物理地址的讀寫 。操作系統在幫助程序初始化 , 分配了默認數量的頁以后 , 就任憑程序折騰了 。
你用標準malloc函數管理也好 , 自己寫個替代品也好 , 只要虛擬地址對應的物理地址已經分配給程序 , 都不需要操作系統插手 。一旦程序讀寫的虛擬地址沒有對應的物理地址 , mmu會拋出異常信號 , 暫停程序的運行 , 然后操作系統會填寫頁表 , 分配一個新的頁面給程序 , 對于用戶程序來說是感受不到這個過程的 。操作系統就好比一個坐擁半城的渣男 , 對每個女友(程序)都承諾全部的房產 , 然而實際只給一個小房子供程序使用管理(malloc) 。

    推薦閱讀