Sono uno studente di informatica e ho un esame di domani sui sistemi operativi. Ho le domande d'esame degli anni passati e c'è uno scenario in una domanda. Ci sono due attività nella coda pronta per l'uso (non so come si chiama). E l'algoritmo di pianificazione è il più breve tempo di completamento prima (STCF). E due semafori, S1 e S2. Consente di chiamare l'attività T1 e l'attività due T2. Ecco lo scenario:
T1
{
down(S1);
// other codes
up(S1);
}
T2
{
down(S1);
down(S2);
//Other code...
up(S2);
up(S1);
}
L'attività T1 arriva alla coda ready-to-run al momento del 0 ° secondo e impiega 10 secondi per essere completata. T2 arriva in coda read-to-run al 3o secondo e impiega 3 secondi per essere completato.
Qui è dove mi sono bloccato. Il T1 viene eseguito per 3 secondi, dopodiché verrà prerogato, poiché T2 arriva e il suo tempo di completamento è minore. T2 attenderà che il semaforo S1 sia alzato per procedere ulteriormente. Cosa farà il processore in questa situazione? Passerà a T1 o continuerà a tentare di elaborare T2 poiché il suo tempo di completamento è minore e, di conseguenza, deadlock?