Communication inter-processus§
Systèmes d’exploitation
auteur: | Pierre-Antoine Champin |
---|---|
adresse: | Département Informatique - IUT - Lyon1 |
licence: | ![]() |
Systèmes d’exploitation
auteur: | Pierre-Antoine Champin |
---|---|
adresse: | Département Informatique - IUT - Lyon1 |
licence: | ![]() |
Malgré la généralité des mécanismes d”entrée-sortie, d’autres mécanismes peuvent être nécessaire pour faire communiquer des processus.
shmget
permet d’obtenir un pointeur vers une zone mémoire partageable entre plusieurs processus (Linux)shm_open
permet d’obtenir un descripteur de fichier (en accès aléatoire avec lseek
) vers une zone mémoire partageable (POSIX)mmap
§shm_open
peuvent ensuite être passés à mmap
pour accéder à cette zone mémoire directement.kill
)signal
ou sigaction
)Les signaux sont un mécanisme pour faire de la programmation événementielle
NB : ce n’est pas le seul…
Ils sont notamment une manière d’utiliser les entrées / sorties asynchrone :
on peut demander à aio_read
et aio_write
d’émettre un signal lorsque
l’opération est effectivement terminée.
Les signaux peuvent également être utilisés pour communiquer entre plusieurs processus de manière asynchrone
SIGUSR1
et SIGUSR2
réservés aux applications (i.e. pas de sémantique préfédinie, jamais envoyés par le système lui même)Ils peuvent notamment servir à la synchronisation
sleep
) qu’un autre processus lui envoie un signal pour poursuivre son exécutionRessource servant à la synchronisation
Analogie à une pile de jetons
sem_post
) ou prendre (sem_wait
) un jetonsem_wait
peut être bloquant:
lorsqu’un processus tente de prendre un jeton alors que la pile est vide,
il se bloque en attendant qu’un jeton soit posé.