Kas yra klaidingas bendrinimas?

Klaidingas bendrinimas yra situacija, kuri gali įvykti kompiuterio programoje, kai dvi vienu metu veikiančios programos bando pasiekti informaciją tame pačiame loginės atminties regione, kurį kiekviena programa ar procesas išsaugojo savo talpykloje. Kiekvienos programos talpykloje esantys duomenys nukopijuojami iš bendro šaltinio, todėl pakeitus vieną talpyklą reikia iš naujo įkelti kitą iš šaltinio. Klaidingas bendrinimo aspektas atsiranda, kai vienos programos pakeitimai talpyklos eilutėje iš tikrųjų neturi įtakos duomenims, kuriuos naudoja antroji programa. Tokiu atveju priverstinis talpyklos įkėlimas yra sistemos išteklių švaistymas ir gali neigiamai paveikti. programos atlikimą. Klaidingo bendrinimo problemą sunku aptikti, nes tai nėra tiesioginis programose esančio kodo rezultatas, nors yra veiksmingų būdų apsisaugoti nuo klaidingo bendrinimo, pvz., duomenų, esančių talpykloje esančioje eilutėje, perkėlimas į atskirą eilutę. .

Viena iš pagrindinių priežasčių, kodėl gali įvykti klaidingas bendrinimas, yra tai, kaip operacinė sistema arba aparatinė įranga tvarko duomenų skaitymą ir rašymą. Kai programa skaito arba rašo informaciją iš standžiojo disko ar kito šaltinio, ji paprastai įkeliama į laikinąją talpyklą, kad ją būtų galima greitai pasiekti. Iš šaltinio vietos talpykloje saugomos informacijos kiekis vadinamas talpyklos linija ir yra loginis atminties blokas, kuris paprastai gali būti nuo 2 iki 256 baitų ilgio. Kai kuriose operacinėse sistemose arba sistemos architektūrose programos gali veikti tuo pačiu metu, pavyzdžiui, lygiagrečiai apdorojant. Tai reiškia, kad dvi atskiros programos gali bandyti pasiekti informaciją toje pačioje talpyklos eilutėje, todėl kiekviena programa turės savo šaltinio duomenų kopiją, todėl vienos talpyklos pakeitimai gali neatsispindėti kitoje talpykloje, todėl turimus duomenis.

Situacijai, kai dvi programos bando pasiekti tą pačią talpyklos eilutę, naudojama daugybė mechanizmų, tačiau dažniausiai viena programa yra priversta iš naujo įkelti talpyklą su atnaujinta informacija, kurią pakeitė kita programa. Šio tipo incidentai yra žinomi kaip klaidingas bendrinimas, kai talpyklos eilutėje esantys duomenys, prie kurių pasiekia kiekviena programa, nėra susiję, todėl vienos programos priverstinis iš naujo įkėlimas talpykloje yra apdorojimo galios ir kitų išteklių švaistymas. Dažniausiai tai yra programos, kuri niekada nekeis informacijos savo talpykloje, problema, todėl nėra rizikos, kad programa perrašys kito proceso atliktus pakeitimus.

Yra du paplitę būdai, kaip užkirsti kelią klaidingam dalijimuisi arba jį sušvelninti. Pirmasis yra pridėti tuščią informaciją prieš arba po atmintyje esančių duomenų, iš esmės priverčiant juos į atskirą talpyklos eilutę, kurios nepasiekia kita programa. Antrasis būdas yra apriboti skaitymo ir rašymo dažnumą talpyklos eilutėje, kad ji būtų kuo mažiau įkeliama iš naujo. Sudėtingesni sprendimai apima talpyklos lygio valdymą arba net operacinės sistemos bendrinimo tvarkymo pakeitimus.