14.7. Bufferování a zpoždění

[Warning]Varování

Tato kapitola je určena pouze pro pokročilé uživatele. Zde uvedené postupy vyžadují práva uživatele root.

V této části se dovíte, jak dosáhnout plynulého netrhaného přehrávání. tento problém není spojen jen s Linuxem, ale vůbec se všemi multitaskingovými operačními systémy. V těchto systémech běží najednou několik procesů, které si konkurují v přístupu ke zdrojům. Protože procesor může pracovat jen s jedním procesem najednou, má každý proces vymezenou určitou dobu, po který je zpracováván procesorem. Okamžiky, kdy není a je zpracováván, se střídají tak rychle, že je za normích okolností uživatel vůbec nevnímá.

Během přehrávání zvuku je však situace jiná a znatelné jsou třeba jen kliknutí myší. Tento problém se řeši tak, že aplikace používají tzv. buffer. Zvuk je prak netrhaný a nenarušují ho ani prostá kliknutí myší.

Velikost bufferu však omezuje reakční dobu (zpoždění) programu na příkazy. U interaktivních aplikací jako syntetizátory pracující v reálném čase nebo konzolo DJ směšovače je proto buffer nastaven na minimální možnou hodnotu. Přerušení závisí také na zatížení systému a priorite procesu. Velikost bufferu proto lze zmenšit, pokud se zvýší priorita procesu přehrávání. Nastavení priority však může provádět pouze uživatel root.

Jako příklad si můžem uvést přenastavení FIFO časovače u programu timidity:

  1. Spusťte timidity

  2. Jako uživatel root si otevřete konzoli.

  3. Použijte příkaz pidof timidity k nalezení ID procesu programu timidity.

  4. Změňte časovač příkazem setpriority <ID_procesu> fifo 10.

pro urychlení můžete jako root root zadat celý proces najednou:

for i in `pidof timidity`; do setpriority $i fifo 10; done
  

Spouštění programu pod uživatelem root je vždy velmi nebezpečné, protože tomuto programu je v systému dovoleno dělat proakticky vše. V případě připojení k Internetu může dojít k ohrožení bezpečnosti systému, protože program může obsahovat chyby umožňující vzdálený přístup.

[Warning]Varování

Příkazy popsané dále by nikdy neměly být spouštěny na počítačích s připojením k Internetu nebo na počítačích, kde jsou uložena důležitá data.

Pro spuštění programů v superuživatelském režimu se používá sudo mechanizmus. Jeho princip si ukážeme na aplikaci timidity++. Aby mohli všichni uživatelé spouštět timidity++ application v superuživatelském režimu, změňte soubor /etc/sudoers. Postup najdete v manálových stránkách sudo(8) a sudoers(5). Pokud si příliš nerozumíte s editorem vi, zvolte si prostě editor, který vám nejvíce vyhovuje. Výchozí editor systému např. joe nastavíte příkazem export EDITOR=joe. Pak jako uživatel root vykonejte příkaz visudo a na konec souboru /etc/sudoers přidejte řádku:

ALL ALL=(ALL) /usr/bin/timidity

Nyní mohou všichni uživateké spouštět timidity++ v superuživatelském režimu příkazem sudo timidity. Po uplynutí více než pěti minut od zadání posledního příkazu sudo je vyžadováno heslo uživatele root.


SUSE LINUX Uživatelská příručka 9.3