15.4. Tampons et latences

Cette section explique comment on peut assurer une lecture audio sans interruptions. Cette problématique n'est absolument pas spécifique à Linux mais est inhérente à tous les systèmes d'exploitation multi-tâches. Dans les systèmes d'exploitation multi-tâches, il est normal que plusieurs processus fonctionnent en même temps. Étant donné que le processeur ne peut traiter qu'un processus à la fois, les processus se voient attribuer du temps processeur par le séquenceur du système d'exploitation. Ce passage d'un processus à un autre est si rapide que l'utilisateur n'en remarque rien.

Cependant, lors de la lecture audio, ces courtes interruptions se feraient entendre sous forme de cliquetis. Les programmes audio utilisent donc un tampon (buffering) pour la lecture. Les données audio qui se trouvent dans le tampon continuent à être émises par la carte son lorsque le programme audio n'est plus traité par le séquenceur. La lecture ne fait donc entendre aucun cliquetis lorsque le tampon est assez important pour pouvoir pallier même à l'interruption la plus longue possible.

Cependant, la taille du tampon influence également le temps de réaction (latence) du programme. Par conséquent, la taille du tampon doit être la plus petite possible, en particulier dans le cas des applications interactives telles que les synthétiseurs en temps réel et les consoles de mixage pour DJ. En fait, la durée des interruptions dépend de la charge du système et de la priorité du processus. En conséquence, la taille du tampon nécessaire à une lecture sans cliquetis peut être diminuée en augmentant la priorité du programme audio ou en utilisant un séquenceur temps réel. Pour cette raison, de nombreux programmes audio tentent de basculer leur processus vers un séquenceur temps réel. Cependant, les droits root sont nécessaires pour basculer un processus vers un autre séquenceur. Pour cela, le programme setpriority du paquetage rtstools est nécessaire.

Pour faire fonctionner, par exemple, le programme timidity avec le séquenceur FIFO, vous pouvez procéder comme suit :

  1. Démarrez le programme timidity

  2. Démarrez une console root.

  3. Utilisez la commande suivante pour trouver le numéro de processus de timidity :

    pidof timidity
  4. Changez le séquenceur à l'aide de la commande :

    setpriority <numéro_du_processus> fifo 10

Vous pouvez accélerer cette procédure en utilisant la commande suivante dans un shell root :

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

Exécuter un programme en mode root comporte toujours un risque étant donné que, dans ce cas, tout est permis à ce programme. Si l'ordinateur est relié à Internet, le risque devient alors inacceptable. Dans ce cas, des failles dans la sécurité du programme peuvent être exploitées pour obtenir accès au système.

[Warning]Avertissement

Les commandes suivantes ne devraient jamais être exécutées sur un ordinateur auquel ou peut accéder depuis Internet ou pour lequel un plantage ou une perte de données peuvent avoir des conséquences graves.

Pour exécuter un programme en mode root, le mécanisme sudo devrait être utilisé. Ce mécanisme est expliqué avec l'exemple du programme timidity++. Pour permettre à tous les utilisateurs de votre système l'exécution de timidity++ avec les privilèges root, modifiez le fichier /etc/sudoers. Voyez les pages de man sudo et sudoers pour plus de détails sur la procédure. Si vous n'avez pas l'habitude de l'éditeur vi, vous pouvez ouvrir un autre éditeur, par exemple joe à l'aide de la commande export EDITOR=joe. Exécutez alors visudo en tant que root et ajoutez la ligne suivante à la fin de /etc/sudoers :

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

Ainsi, tous les utilisateurs du système peuvent maintenant démarrer timidity en mode root à l'aide de la commande sudo timidity. Le mot de passe de l'utilisateur sera alors exigé si la dernière commande sudo a été exécutée depuis plus de cinq minutes.


SUSE LINUX 9.2