proc_pid_maps(5)

NAZWA
/proc/pid/maps - przypisane obszary pamięci

OPIS

/proc/pid/maps
    Plik zawierający aktualnie zmapowane obszary pamięci wraz z prawami dostępu do nich. Więcej informacji o mapowaniu pamięci zawiera podręcznik systemowy mmap(2).

    Uprawnienie dostępu do tego pliku zależy od sprawdzenia trybu dostępu ptrace: PTRACE_MODE_READ_FSCREDS; zob. ptrace(2).

    Format pliku jest następujący:

        adres            uprawn przesun urządz i-węzeł    ścieżka
        00400000-00452000 r-xp 00000000 08:02 173521      /usr/bin/dbus-daemon
        00651000-00652000 r--p 00051000 08:02 173521      /usr/bin/dbus-daemon
        00652000-00655000 rw-p 00052000 08:02 173521      /usr/bin/dbus-daemon
        00e03000-00e24000 rw-p 00000000 00:00 0           [heap]
        00e24000-011f7000 rw-p 00000000 00:00 0           [heap]
        ...
        35b1800000-35b1820000 r-xp 00000000 08:02 135522  /usr/lib64/ld-2.15.so
        35b1a1f000-35b1a20000 r--p 0001f000 08:02 135522  /usr/lib64/ld-2.15.so
        35b1a20000-35b1a21000 rw-p 00020000 08:02 135522  /usr/lib64/ld-2.15.so
        35b1a21000-35b1a22000 rw-p 00000000 00:00 0
        35b1c00000-35b1dac000 r-xp 00000000 08:02 135870  /usr/lib64/libc-2.15.so
        35b1dac000-35b1fac000 ---p 001ac000 08:02 135870  /usr/lib64/libc-2.15.so
        35b1fac000-35b1fb0000 r--p 001ac000 08:02 135870  /usr/lib64/libc-2.15.so
        35b1fb0000-35b1fb2000 rw-p 001b0000 08:02 135870  /usr/lib64/libc-2.15.so
        ...
        f2c6ff8c000-7f2c7078c000 rw-p 00000000 00:00 0    [stack:986]
        ...
        7fffb2c0d000-7fffb2c2e000 rw-p 00000000 00:00 0   [stack]
        7fffb2d48000-7fffb2d49000 r-xp 00000000 00:00 0   [vdso]

    Pole adres jest przestrzenią adresową procesu, który ją zajmuje, a uprawn jest zbiorem uprawnień:

        r = odczyt
        w = zapis
        x = wykonywanie
        s = wspólne
        p = prywatne (kopiowane przy zapisie)

    Przesun jest przesunięciem w pliku lub w czymś innym, urządz zawiera numery (główny:poboczny) urządzenia, a i-węzeł jest i-węzłem na tym urządzeniu. 0 wskazuje, że nie istnieje i-węzeł związany z tym obszarem pamięci, jak to na przykład ma miejsce w przypadku segmentu BSS (niezainicjowanych danych).

    Ścieżka to zwykle plik zabezpieczający mapowanie. Koordynacja jest łatwa w przypadku plików ELF za pomocą pola przesun, poprzez sprawdzenie pola Offset w nagłówkach programu ELF (readelf -l).

    Istnieją dodatkowe, pomocne pseudościeżki:

    [stack]
        Stos pierwotnego procesu (zwanego też głównym wątkiem)

    [stack:tid] (od Linuksa 3.4 do Linuksa 4.4)
        Stos wątku (gdzie <tid> jest identyfikatorem wątku). Odpowiada ścieżce /proc/[pid]/task/[tid]/. Pole to usunięto w Linuksie 4.5, ponieważ udostępnianie tej informacji w przypadku procesu z dużą liczbą wątków jest kosztowne.

    [vdso]
        Wirtualny, dynamicznie linkowany obiekt współdzielony. Patrz vdso(7).

    [heap]
        Sterta wątku.

    [anon:nazwa] (od Linuksa 5.17)
        Nazwane, prywatne mapowanie anonimowe. Ustawiane za pomocą PR_SET_VMA_ANON_NAME prctl(2).

    [anon_shmem:nazwa] (od Linuksa 6.2)
        Nazwane, dzielone mapowanie anonimowe. Ustawiane za pomocą PR_SET_VMA_ANON_NAME prctl(2).

    Jeśli pole ścieżka jest puste, to jest to anonimowe przypisanie, takie jak pozyskiwane za pomocą mmap(2). Nie ma prostej metody na powiązanie jej ze źródłem procesu oprócz metod takich jak gdb(1), strace(1) itp.

    pathname jest ukazywane bez cytowania, z wyjątkiem znaków nowego wiersza, zastępowanych ósemkową sekwencją ucieczki. Z tego powodu, nie da się określić, czy oryginalna ścieżka zawierała znak nowego wiersza, czy sekwencję znaków \012.

    Jeśli mapowanie dotyczy pliku i plik ten został usunięty, w ścieżce pojawi się łańcuch „ (deleted)”. Proszę zauważyć, że to również jest niejednoznaczne.

    W Linuksie 2.0 nie ma pola podającego nazwę ścieżki.

ZOBACZ TAKŻE
proc(5)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.