← Indietro
EserciziDivisi per argomento

Sistemi operativi 2 Nucleo e commutazioni processi thread

Divisi per argomento di Architettura dei Calcolatori e Sistemi Operativi per il corso di Computer Engineering presso Politecnico di Milano. Materiale proveniente dall’archivio storico Studwiz e classificato per la consultazione online.

Architettura dei Calcolatori e Sistemi OperativiDivisi per argomento

Informazioni sul documento

Cosa trovi in questo materiale

Divisi per argomento di Architettura dei Calcolatori e Sistemi Operativi per il corso di Computer Engineering presso Politecnico di Milano. Materiale proveniente dall’archivio storico Studwiz e classificato per la consultazione online.

Qualità dell’importazione: il testo è stato estratto direttamente dal documento originale.

Contenuti estratti dal documento

Passaggi rappresentativi riconosciuti nelle diverse parti del materiale. Il testo completo resta presente nella pagina per la ricerca, mentre l’anteprima compatta rende più semplice la lettura.

Pagina 1

esercizio 2 – nucleo e commutazioni processi/thread Si considerino i seguenti frammenti di programma: / programma CODICE.c / main ( ) { ……. i = 1; while (i <= 2) { pid = fork ( ); if (pid == 0) { / codice eseguito da F1 e F2 / if (i == 1) { / caso i == 1 / execl (“/acso/mu_1_2”, “mu_1_2”, “1”, NULL); exit (-1); } else { / caso i == 2 / execl (“/acso/mu_1_2”, “mu_1_2”, “2”, NULL); exit (-2); } / fine if / } / fine if / / fine codice eseguito da F1 e F2 / i = i + 1; } / fine while / pid = wait (&status); exit (0); } / CODICE / ------------------------------------------------------------------------------ -- È dato un processo P che esegue il programma CODICE. Tramite un ciclo il processo P crea due processi figli F1 e F2, che eseguono una mutazione di codice (che va sempre a buon fine) con uno stesso programma MU_1_2 (vedi pagina successiva) cui passano un parametro con valore diverso. Nel codice mutato, il processo F1 crea un processo figlio R, mentre F2 crea TH1 e TH2. Nel sistema non ci sono altri processi oltre ai 6 descritti, a parte il processo idle che è sempre implicitamente presente. / programma MU_1_2.c / pthread_mutex_t GATE = PTHREAD_MUTEX_INITIALIZER; sem_t GO; void  FIRST (void  arg)  pthread_mutex_lock (&GATE); sem_post (&GO); pthread_mutex_unlock (&GATE); sem_wait (&GO); return NULL;  / end FIRST / void  LAST (void  arg)  pthread_mutex_lock (&GATE); sem_wait (&GO); pthread_mutex_unlock (&GATE); sem_post (&GO); return NULL;  / end LAST / main ( ) { / codice eseguito da F1 e F2 - MU_1_2/ pthread_t TH_1, TH_2; local = valore parametro passato con execl: 1 o 2; if (local == 1) { / caso local == 1 / pid = fork ( ); if (pid == 0) { / codice eseguito da R / exit (3); } / fine if / / fine codice eseguito da R / } else {…

Anteprima

Prima pagina del documento.

Prima pagina: Sistemi operativi 2 Nucleo e commutazioni processi thread