Różnica między MMAP i Malloc
- 3359
- 187
- Salwator Słowiński
MMAP vs Malloc
Istnieje pamięć dynamiczna w C, a to wskazuje na alokacja pamięci w języku programowania C poprzez zestaw funkcji obecnych w bibliotece standardowej C. Jednym z nich jest Malloc, który odnosi się do alokacji pamięci. W systemie UNIX znajduje się MMAP, który odnosi się do systemu odwzorowanego na pamięci, który ma własny unikalny we/wy. Te dwa (MMAP i MALLOC) będą w wartości nominalnej, wykonują tę samą funkcję, ale dalsza kontrola ujawnia pewne różnice. Te różnice, które wynikają z funkcjonalności, są przedstawione poniżej.
Różnice
Po pierwsze, ważne jest, aby ustalić, czy istnieją dowody wskazujące, że dostępna jest znaczne duszność pamięci. Odbywa się to poprzez pomiar wydajności programu przeciwko zarządzaniu pamięcią .
Głównym interfejsem alokacji pamięci jest Malloc. To jest największy w bibliotece C. Częścią zawartego w nim kodu zarządzania jest MMAP. Kiedy Malloc działa, gromadzi wszystkie dostępne urządzenia systemowe. Dodatkowe urządzenia systemowe można zmobilizować za pośrednictwem jądra, które jest jedną z strategii zarządzania pamięcią, które systemy stosują systemy, aby zapewnić zadowalającą przydział pamięci. Proces ten nie jest jednak prosty i został skomplikowany z powodu wyłącznego powodu uniemożliwiania ludziom tworzenia prostych programów, które mogą zdezorganizować alokacja pamięci, a tym samym uzyskać słabą wydajność.
„MMAP” z drugiej strony to wywołanie systemowe, które przejmuje opłatę i zwraca się do jądra o znalezienie nieużywanego i ciągłego regionu w adresie aplikacji, który jest wystarczająco duży, aby umożliwić mapowanie kilku stron pamięci. Istnieje również tworzenie wirtualnych struktur zarządzania pamięcią, które w efekcie nie mogą skutkować segfault.
Malloc ogólnie funkcjonuje w większości procesu zarządzania pamięcią. W przypadku, gdy program wymaga dodatkowej pamięci, jest to zapożyczone z systemu operacyjnego. Z drugiej strony MMAP wykorzystuje przełącznik kontekstowy, który przekształca się w ziemię jądra.
Malloc najlepiej nadaje się do przydzielania pamięci w dowolnej aplikacji działającej w systemie, w przeciwieństwie do użycia MMAP. To jest domyślnie, inne niż w szczególnych przypadkach, w których może być dozwolone.
MMAP można użyć do przyspieszenia odpowiedzi podanej przez aplikacje. Nie jest to jednak wskazane, ponieważ ostatecznie poświęca niektóre bajty na strony, aby aplikacja mogła działać płynnie. Chociaż zawartość danych może na początku wydawać się niewielka, ekstrapolacja jej, gdy wiele aplikacji chce działać, może w efekcie spowolnić system.
Po pomiarze wydajności i wykorzystania zasobów należy dokonać dokładnej oceny wykorzystania danych przez wszystkie aplikacje działające w systemie. Jeśli może być wyświetlone czasy życia uruchomionych aplikacji, może stać się lepsze.
Zastosowanie MMAP do alokacji pamięci wiąże się z wadą, że alokacja i defaktacja danych w fragmentach jest kosztowna. Wynika to z faktu, że dane są podzielone na wiele obszarów, a także zaprzecza MMAP od wykonywania połączeń systemowych.
MMAP jest korzystna w stosunku do Malloc, ponieważ pamięć zużywana przez MMAP jest natychmiast zwracana do systemu operacyjnego. Pamięć używana przez Malloc nigdy nie jest zwracana, chyba że istnieje przerwa w segmencie danych. Ta pamięć jest specjalnie przechowywana do ponownego wykorzystania.
Streszczenie
„Malloc” oznacza główny punkt alokacji pamięci
System MMAP wywołuje i żąda jądra w celu znalezienia nieużywanych regionów w adresach aplikacji, które mogą uwzględnić mapowanie kilku stron pamięci
MMAP nie jest zalecane do przydzielania pamięci, ponieważ dzieli dostępną pamięć i nie może wykonywać połączeń systemowych
Zaletą MMAP w Malloc jest dostępność pamięci, w przeciwieństwie do pamięci Malloc, która jest ponownie wykorzystywana.
- « Różnice między dołączeniem lewym i prawym
- Różnica między połączeniem lewym a lewym zewnętrznym połączeniem »