Co to jest fałszywe udostępnianie?

Fałszywe udostępnianie to sytuacja, która może wystąpić w programie komputerowym, gdy dwie działające jednocześnie aplikacje próbują uzyskać dostęp do informacji w tym samym logicznym regionie pamięci, który każdy program lub proces zapisał we własnej pamięci podręcznej. Dane w pamięci podręcznej każdej aplikacji są kopiowane ze wspólnego źródła, więc zmodyfikowanie jednej pamięci podręcznej powoduje konieczność ponownego załadowania drugiej ze źródła. Fałszywy aspekt udostępniania pojawia się, gdy zmiany wprowadzone w linii pamięci podręcznej przez jeden program w rzeczywistości nie wpływają na dane, z których korzysta drugi program, w takim przypadku wymuszenie ponownego załadowania pamięci podręcznej jest marnowaniem zasobów systemowych i może negatywnie wpłynąć na wykonanie programu. Problem fałszywego udostępniania jest trudny do wykrycia, ponieważ nie jest bezpośrednim skutkiem jakiegokolwiek kodu zawartego w aplikacjach, chociaż istnieją skuteczne sposoby zapobiegania fałszywemu udostępnianiu, takie jak przenoszenie danych znajdujących się w aktualnie buforowanej linii do osobnej linii .

Jednym z głównych powodów, dla których może wystąpić fałszywe udostępnianie, jest sposób, w jaki system operacyjny lub sprzęt obsługuje odczytywanie i zapisywanie danych. Gdy program odczytuje lub zapisuje informacje z dysku twardego lub innego źródła, zwykle są one ładowane do tymczasowej pamięci podręcznej, dzięki czemu można uzyskać do nich szybki dostęp. Ilość informacji przechowywanych w pamięci podręcznej z lokalizacji źródłowej jest nazywana linią pamięci podręcznej i jest logicznym blokiem pamięci, który zwykle może mieć długość od 2 bajtów do 256 bajtów. W niektórych systemach operacyjnych lub architekturach systemowych programy mogą działać w tym samym czasie, na przykład podczas przetwarzania równoległego. Oznacza to, że dwa oddzielne programy mogą próbować uzyskać dostęp do informacji w tej samej linii pamięci podręcznej, więc każdy program będzie miał własną kopię danych źródłowych, co potencjalnie spowoduje, że zmiany w jednej pamięci podręcznej nie zostaną odzwierciedlone w drugiej pamięci podręcznej, co unieważni dane, które przechowuje.

Istnieje wiele mechanizmów wykorzystywanych do obsługi sytuacji, gdy dwa programy próbują uzyskać dostęp do tej samej linii pamięci podręcznej, ale najczęściej jeden program jest zmuszony do ponownego załadowania pamięci podręcznej zaktualizowanymi informacjami, które zmodyfikował inny program. Ten rodzaj incydentu jest znany jako fałszywe udostępnianie, gdy dane w linii pamięci podręcznej, do której uzyskuje dostęp każdy program, nie są ze sobą powiązane, więc zmuszanie jednego programu do ponownego załadowania pamięci podręcznej jest marnowaniem mocy obliczeniowej i innych zasobów. Najczęściej jest to problem dla programu, który nigdy nie zmodyfikuje informacji w swojej pamięci podręcznej, więc nie ma ryzyka, że ​​aplikacja nadpisze zmiany wprowadzone przez inny proces.

Istnieją dwa powszechne sposoby zapobiegania lub łagodzenia skutków fałszywego udostępniania. Pierwszym z nich jest dodanie pustych informacji przed lub po danych w pamięci, zasadniczo zmuszając je do oddzielnej linii pamięci podręcznej, do której nie ma dostępu inny program. Druga metoda polega na ograniczeniu częstotliwości odczytywania i zapisywania w linii pamięci podręcznej, aby jak najmniej była ona ponownie ładowana. Bardziej złożone rozwiązania obejmują zarządzanie na poziomie pamięci podręcznej, a nawet zmiany sposobu, w jaki system operacyjny obsługuje udostępnianie.