Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. Un laboratorio di ricerca è dotato di N postazioni, di cui K a disposizione del personale di tipo "A" e le rimanenti N-K a disposizione del personale di tipo "B". L'accesso al laboratorio è gestito da un coordinatore che assegna le postazioni secondo la seguente politica: un utente di tipo "A" accede al laboratorio solo se una delle N-K postazioni è libera, altrimenti si mette in attesa. Le postazioni riservate agli utenti di tipo "B" non possono essere occupate per più di M minuti, alla scadenza dei quali l'utente libera la postazione.
  2.  
  3. #define N
  4. #define K
  5. #define M
  6.  
  7. variabili condivise:
  8. postazioniA_libere: integer(:=K)
  9. mutex_postazioniA: semaforo binario(:=1)
  10. postazioniB: semaforo contatore(:=N-K)
  11.  
  12. PersonaleA(){
  13. wait(mutex_postazioniA)
  14. if(postazioniA_libere>0){
  15. postazioniA_libere--
  16. signal(mutex_postazioniA)
  17. ///Accede al laboratorio e si mette al pc
  18. ///Termina il suo lavoro e quindi si alza e va via
  19. wait(mutex_postazioniA)
  20. postazioniA_libere++
  21. signal(mutex_postazioniA)
  22. }
  23. elsee al pc
  24. signal(mutex_postazioniA)
  25. esce
  26. }
  27.  
  28. PersonaleB(){
  29. wait(postazioniB)
  30. time_t momento_arrivo=OraEsatta()
  31. ///Si mette al pc
  32. while(Ora_Esatta()-momento_arrivo<=M*60){
  33. ///continua a lavorare al pc
  34. }; <-Finché non passano M*60 secondi
  35. signal(postazioniB)
  36. ///Libera il posto
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement