Appunti per Scuola e Università
humanisticheUmanistiche
Appunti e tesine di tutte le materie per gli studenti delle scuole medie riguardanti le materie umanistiche: dall'italiano alla storia riguardanti le materie umanistiche: dall'italiano alla storia 
sceintificheScientifiche
Appunti, analisi, compresione per le scuole medie suddivisi per materie scientifiche, per ognuna troverai appunti, dispense, esercitazioni, tesi e riassunti in download.
tecnicheTecniche
Gli appunti, le tesine e riassunti di tecnica amministrativa, ingegneria tecnico, costruzione. Tutti gli appunti di AppuntiMania.com gratis!
Appunti
informatica
CComputerDatabaseInternetJava
Linux unixReti


AppuntiMania.com » Informatica » Appunti di c » Problemi di cooperazione nel modello a memoria comune

Problemi di cooperazione nel modello a memoria comune




Visite: 1552Gradito:apreciate stela [ Picolo appunti ]
Leggi anche appunti:

Problemi di mutua esclusione nel modello a memoria comune


Problemi di mutua esclusione nel modello a memoria comune VI) Scrivere una

I puntatori


I puntatori Una variabile è un'area di memoria alla quale è associato un nome

I modelli di memoria


I modelli di memoria L'architettura hardware dei processori Intel 80x86,
immagine di categoria

Scarica gratis Problemi di cooperazione nel modello a memoria comune

Problemi di cooperazione nel modello a memoria comune


II) Scrivere una applicazione concorrente che implementi il problema Produttore/Consumatore. In particolare, il programma crei due processi che agiscono, rispettivamente da produttore e consumatore, comunicando attraverso un unico buffer di memoria.


Descrizione: Il programma seguente implementa il problema dei Produttori/Consumatori nel caso particolare in cui ci sia un solo processo produttore ed un solo processo consumatore, ai quali si estendono i seguenti vincoli:

il consumo del buffer di memoria comune (allocato dal processo padre) da parte del processo consumatore non può avvenire se non dopo che il processo produttore vi abbia depositato un contenuto, e all'atto del consumo tale contenuto viene cancellato.

il processo produttore non può depositare nel buffer di memoria comune un nuovo contenuto se il precedente non è stato ancora consumato.

A garanzia della consistenza del contenuto del buffer condiviso, processo consumatore e processo produttore devono accedervi in mutua esclusione.


 Semafori.H (L'implementazione è quella indicata per il programma I)


#include <sys/types.h> 

#include <sys/ipc.h>

#include <sys/sem.h>


void Init_Sem(int, int);          //Inizializza Semaforo


void Wait_Sem(int, int);        //Wait su Semaforo


void Signal_Sem(int, int);     //Signal su Semaforo


int Awaiting_Sem(int, int);    //Restituisce il numero di processi in attesa su Semaforo


 Programma II.C


#include <stdio.h>         

#include <sys/shm.h>     

#include <sys/wait.h>         

#include 'semafori.h'


#define DIM 1   //Dimensione dell'area di memoria condivisa

#define NUM_OPS 4     //Numero di produzioni/consumi


#define SPAZIO_DISPONIBILE 0      //Definizione di MACRO per l'accesso ai semafori

#define MESSAGGIO_DISPONIBILE 1

#define INITIALIZE(S,V) Init_Sem(ID_Sem,S,V)

#define WAIT(S) Wait_Sem(ID_Sem,S)

#define SIGNAL(S) Signal_Sem(ID_Sem,S)


void main()


Ptr_Buf=shmat(ID_Buf, 0, 0); //Il segmento allocato viene annesso al segmento dati

//del processo al primo indirizzo disponibile così come

//specificato dal sistema

if (Ptr_Buf==(char*)-1)


//----- CREAZIONE SEMAFORI -----


key_t Key_Sem=IPC_PRIVATE; //Chiave del semaforo/i

int ID_Sem; //Identificatore del semaforo/i


ID_Sem=semget(Key_Sem, 2, IPC_CREAT|0664); //Viene allocato un gruppo di semafori di cardinalità 2,

//viene associato al gruppo un ID e viene creata una

//struttura dati ausiliaria che consenta di gestirlo

//RW per User, RW per Gruppo, R only per Others

if (ID_Sem==-1)


INITIALIZE(SPAZIO_DISPONIBILE,1); //Setta SPAZIO_DISPONIBILE a 1

INITIALIZE(MESSAGGIO_DISPONIBILE,0); //Setta MESSAGGIO_DISPONIBILE a 0


//----- GENERAZIONE FIGLIO PRODUTTORE -----


pid=fork(); //Generazione del figlio Produttore

if (pid==-1) else if (!pid)


exit(0); //Il figlio Produttore termina correttamente


}


//----- GENERAZIONE FIGLIO CONSUMATORE -----


pid=fork();

if (pid==-1) else if (!pid)


exit(0); //Il figlio Consumatore termina correttamente

}


//----- SINCRONIZZAZIONE DEL PADRE CON I FIGLI -----


for(i=0; i<2; i++)


//----- RILASCIO MEMORIA CONDIVISA E SEMAFORO -----


shmctl(ID_Buf, IPC_RMID, 0);

semctl(ID_Sem, 0, IPC_RMID);




Scarica gratis Problemi di cooperazione nel modello a memoria comune
Appunti su:



Scarica 100% gratis e , tesine, riassunti



Registrati ora

Password dimenticata?
  • Appunti superiori
  • In questa sezione troverai sunti esame, dispense, appunti universitari, esercitazioni e tesi, suddivisi per le principali facoltà.
  • Università
  • Appunti, dispense, esercitazioni, riassunti direttamente dalla tua aula Universitaria
  • all'Informatica
  • Introduzione all'Informatica, Information and Comunication Tecnology, componenti del computer, software, hardware ...