Questions programmation système
Bonjour, j'ai quelques questions concernant la programmation système sous linux.
1. Lorsque l'on utilise une boite aux lettres :
Code:
1 2 3
|
//---Initialisation de la boite aux lettres (ou file des messages)
int messages = msgget(ftok("m",3), IPC_CREAT | 0660); |
Quand on fait un appel (bloquant) à msgrcv(). S'il n'y a pas de messages dans la file, le processus se met en attente. Quel est la stratégie adoptée par linux : le processus se met il en sommeil et c'est l'envoi du message qui va le réveiller ou est ce autre chose ?
2. Comment faire pour qu'un processus se mette lui même en sommeil ? comment le réveiller ensuite ?
Merci :D
Re: Questions programmation système
Citation:
Envoyé par SteelBox
Quand on fait un appel (bloquant) à msgrcv(). S'il n'y a pas de messages dans la file, le processus se met en attente. Quel est la stratégie adoptée par linux : le processus se met il en sommeil et c'est l'envoi du message qui va le réveiller ou est ce autre chose ?
Le processus s'endort sur la ressource. Au moment de l'election d'une nouvelle tache, le systeme va verifier les ressources disponibles, et si celle sur laquelle le process attend est dispo, il est mis a l'etat RUN et attend son election.
Citation:
2. Comment faire pour qu'un processus se mette lui même en sommeil ? comment le réveiller ensuite ?
Avec les signaux, mais ca risque d'etre tordu à faire pour le reveiller apres ;)