內(nèi)存映射文件橄唬,是指文件和內(nèi)存邏輯地址映射起來(lái)。
mmap()返回一個(gè)指針ptr参歹,可以通過(guò)指針進(jìn)行讀寫仰楚,而不必通過(guò)read()或者write()
ptr指向一個(gè)邏輯地址,需要MMU把邏輯地址轉(zhuǎn)換成物理地址。
read()需要兩次拷貝僧界,mmap()中沒有進(jìn)行數(shù)據(jù)拷貝侨嘀,真正的數(shù)據(jù)拷貝是在缺頁(yè)中斷處理時(shí)進(jìn)行的,由于mmap()將文件直接映射到用戶空間捂襟,所以中斷處理函數(shù)根據(jù)這個(gè)映射關(guān)系咬腕,直接將文件從硬盤拷貝到用戶空間,只進(jìn)行了 一次數(shù)據(jù)拷貝 葬荷。
參考:
內(nèi)存映射文件原理探索