Što je lažno dijeljenje?

Lažno dijeljenje je situacija koja se može dogoditi u računalnom programu kada dvije aplikacije koje su pokrenute istovremeno pokušavaju pristupiti informacijama u istoj logičkoj memorijskoj regiji koju je svaki program ili proces pohranio u vlastitu predmemoriju. Podaci u predmemoriji svake aplikacije kopiraju se iz zajedničkog izvora, tako da izmjena jedne predmemorije uzrokuje ponovno učitavanje druge iz izvora. Lažni aspekt dijeljenja nastaje kada promjene koje je jedan program izvršio na liniji predmemorije zapravo ne utječu na podatke koje koristi drugi program, u kojem slučaju prisilno ponovno učitavanje predmemorije predstavlja gubitak resursa sustava i može negativno utjecati izvedbu programa. Problem lažnog dijeljenja teško je otkriti jer nije izravan rezultat bilo kojeg koda sadržanog u aplikacijama, iako postoje učinkoviti načini za sprječavanje lažnog dijeljenja, kao što je premještanje podataka koji se nalaze u trenutno spremljenom retku u zaseban redak .

Jedan od primarnih razloga zašto može doći do lažnog dijeljenja nalazi se u tome kako operativni sustav ili hardver rukuju čitanjem i pisanjem podataka. Kada program čita ili zapisuje informacije s tvrdog diska ili drugog izvora, one se obično učitavaju u privremenu predmemoriju kako bi im se mogao brzo pristupiti. Količina informacija koja se sprema u predmemoriju s izvorne lokacije naziva se linija predmemorije i logički je blok memorije koji obično može biti duljine između 2 bajta i 256 bajta. Pod nekim operativnim sustavima ili arhitekturama sustava, programi se mogu izvoditi u isto vrijeme, kao što je paralelna obrada. To znači da je moguće da dva odvojena programa pokušaju pristupiti informacijama u istoj liniji predmemorije, tako da će svaki program imati vlastitu kopiju izvornih podataka, što može uzrokovati da se promjene u jednoj predmemoriji ne odraze u drugoj predmemoriji, čime se poništava podatke koje posjeduje.

Postoji niz mehanizama koji se koriste za rješavanje situacije kada dva programa pokušavaju pristupiti istoj liniji predmemorije, ali rezultat je najčešće taj da je jedan program prisiljen ponovno učitati svoju predmemoriju s ažuriranim informacijama koje je drugi program izmijenio. Ova vrsta incidenta poznata je kao lažno dijeljenje kada podaci unutar linije predmemorije kojoj svaki program pristupa nisu povezani, pa je prisiljavanje jednog programa da ponovno učita predmemoriju gubitak procesorske snage i drugih resursa. To je najčešće problem za program koji nikada neće mijenjati informacije u svojoj predmemoriji, tako da ne postoji rizik da aplikacija prepiše promjene koje je drugi proces napravio.

Postoje dva prevladavajuća načina za sprječavanje ili ublažavanje učinaka lažnog dijeljenja. Prvi je dodavanje praznih informacija prije ili poslije podataka u memoriji, u biti ih prisiljavati u zasebnu liniju predmemorije kojoj drugi program ne pristupa. Druga metoda je ograničiti učestalost čitanja i pisanja na red predmemorije tako da se ponovno učitava što je manje moguće. Složenija rješenja uključuju upravljanje na razini predmemorije ili čak promjene načina na koji operativni sustav upravlja dijeljenjem.