Skip to main content

Wat is onjuist delen?

Vals delen is een situatie die kan optreden in een computerprogramma wanneer twee applicaties die tegelijkertijd actief zijn, proberen toegang te krijgen tot informatie in hetzelfde logische geheugengebied dat elk programma of proces in zijn eigen cache heeft opgeslagen.De gegevens in de cache van elke applicatie worden gekopieerd uit een gemeenschappelijke bron, dus het wijzigen van de ene cache zorgt ervoor dat de andere opnieuw moet worden geladen uit de bron.Het valse aspect van het delen ontstaat wanneer de wijzigingen in de cachelijn door één programma niet daadwerkelijk de gegevens hebben beïnvloed die het tweede programma gebruikt, in welk geval de te herladen cache dwingen is een verspilling van systeembronnen en kan een negatieve invloed zijnde prestaties van het programma.Het probleem van vals delen is moeilijk te detecteren, omdat het geen direct resultaat is van een code in de applicaties, hoewel er effectieve manieren zijn om vals delen te voorkomen, zoals het verplaatsen van gegevens die zich in een momenteel in cache bevinden naar een afzonderlijke lijn.

Een van de belangrijkste redenen waarom vals delen kan plaatsvinden, is te vinden in hoe een besturingssysteem of hardware omgaat met lees- en schrijfgegevens.Wanneer informatie van een harde schijf of een andere bron wordt gelezen of geschreven door een programma, wordt deze meestal in een tijdelijke cache geladen, zodat deze snel toegankelijk is.De hoeveelheid informatie die uit de bronlocatie wordt opgeslagen, wordt een cachelijn genoemd en is een logisch geheugenblok dat normaal tussen 2 bytes en 256 bytes lang kan zijn.Onder sommige besturingssystemen of systeemarchitecturen kunnen programma's tegelijkertijd worden uitgevoerd, zoals in parallelle verwerking.Dit betekent dat het mogelijk is dat twee afzonderlijke programma's proberen toegang te krijgen tot informatie in dezelfde cache -lijn, dus elk programma heeft zijn eigen kopie van de brongegevengegevens die het inhoudt.

Er zijn een aantal mechanismen gebruikt om de situatie aan te kunnen wanneer twee programma's proberen toegang te krijgen tot dezelfde cache -lijn, maar het resultaat is meestal dat het ene programma gedwongen wordt zijn cache opnieuw te laden met de bijgewerkte informatie het andere programmaheeft aangepast.Dit type incident staat bekend als vals delen wanneer de gegevens in de cachelijn die elk programma toegang heeft, niet gerelateerd zijn, dus het dwingen van één programma om de cache te herladen is een verspilling van verwerkingskracht en andere bronnen.Dit is meestal een probleem voor een programma dat de informatie in de cache nooit zal wijzigen, dus er is geen risico dat de wijzigingen van de toepassing die het andere proces heeft aangebracht, er nog twee veel voorkomende manieren zijn om de effecten van false te voorkomen of te verminderendelen.De eerste is om blanco informatie voor of na de gegevens in het geheugen toe te voegen, deze in wezen te dwingen in een afzonderlijke cachelijn die niet door een ander programma wordt toegankelijk.De tweede methode is om de frequentie van lezen en schrijven te beperken tot de cachelijn, zodat deze zo min mogelijk opnieuw wordt geladen.Meer complexe oplossingen omvatten management op cache-niveau of zelfs wijzigingen in hoe een besturingssysteem omgaat met het delen.