tmpfs - tmpfs

tmpfs to paradygmat tymczasowego przechowywania plików zaimplementowany w wielu uniksopodobnych systemach operacyjnych. Ma być wyświetlany jako zamontowany system plików , ale dane są przechowywane w pamięci ulotnej zamiast na trwałym urządzeniu magazynującym. Podobną konstrukcją jest dysk RAM , który występuje jako wirtualny dysk i obsługuje system plików dysku .

Semantyka

Wszystko przechowywane w tmpfs jest tymczasowe w tym sensie, że żadne pliki nie zostaną utworzone bezpośrednio na nieulotnej pamięci masowej, takiej jak dysk twardy (chociaż przestrzeń wymiany jest używana jako magazyn zapasowy w przypadku braku pamięci). Po restarcie wszystko w tmpfs zostanie utracone.

Pamięć używana przez tmpfs rośnie i kurczy się, aby pomieścić zawarte w niej pliki.

Wiele dystrybucji Uniksa domyślnie włącza i używa tmpfs dla gałęzi /tmp systemu plików lub dla pamięci współdzielonej . Można to zaobserwować z df, jak w tym przykładzie:

Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 256M  688K  256M   1%  /tmp

Niektóre dystrybucje Linuksa, takie jak Debian, nie mają jednak domyślnie zainstalowanego tmpfs w /tmp ; w tym przypadku pliki w /tmp będą przechowywane w tym samym systemie plików co / .

W prawie wszystkich dystrybucjach Linuksa tmpfs jest montowany w /run/ lub /var/run/ w celu przechowywania tymczasowych plików wykonawczych, takich jak pliki PID i gniazda domeny Unix.

Realizacje

Istnieje kilka niezależnych wariantów koncepcji tmpfs. Jeden z pierwszych został opracowany przez Sun Microsystems dla SunOS, a inne systemy operacyjne, takie jak BSD i Linux, dostarczyły własne.

SunOS

SunOS 4 zawiera prawdopodobnie najwcześniejszą implementację tmpfs; po raz pierwszy pojawił się w SunOS 4.0 pod koniec 1987 r., wraz z nowym zarządzaniem ortogonalną przestrzenią adresową, które umożliwiało mapowanie dowolnego obiektu w pamięci.

Katalog Solaris /tmp został domyślnie utworzony jako system plików tmpfs, począwszy od wersji Solaris 2.1, wydanej w grudniu 1992 roku. Dane wyjściowe dfpolecenia Solaris pokażą swap jako pamięć masową w tle dla dowolnego woluminu tmpfs:

# df -k
Filesystem  kbytes  used   avail capacity  Mounted on
swap        601592     0  601592     0%    /tmp/test

Linux

tmpfs jest obsługiwany przez jądro Linuksa począwszy od wersji 2.4. Tmpfs Linux (poprzednio znany jako shmfs ) opiera się na kodzie ramfs używane podczas rozruchu, a także korzysta z pamięci podręcznej stron, ale w przeciwieństwie do ramfs obsługuje wymieniając mniej używanych stron do przestrzeni wymiany, a także wielkość i iwęzłów granice systemu plików, aby zapobiec się pamięci (domyślnie odpowiednio połowa fizycznej pamięci RAM i połowa liczby stron pamięci RAM).

BSD

4.2BSD wprowadził MFS, system plików oparty na pamięci, zaimplementowany przez zastosowanie istniejącego systemu plików dysku FFS do regionu pamięci wirtualnej.

tmpfs, system plików pamięci zaimplementowany przy użyciu konwencjonalnych struktur danych w pamięci w celu poprawy wydajności MFS, został włączony do oficjalnego drzewa źródeł NetBSD 10 września 2005; jest dostępny w wersji 4.0 i nowszych.

FreeBSD przeniósł implementację NetBSD, gdzie jest ona dostępna w wersji 7.0 i późniejszych.

DragonFly BSD przeportowało również implementację NetBSD, gdzie jest ona dostępna w wersjach 2.5.1 i późniejszych.

OpenBSD przeportowało również implementację tmpfs NetBSD, początkowo rozpoczętą przez Pedro Martelletto i ulepszoną przez wielu innych. Został włączony w kompilacjach od 17 grudnia 2013. Pierwsze wydanie OpenBSD z dołączonym tmpfs to 5.5. OpenBSD 6.0 wyłączył tmpfs z powodu braku konserwacji.

Bibliografia

Linki zewnętrzne