/proc/pid/maps のフラグ rwxp における p とは

マッピング領域がプライベートマッピングされていることを表す.
プライベートファイルマッピングでは,マッピング領域への変更はマッピング対象ファイルに影響を与えない.例えば,gnome-terminal の maps を見ると,

$ cat /proc/`pgrep gnome-terminal | head -n 1`/maps
08045000-0808d000 r-xp 00000000 fd:00 131656     /usr/bin/gnome-terminal
0808d000-0808f000 rw-p 00048000 fd:00 131656     /usr/bin/gnome-terminal
...

となっており,元のファイルの text/data セクションはプライベートマッピングされていることが分かる.
これはコピーオンライトを用いて実装されており,マッピング領域の変更時にページフォルトが発生し,その際( mm/memory.c do_wp_page()) にて


匿名マッピング用のページが確保され new_page = alloc_page_vma(GFP_HIGHUSER, vma, address);
変更対象がコピーされ cow_user_page(new_page, old_page, address, vma);
vma 中の変更前のページが取り除かれ page_remove_rmap(old_page, vma);
新しいページが追加される page_add_new_anon_rmap(new_page, vma, address);