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 regionie pamięci logicznej, 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 modyfikacja jednej pamięci podręcznej powoduje konieczność ponownego załadowania drugiej ze źródła. Fałszywy aspekt udostępniania powstaje, gdy zmiany wprowadzone w linii pamięci podręcznej przez jeden program w rzeczywistości nie wpływają na dane używane przez drugi program, w którym to przypadku wymuszenie ponownego załadowania pamięci podręcznej jest marnotrawstwem zasobów systemowych i może negatywnie wpłynąć na wydajność programu. Problem fałszywego udostępniania jest trudny do wykrycia, ponieważ nie jest to bezpośredni wynik 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 współdzielenie, jest sposób, w jaki system operacyjny lub sprzęt obsługuje odczyt i zapis danych. Gdy informacje z dysku twardego lub innego źródła są odczytywane lub zapisywane przez program, zwykle są one ładowane do tymczasowej pamięci podręcznej, aby można było szybko uzyskać do nich dostęp. Ilość informacji, które są buforowane z lokalizacji źródłowej, nazywana jest linią pamięci podręcznej i jest logicznym blokiem pamięci, który zwykle może mieć długość od 2 do 256 bajtów. W niektórych systemach operacyjnych lub architekturach systemowych programy mogą działać w tym samym czasie, na przykład w przetwarzaniu równoległym. Oznacza to, że dwa osobne 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, potencjalnie powodując, że zmiany w jednej pamięci podręcznej nie zostaną odzwierciedlone w drugiej pamięci podręcznej, co spowoduje unieważnienie dane, które przechowuje.
Istnieje wiele mechanizmów wykorzystywanych do radzenia sobie z sytuacją, gdy dwa programy próbują uzyskać dostęp do tej samej linii pamięci podręcznej, ale najczęściej skutkiem jest to, że jeden program jest zmuszony do ponownego załadowania pamięci podręcznej ze zaktualizowanymi informacjami, które zmodyfikował drugi program. Ten typ incydentu nazywany jest fałszywym udostępnianiem, gdy dane w linii pamięci podręcznej, do której uzyskuje dostęp każdy program, nie są powiązane, więc zmuszenie jednego programu do ponownego załadowania pamięci podręcznej jest marnotrawstwem mocy obliczeniowej i innych zasobów. Jest to najczęściej problem dla programu, który nigdy nie modyfikuje informacji w pamięci podręcznej, więc nie ma ryzyka zastąpienia przez aplikację zmian dokonanych 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 inny program nie ma dostępu. Druga metoda polega na ograniczeniu częstotliwości odczytu i zapisu do linii pamięci podręcznej, aby była przeładowywana jak najmniej. Bardziej złożone rozwiązania obejmują zarządzanie na poziomie pamięci podręcznej, a nawet zmiany sposobu obsługi udostępniania przez system operacyjny.