Buongiorno, una domanda relativa al cambiamento di stato dei processi.
Supponiamo che una funzione metta in sleep un processo (per esempio perché ha trovato un mutex a zero) e dopo un po' il mutex viene messo a 1 da un altro processo: a questo punto il processo in sleep dovrebbe risvegliarsi. Ma è il kernel che lo risveglia? E, se sì, in che modo? Con un segnale catturabile solo dalla funzione di attesa? E, sempre se è vero che sia il kernel a risvegliarlo, qual è il meccanismo di controllo delle condizioni di risveglio? Un modulo del kernel controlla le strutture relative ai semafori ad ogni interruzione del timer e, verificate le condizioni, toglie il processo dallo stato di sleep?
Grazie