malloc vs memset

malloc vs memsetspa

 

OS內存分配過程以下:接口

  1. 用戶態程序使用malloc接口,分配虛擬地址。
  2. 用戶程序訪問該虛擬地址,好比memset。
  3. 硬件(MMU)須要將虛擬地址轉換爲物理地址。
  4. 硬件讀取頁表。
  5. 硬件發現相應的頁表項不存在,硬件自動觸發缺頁異常。
  6. 硬件自動跳轉到page fault的處理程序(內核實現註冊好)
  7. 內核中的page fault處理程序執行,在其中分配物理內存,而後修改頁表(建立頁表項)
  8. 異常處理完畢,返回程序用戶態,繼續執行memset相應的操做。

至此,虛擬內存和物理內存都分配完成,並完成映射。另外一個角度看,若是malloc分配內存後,一直不使用,那就一直不會分配物理內存,這種內存分配策略叫延遲分配內存

相關文章
相關標籤/搜索