Softwarové řízení toku dat

Z Wikipedie, otevřené encyklopedie

Softwarové řízení toku dat je metoda řízení toku dat používaná při komunikaci počítače s jinými zařízeními (nebo s jiným počítačem), zvláště při použití sériového rozhraní RS-232/V.24. Pro řízení toku dat se používají speciální kódy, přenášené ve zpětném kanálu (anglicky in-band). Tyto kódy se obecně označují zkratkami XOFF a XON (z anglického transmit off, resp. transmit on). Proto se „softwarové řízení toku dat“ nazývá také „XON/XOFF řízení toku dat“. Naproti tomu „hardwarové řízení toku dat“ používá signalizaci mimo přenosové pásmo (anglicky out-of-band) pomocí dalších vodičů, jako je tomu u RS-232 RTS/CTS.

Reprezentace[editovat | editovat zdroj]

Standard ASCII žádné konkrétní řídicí znaky pro XON a XOFF nerezervuje. Definuje však čtyři kódy pro „obecné řízení zařízení“ (DC1 až DC4). Terminál Teletype Model 33 ASR používal DC3 (s kódem 19) jako XOFF a DC1 (s kódem 17) jako XON. Toto použití okopírovali ostatní výrobci terminálů, a stalo se neformálním standardem pro znakový kód ASCII. Na klávesnici lze tyto kódy zadat klávesovou kombinací Ctrl+S pro XOFF, a Ctrl+Q pro XON.

Reprezentace XOFF a XON v kódování ASCII
Kód Význam Zkratka Desítkově Šestnáctkově Klávesová kombinace
XOFF Pozastavení přenosu DC3 19 13 Ctrl+S
XON Obnovení přenosu DC1 17 11 Ctrl+Q

Mechanismus[editovat | editovat zdroj]

Když jeden konec datového spoje není schopen přijímat další data (nebo se k tomuto bodu blíží), pošle opačnému konci znak XOFF. Opačný konec při přijetí kódu XOFF musí pozastavit vysílání. Jakmile je první strana připravena přijmout další data, pošle znak XON, načež opačný konec může pokračovat ve vysílání.

Pokud například počítač odesílá data na pomalou tiskárnu a je schopen odesílat data rychleji, než je tiskárna schopna je zpracovávat, může se stát, že vyrovnávací paměť tiskárny se začne blížit zaplnění. Tiskárna reaguje na tuto situaci vysláním znaku XOFF do počítače, který by měl odesílání dat dočasně zastavit. Když zaplnění vyrovnávací paměti tiskárny klesne a tiskárna je opět připravena přijímat další data, pošle počítači znak XON, na což počítač reaguje pokračováním odesílání dat.

XOFF/XON lze používat obousměrně, například mezi dvěma propojenými dálnopisy.

Porovnání s hardwarovým řízením toku dat[editovat | editovat zdroj]

Hlavní výhodou softwarového řízení toku dat je, že nevyžaduje další elektrické vodiče mezi odesilatelem a příjemcem. Kromě společného uzemnění vystačí se dvěma vodiči, jedním pro vysílání a druhým pro příjem. Hardwarové řízení toku dat vyžaduje další vodiče mezi oběma zařízeními. Kromě toho vyžaduje určitou hardwarovou implementaci, která mohla v počátcích výpočetní techniky (tj. v 60. a 70. letech 20. století) způsobovat významnější náklady.

Ani softwarové řízení toku dat však není bez problémů. Jeho hlavní nevýhodou je nižší spolehlivost. Při použití vyrovnávacích pamětí pro zpětný kanál se může stát, že znak XOFF se zařadí do fronty až za data, která jsou ve vyrovnávacích pamětech, což může zpozdit reakci natolik, že dojde ke ztrátě dat. Hardwarové signály mohou být naproti tomu předávány „mimo pořadí“ a zpracovány téměř okamžitě.

Porovnání metod řízení toku dat
Způsob řízení toku dat Nebezpečí ztráty dat Cena Signalizace
Hardwarové řízení toku dat velmi malé vysoká mimo přenosový kanál
Softwarové řízení toku dat realizované hardwarově malé střední v přenosovém kanálu
Softwarové řízení toku dat se zakázaným FIFO malé, ale pomalé nízká v přenosovém kanálu
Softwarové řízení toku dat s povoleným FIFO velké nízká v přenosovém kanálu

Název „softwarové řízení toku dat“ naznačuje, že tato metoda byla obvykle implementována softwarově (nebo ve firmwaru), což mohlo způsobovat další zpoždění odezvy na XOFF. Toto zpoždění může vést ke ztrátě dat způsobené zaplněním vyrovnávací paměti. Naproti tomu hardwarové řízení toku dat je obvykle pod přímou kontrolou obvodu realizujícího univerzální asynchronní přijímač/vysílač (UART), který může zastavit vysílání okamžitě, bez zásahu softwaru. Pro odstranění latencí způsobených vestavěnou frontou FIFO implementují pokročilejší obvody UART, jako je 16950, metodu XOFF/XON řízení toku dat hardwarově.[1] Při použití obvodů UART, které postrádají takovou podporu jako 16550, může při používání softwarového řízení toku dat docházet k zaplnění vyrovnávací paměti, což lze poněkud zmírnit zákazem používání FIFO v obvodu UART.[1]

Další nevýhodou softwarového řízení toku dat je, že se kódy XOFF/XON nesmějí vyskytovat v přenášených datech, aby nebyly chybně považovány za příkazy pro řízení toku dat. Data, která obsahují kódy XOFF/XON, se tedy musí před přenosem nějakým způsobem zakódovat, což si vyžádá určitou režii. K tomuto účelu se často používá nějaký druh escape sekvencí. Pro tiskárny, které přímo interpretují ASCII kódy, to nemusí představovat problém, protože XON a XOFF nejsou kódy tisknutelných znaků; mohou se však vyskytnout při grafickém tisku.

Aplikace[editovat | editovat zdroj]

Softwarové řízení toku dat používají pomalá zařízení, zvláště starší tiskárny a hloupé terminály, pro indikaci, že nejsou dočasně schopna přijímat další data. Obvykle k tomu dochází kvůli omezené rychlosti výstupu a zaplnění vyrovnávacích pamětí. Některé nástroje pro řízení terminálů, např. termcap, používají „výplňky“ (krátká zpoždění s milisekundovou granularitou[2]), která poskytují takovým zařízením dostatek času pro provedení požadované činnosti bez nutnosti použití XOFF.

XOFF/XON (klávesy Ctrl+S a Ctrl+Q) lze použít pro pozastavení scrollování textu na obrazovce. U moderních počítačů však může být rychlost výpisu na obrazovku tak velká, že člověk rychle scrollující text nestíhá pozastavit ani po mnoha obrazovkách.

Softwarové terminálové emulátory obecně implementují podporu XOFF/XON jako jednu ze základních funkcí. Toto obecně zahrnuje Systémová konzole na moderní unixových a linuxových strojích, i emulátory GUI např. xterm a win32 konzole.

Robustní XON je technika, která umožňuje znovuzahájení komunikace v případě, že byla zastavena náhodně přijatým kódem XOFF. Přijímací jednotka periodický posílá znaky XON, když může přijímat data a linka je nečinná. To často používaly tiskárny se sériovým rozhraním (jako HP LaserJet II) pro indikaci, že jsou připojena (anglicky online) a připravena přijímat data. XON se posílá s periodou 1 až 30 sekund podle nastavení firmwaru tiskárny.

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Software flow control na anglické Wikipedii.

  1. a b YANG, Casper, 2009. The Secrets of Flow Control in Serial Communication. 1.0. vyd. [s.l.]: Moxa Technical Writing Center. (Moxa Tech Note). Dostupné v archivu pořízeném z originálu dne 2022-08-04. (EN) 
  2. The Termcap Library - Describe Padding [online]. www.gnu.org. Dostupné online.