Decalogo di Programmazione Concorrente

From Sistemi Operativi
Revision as of 21:47, 21 January 2014 by Renzo (talk | contribs) (Created page with "Se il vostro esercizio rispetta tutte le regole del decalogo non e' detto che sia corretto. Al contrario se il vostro esercizio non soddisfa una delle regole seguenti allora e...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Se il vostro esercizio rispetta tutte le regole del decalogo non e' detto che sia corretto. Al contrario se il vostro esercizio non soddisfa una delle regole seguenti allora e' sicuramente errato.

  • Le operazioni sui semafori (in notazione ad oggetti) sono S.P() e S.V(). Non hanno alcun parametro ne' alcun valore di ritorno. Se invece volete usare la notazione procedurale le operazioni sono P(S) e V(S), unico parametro e' il semaforo e nessun valore di ritorno.
  • Le operazioni definite sulle variabili di condizione sono c.wait() e c.signal(). Non hanno parametri, ne' valore di ritorno.
  • Altre chiamate di fantasia quali block, wakeup, restart non devono mai comparire in soluzioni di esercizi
  • Quando si usano semafori tutti gli accessi ai dati condivisi devono avvenire in mutua esclusione
  • Bloccarsi (Busy Wait) all'interno di un monitor è deadlock
  • Le code dei semafori e quelle delle variabili di condizione e il valore dei semafori sono strutture e variabili private gestite dall'implementazione del paradigma e non sono accessibili
  • La routine di inizializzazione di un monitor non può contenere wait e signal

E' sicuramente errato un programma che

  • Usa variabili prima di assegnare loro un valore iniziale
  • Contiene solo send e nessuna receive. Contiene solo receive e nessuna send
  • Su un semaforo ci sono solo P e nessuna V o viceversa.
  • Su una variabile condition ci sono wait e nessuna signal (o viceversa)
  • Tutte le procedura entry contengono wait come primo statement