Co je falešné sdílení?
Falešné sdílení je situace, ke které může dojít v počítačovém programu, když se dvě aplikace, které běží současně, pokoušejí získat přístup k informacím ve stejné oblasti logické paměti, kterou každý program nebo proces uložil do své vlastní mezipaměti. Data v mezipaměti každé aplikace jsou zkopírována ze společného zdroje, takže modifikace jedné mezipaměti způsobuje, že je třeba znovu načíst druhou ze zdroje. K falešnému aspektu sdílení dochází, když změny provedené v mezipaměti řádkem jedním programem ve skutečnosti neovlivňují data, která používá druhý program. V takovém případě je nutení opětovné načtení mezipaměti plýtváním systémovými prostředky a může negativně ovlivnit výkon programu. Problém s falešným sdílením je těžké odhalit, protože není přímým výsledkem jakéhokoli kódu obsaženého v aplikacích, ačkoli existují účinné způsoby, jak zabránit falešnému sdílení, jako je například přesun dat, která jsou v aktuálně mezipaměti na samostatnou řádku .
Jedním z hlavních důvodů, proč může dojít k falešnému sdílení, je to, jak operační systém nebo hardware zpracovává čtení a zápis dat. Když program čte nebo zapisuje informace z pevného disku nebo jiného zdroje, obvykle se načte do dočasné mezipaměti, takže k nim lze rychle získat přístup. Množství informací, které jsou ukládány do mezipaměti ze zdrojového umístění, se nazývá mezipaměť a je logickým blokem paměti, který může být obvykle dlouhý mezi 2 bajty a 256 bajty. V některých operačních systémech nebo systémových architekturách jsou programy schopny běžet současně, například při paralelním zpracování. To znamená, že je možné, aby se dva samostatné programy pokusily získat přístup k informacím ve stejné mezipaměti, takže každý program bude mít svou vlastní kopii zdrojových dat, což může způsobit, že se změny v jedné mezipaměti neodrážejí v druhé mezipaměti, což zneplatní data, která drží.
Existuje celá řada mechanismů používaných k řešení situace, kdy se dva programy pokoušejí získat přístup ke stejné mezipaměti, ale výsledkem je nejčastěji to, že jeden program je nucen znovu načíst svou mezipaměť aktualizovanými informacemi, které jiný program změnil. Tento typ incidentu je znám jako falešné sdílení, když data v mezipaměti, ke kterým každý program přistupuje, nesouvisí, takže nutit jeden program znovu načíst mezipaměť je plýtváním výkonem a dalšími prostředky. Toto je nejčastěji problém pro program, který nikdy neupravuje informace ve své mezipaměti, takže nehrozí žádné riziko přepsání změn provedených jiným procesem.
Existují dva převládající způsoby, jak zabránit falešnému sdílení nebo je zmírnit. Prvním je přidání prázdných informací před nebo za data v paměti, což je v podstatě nutí do samostatné mezipaměti, která není přístupná jiným programem. Druhou metodou je omezit četnost čtení a zápisu na řádek mezipaměti tak, aby byl načten co nejméně. Složitější řešení zahrnují správu na úrovni mezipaměti nebo dokonce změny způsobu, jakým operační systém zpracovává sdílení.