Synchronní vs. asynchronní přenos

pavel

Synchronní vs. asynchronní přenos
« kdy: 08. 10. 2011, 22:27:12 »
Potřeboval bych polopaticky vysvětlit zásadní rozdíly mezi těmito dvěma přenosy.
Kde se v praxi využívají, jejich výhody a jak poznám zda zařízení komunikuje synchronním či asynchronním přenosem.
Děkuji
« Poslední změna: 09. 10. 2011, 14:03:27 od Petr Krčmář »


BSD


m

Re: Synchronní vs. asynchronní přenos
« Odpověď #2 kdy: 09. 10. 2011, 19:46:48 »
asi záleží i v jakém kontextu je to myšleno.. obvykle to znamená, že nečekáte na to, až se přenos dokončí (protože i/o trvá z pohledu procesoru celé věky..), ale mezitím provádíte jinou akci, anebo mezitím zpracováváte i jiné přenosy, pokud je jich více paralelních (například pokud jde o web server)

mxm

Re: Synchronní vs. asynchronní přenos
« Odpověď #3 kdy: 10. 10. 2011, 07:08:53 »
Obecne popis komunikace:
System A zasle zpravu systemu B.
System B zareaguje na prijatou zpravu a odesle odpoved zpet systemu A
System A po prijeti odpovedi zpracuje odpoved

Synchronni znamena, ze System A po odeslani zpravy ceka na odpoved od protistrany. Dokud odpoved nedostane, nic nedela a ceka a ceka a ceka ...

Asynchronni znamena, ze System A po odeslani zpravy dal neco vykonava, nezalezi mu na tom jakym zpusobem bude System B reagovat. Proste neco dal dela. Reakci na svoji zpravu vyridi napriklad obcasnym opakovanym ctenim z nejake fronty zprav, kde mu nejaky subsystem uklada prijate reakce. Nebo mu prijeti reakce vyvola nejakou udalost, ktera zaridi primo vyrizeni.

JS

Re: Synchronní vs. asynchronní přenos
« Odpověď #4 kdy: 10. 10. 2011, 10:58:23 »
Asynchronni znamena, ze System A po odeslani zpravy dal neco vykonava, nezalezi mu na tom jakym zpusobem bude System B reagovat. Proste neco dal dela. Reakci na svoji zpravu vyridi napriklad obcasnym opakovanym ctenim z nejake fronty zprav, kde mu nejaky subsystem uklada prijate reakce. Nebo mu prijeti reakce vyvola nejakou udalost, ktera zaridi primo vyrizeni.

Spis bych rekl, ze asynchronni v kontextu komunikace znamena, ze system A muze poslat systemu B zpravu i necekane (aniz by dostal odpoved od B), zatimco system B zpracovava tu predchozi zpravu nebo dela neco jineho. Proste ho muze "prekvapit".


smoofy

  • *****
  • 1 056
    • Zobrazit profil
    • E-mail
Re: Synchronní vs. asynchronní přenos
« Odpověď #5 kdy: 10. 10. 2011, 11:12:23 »
Presne tak. U syn prenosu musi byt navazano spojeni ve smyslu:
A:"Budu posilat dat."
B:"OK, posilej."
A:Posila data...
A:Dostals vsechno?
B:Jj, vsechno
A:Uz nic posilat nebudu
B:OK, dik za info.

Kdezto v asynchronim prenosu se to proste posle nezajem jestli to dojde ci ne. U asynchronniho prenosu je hlavni vyhodou jednoduchost a rychlost, u synchroniho je prenos pomalejsi a narocnejsi na technologii, nicmene mate jistotu, ze data dorazeji v poradku nebo vubec :).


mxm

Re: Synchronní vs. asynchronní přenos
« Odpověď #6 kdy: 10. 10. 2011, 13:05:16 »
Kdezto v asynchronim prenosu se to proste posle nezajem jestli to dojde ci ne. U asynchronniho prenosu je hlavni vyhodou jednoduchost a rychlost, u synchroniho je prenos pomalejsi a narocnejsi na technologii, nicmene mate jistotu, ze data dorazeji v poradku nebo vubec :).

Zaleze na tom. Nariklad typicky asynchronni vzhledem k aplikaci je protokol UDP. A opak je TCP. Tam je asynchronnost/synchronnost z hlediska aplikace jasna, pouzivas-li TCP, pak mas jistotu, ze kazdy paket dorazi protistrane. Pouzivas-li UDP, pak proste posles a je ti jedno jestli se paket nekde ztrati nebo ne, ale muzes si sam z pohledu aplikace spolehlivost dodelat.

Ale to je spise pohled na spolehlivost. I asynchronni prenos muze byt spolehlivy ve smyslu: "Kazdy paket ti jednou dorazi, jen neni receno do kdy". Napriklad emaily jsou presnym prikladem. Posles email a jednou nekomu dorazi, avsak neni receno do jake doby dorazi.

KapitánRUM

Re: Synchronní vs. asynchronní přenos
« Odpověď #7 kdy: 10. 10. 2011, 16:35:11 »
Všechno co se tu píše je ,,tak trochu pravda, ale ne úplně".
V případě sítí to tak vesměs platí, pokud jsi přenosem myslel tohle, pak ano.

Řada postů tu skoro naznačuje něco jako že Asynchronní = nemusí být zpracováno.
Ale to je pravda jen u UDP a i tam je to pravda jen částečně.

Synchronií znamená, že něco probíhá v reálném čase ,,Zajdeš ke Karlovi, něco mu odneseš a něco si vyzvedneš." (Děláš to v určeném čase a řídíš to ty.)

Asynchronní znamená, že něco proběhne nezávisle na reálném čase ,,Karel ti něco přinese a nechá to u rodičů." (Stane se to někdy a obslouží se to tak nějak samo.)

V případě síťového přenosu je nesmysl spojovat protokoly UDP a TCP se synchronním resp. asynchroniím přenosem. Jediný rozdíl v nich je v tom, že TCP je spojový a UDP je ne-spojový protokol.

Nicméně i protokol TCP může pracovat v asynchronním režimu.

Příklad synchronií komunikace:
VLÁKNO TVÉHO PROGRAMU AKTIVNĚ NASLOUCHÁ NA PORTU 80 A ČEKÁ NA PŘÍCHOZÍ DATA
Data co dostane ihned zpracuje.

Příklad asynchronní komunikace:
VYTVOŘÍŠ EVENT, KTERÝ TI ŘEKNE, ŽE NA PORT 80 PŘIŠLA DATA, EVENT SI ULOŽÍŠ A AŽ SE TI BUDE CHTÍT, ZPRACUJEŠ HO.

Je to myslím hodně kostrbatě napsáno, ale myslím že se to z toho dá pochopit.

smoofy

  • *****
  • 1 056
    • Zobrazit profil
    • E-mail
Re: Synchronní vs. asynchronní přenos
« Odpověď #8 kdy: 10. 10. 2011, 17:10:32 »
To ale taky neni tak uplne pravda. Pokud vlakno tveho programu aktivne posloucha na portu 80 a ceka na prichozi data, pak se jedna o asynchronni prenos, nakolik k nemu muze dojit kdykoliv a neni predem dan zadny synchronizacni prvek. Pokud ale reknu, ze budu vysilat kazdejdeset vterin, nebo treba v utery ve tri pak uz se jedna o prenos synchronni. Je to jako si domluvit schuzku s rostenkou v parku v 6 vecer, to je synchronni, pokud ale budu rostenku stalkovat pres den v praci kdyz to neceka, je to asynchronni. Tady mas pravdu v tom, ze rostenka me muze odpalkovat a nebo si se mnou dat kafco a kratkou prestavku coz implikuje to, ze zpravu zpracuju az se mi bude chtit.

smoofy

  • *****
  • 1 056
    • Zobrazit profil
    • E-mail
Re: Synchronní vs. asynchronní přenos
« Odpověď #9 kdy: 10. 10. 2011, 17:14:48 »
Hlavne jsem podal zavadejici informaci v prvnim priuspevku. Synchronni prenos funguje na zaklade nejakejch predem danejch pravidel ktera funguji po urcitou dobu takze je mene narocny na objem dat, protoze se prenasi mene ridicich informaci, nakolik tyhle jsou dany predem. U asynchronniho procesu je vyhoda ze ho muzete provest kdykoliv nezavisle na case, nicmene musite poskytnout v kazde zprave vsechny ridici informace.

Re: Synchronní vs. asynchronní přenos
« Odpověď #10 kdy: 10. 10. 2011, 17:22:25 »
Synchronni znamená, že někdo komunikaci taktuje, nebo předem určuje, jak bude probíhat, třeba formou dotaz odpověď, ale třeba také tři dotazy, dvě odpovědi. Nebo je komunikace časována z vnějšku, například, pošlu zprávu každou minutu, jindy ne.

Většinou je právě komunikace nějak synchronizována, ať už vnějším arbitrem, nebo vůči sobě podle předem daných pravidel: Ja, on, já, on, já, on... atd.

Asynchroní znamená, že komunikace může probíhat (nebo začít) kdykoliv nahodile.

Re: Synchronní vs. asynchronní přenos
« Odpověď #11 kdy: 10. 10. 2011, 17:26:18 »
Synchronní komunikace mezi skupinou účastníků: Bude posílat data jednička, pak dvojka, pak trojka, pak čtyřka, pak pětka, a pak zase jednička, atd... Něco jako moderovaná diskuze, kdy moderátor uděluje slovo.

Asynchronní komunikace: Každý účastník posílá data kdykoliv se mu zachce. Na sdíleném mediu se pak třeba řeší kolize, stejně tak jako mezi lidma, když začnou dva lidi mluvit současně.

podlesh

Re: Synchronní vs. asynchronní přenos
« Odpověď #12 kdy: 11. 10. 2011, 10:41:31 »
Synchronní přenos znamená, že mimo samotný datový kanál existuje ještě synchronizační kanál, zvaný většinou "taktovací" nebo slangově "hodiny" (clock). Výhodou je velmi jednoduchá implementace,  na přijímací straně vlastně stačí jen D klopný obvod. Nevýhodou je, mimo jiné, nutnost více kanálů ("drát navíc"). Příkladem je např. I2C nebo tradiční sběrnice (ISA)

Asynchronní přenos označuje způsob kódování signálu, kdy synchronizační signál buď chybí vůbec (to je velmi omezeá varianta, ale bývala zcela běžná), nebo je součástí datového signálu. Ta druhá varianta má sice složitější implementaci, ale v dnešní době se jedná jednoznačně o nejrozšířenější způsob přenosu na fyzické vrstvě.

Tak, a máme pokrytou i fyzikou vrstvu. Omlouvám se za případně nepřesnosti a nešťastné formulace.