Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    sincronizzazione tra processi

    ciao a tutti, volevo sapere se mi potevate aiutare con questo esercizio:
    è il classico problema del barbiere che dorme..

    Il bagnino della spiaggia di sompazzo è addetto a due compiti: accompagnare un nuovo cliente all'ombrellone a lui assegnato, soccorrere bagnanti in difficoltà. Il bagnino, quando assopito lo sveglia, altrimenti attende che il bagnino si liberi. Un bagnante, se in difficoltà, urla dal mare chiedendo aiuto. Il soccorso ai bagnanti in difficoltà è, ovviamente, il compito che ha priorità. Comunque assumiamo per semplicità (anche se con qualche rischio) che il bagnino non interrompa mai l'azione in corso per intraprenderne un'altra.
    Individuare le risorse condivise del problema, scrivere i processi che lo caratterizzano ed inserire le primitive semaforche che permettono a tali processi di sincronizzarsi e mutualmente escludersi in maniera corretta. Se può aiutare, è lecito fare assunzioni sulle politiche di scheduling dei semafori introdotti.

    NB il numero di ombrelloni è illimitato, quindi ogni cliente non rimarrà mai senza ombrellone..
    ciao e grazie VVoVe:

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Per quale linguaggio? O è indifferente?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    ciao alka..guarda va bene anche in pseudocodice..

    basta che in questo esercizio gli metto in evidenza i semafori per la sincronizzazione e mutua esclusione tra quei processi..

    ciao

  4. #4
    allora se non ho scritto fesserie..il codice dell'esercizio con il numero di ombrelloni dovrebbe essere questo..

    Ho due processi:
    - bagnino
    - cliente (ovviamente questo può essere più di uno)
    Utilizzo tre semafori cosi inizializzati:
    - bagnino = 0
    - cliente = 0
    - mutex = 1
    In fine ho queste due variabili:
    - N = numero di ombrelloni sulla spiaggia
    - n_c = numeri di clienti

    Ora veniamo al codice del bagnino:
    Codice:

    bagnino {
    while(1) {
    P(cliente);
    P(mutex);
    n_c--;
    V(bagnino);
    v(mutex);
    sono_occupato();
    }
    }


    codice del cliente:
    Codice:

    cliente {
    while(1) {
    P(mutex);
    if(n_c < N) {
    n_c++;
    V(cliente);
    V(mutex);
    P(bagnino);
    mi_sta_soccorrendo();
    }
    else {
    attendo();
    V(mutex);
    }
    }
    }

    ps questo però se il numero degli ombrelloni fosse stato finito..
    come modifico questo codice visto che il numero degli ombrelloni è illimitato?
    grazie a tutti ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.