2010-04-29 5 views
1

Ceci est un extrait de Advanced Liniux Programmation:Sempahores la mémoire partagée et processus (IPC)


sémaphores continuent d'exister même après tous les processus utilisant les ont pris fin. Le dernier processus d'utilisation d'un ensemble de sémaphores doit le supprimer explicitement pour s'assurer que le système d'exploitation ne manque pas de sémaphores. Pour ce faire, appelez semctl avec l'identificateur de sémaphore , le nombre de sémaphores dans l'ensemble, IPC_RMID comme troisième argument, et toute valeur semun union comme quatrième argument (qui est ignoré). L'ID utilisateur effectif du processus appelant doit correspondre à celui de l'allocateur du sémaphore (ou l'appelant doit être root). Contrairement aux segments de mémoire partagée, la suppression d'un ensemble de sémaphores entraîne la libération immédiate de Linux.


Si un processus allouent une mémoire partagée, et beaucoup l'utilisation du processus et jamais mis à le supprimer (avec shmctl), si tous se terminent, la page partagée continue à être disponible. (Nous pouvons voir cela avec ipcs).

Si un processus a fait le shmctl, alors lorsque le dernier processus est détaché, le système libère la mémoire partagée. Jusqu'ici tout va bien (je suppose, si non, corrigez-moi). Ce que je ne comprends pas de cette citation que j'ai faite, c'est que d'abord il dit: "Les sémaphores continuent d'exister même après que tous les processus les utilisant se soient terminés." puis: "Contrairement aux segments de mémoire partagée, la suppression d'un ensemble de sémaphores entraîne la désaffectation immédiate de Linux."

Répondre

2

Les deux déclarations ne se contredisent pas ...

La première déclaration indique que le sémaphores continuera d'exister à moins/jusqu'à ce qu'un programme supprime explicitement (il ne sera pas supprimé automatiquement lorsque le dernier programme cesse de l'utiliser).

La deuxième déclaration indique que lorsqu'un programme supprime un ensemble de sémaphores, linux désaffecter le sémaphores immédiatement (par opposition à, disons, en attendant que tous les autres programmes cesser de l'utiliser en premier)

+0

Grand. Je comprends maintenant. Merci. – fsdfa

Questions connexes