Diskuze: Atomická operace

Volná diskuze Atomická operace

Avatar
coells
Redaktor
Avatar
coells:

Co je to atomický kód? Takový výraz slyším prvně. Jestli ten učitel nakonec nemá pravdu ^^

 
Odpovědět  -1 16.8.2014 16:32
Avatar
GiXi
Člen
Avatar
Odpovídá na coells
GiXi:
Atomicita neboli nedělitelnost je důležitá vlastnost v programování. Znamená, že daná činnost (operace) se provede najednou, nemůže být přerušena něčím jiným a později dokončena.

Wikipedia

Editováno 16.8.2014 16:50
Nahoru Odpovědět 16.8.2014 16:50
‘I am the one who knocks.’ Heisenberg
Avatar
coells
Redaktor
Avatar
Odpovídá na GiXi
coells:

To není tak úplně pravda, ale jsi blízko. Nicméně to mluvíš o operaci. Operace zpravidla funguje v rámci dobře definovaného kontextu, kde lze atomicitu zadefinovat. Já se ptal na atomický kód, to jsem ještě neslyšel.

 
Nahoru Odpovědět  +3 16.8.2014 16:55
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na coells
Jiří Gracík:

Otázka v písemce zněla přesně "Co je to atomický kód". My jsme našli přesně to co GiXi, jenže v testu byla vyžadována odpověd přesně opačná. Do té (i od té) doby jsem o atomickém kódu neslyšel :D

Nahoru Odpovědět  +1 16.8.2014 17:49
Creating websites is awesome till you see the result in another browser ...
Avatar
coells
Redaktor
Avatar
Odpovídá na Jiří Gracík
coells:

Atomic code aneb atomový kód aneb atomové číslo označuje počet protonů v jádru atomu.

V programování se mluví o atomické operaci. Definice, kterou GiXi napsal, není správně z jednoduchého důvodu. Atomickou operaci lze přerušit, dokonce ji lze i zrušit. Takové chování nejen, že může nastat, ale běžně nastává například během transakčního zpracování databázových dotazů.

Text na české wikipedii je špatně. Pokud se podíváš na anglický originál, najdeš správnou definici: Atomicity is a guarantee of isolation from concurrent processes.

Důležitou vlastností atomické operace a základem definice je, že se atomická operace "zvenku" chová jednolitě, izolovaně. Vnější pozorovatel nebo účastník procesu nesmí vidět jednotlivé kroky operace, protože ta se chová, jako by byla provedena v jediném kroku. Operace se tak vždy provede buď celá nebo vůbec.

Důsledkem izolace je, že jakákoliv práce s vnějšími zdroji vede také k izolaci těchto zdrojů. Způsobů, jak izolovat operaci je více, ale obvykle je potřeba podpora v platformě nebo OS a většinou i přímo v CPU.

Také je nutné si uvědomit, že všechny termíny používáme pouze v kontextu operace. Ačkoliv se bude operace jevit atomická například pro souběžná vlákna v rámci procesu, pozorovatel mimo kontext může vidět jednotlivé kroky operace.

 
Nahoru Odpovědět  +2 16.8.2014 18:44
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na coells
Jiří Gracík:

Wau, dobrý. Asi mi ještě chvilku dá, než to pochopím, ale každopádně děkuji ;)

Nahoru Odpovědět 16.8.2014 20:15
Creating websites is awesome till you see the result in another browser ...
Avatar
coells
Redaktor
Avatar
Odpovídá na Jiří Gracík
coells:

Zamysli se nad tímhle příkladem:

int atomic_function(int a, int b)
{
  return a + b;
}
int a, b;
int nonatomic_function()
{
  return a + b;
}

Proč je první verze funkce atomická, zatímco druhá není?

 
Nahoru Odpovědět 16.8.2014 20:56
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na coells
Jiří Gracík:

Ta první je izolovaná

Nahoru Odpovědět 16.8.2014 21:10
Creating websites is awesome till you see the result in another browser ...
Avatar
coells
Redaktor
Avatar
Odpovídá na Jiří Gracík
coells:

:-) Výborně!

Hodnoty proměnných se v prvním případě zkopírují na zásobník, který spadá do lokálního kontextu vlákna - v paměťovém prostoru, který je izolovaný od ostatních vláken. Pokud by zásobník funkce nebyl izolovaný, funkce by nebyla atomická.

Tím pádem jsi pochopil celý můj výklad i atomicitu operací.

 
Nahoru Odpovědět 16.8.2014 21:16
Avatar
Jiří Gracík
Redaktor
Avatar
Nahoru Odpovědět 16.8.2014 21:18
Creating websites is awesome till you see the result in another browser ...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.