Coise

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (459 palavras )
  • Download(s) : 0
  • Publicado : 26 de novembro de 2011
Ler documento completo
Amostra do texto
Fundamentos de Sistemas de Operação
FCT/UNL - 2009/2010
Trabalho prático 3
Sincronização de processos – Semáforos

Introdução

Este trabalho pretende ilustrar aspectos apresentados nas aulasteóricas relacionados com a programação concorrente, concretamente o uso de semáforos para a sincronização de processos e a definição de zonas de memória partilhada entre processos.

DescriçãoEste trabalho, foi constituído por duas fases: a primeira fase consistia simplesmente em que, um processo escrevia todas as suas mensagens, e só quando todas as mensagens do primeiro processo tivessemsido escritas, é que o programa passava para o processo seguinte, e escrivia as respectivas mensagens; a segunda fase consistia em que cada processo escrevia uma mensagem de índice i, só quando todos osprocessos tiverem escrito as respectivas mensagens do mesmo índice, o primeiro processo pode escrever a sua mensagem de índice i+1.
Para resolver o problema da primeira fase, fez-se um “include” de“sem.h” para se fazer a chamada dos métodos de semáforo, como por exemplo o “createSem”, para se fazer a implementação do semáforo, e assim resolver o problema. Implementou-se o semáforo junto àzona crítica, fazendo um decremento antes, e um incremento após. Na segunda fase, fez-se um “include” de “sem.h” e de “shm.h”, para fazer a chamada dos métodos dos semáforos e da memória partilhada,respectivamente. Criou-se um método barreira, que faz a sincronização para que cada processo só continue a sua execução quando todos tiverem chegado à barreira, assim, só quando todos os processos tiveremescrito a mensagem i, é que podem avançar para a mensagem i+1, e criou-se uma variável de memória partilhada dentro da barreira, na qual os processos verificam o seu estado, para saber o índice demensagem que devem escrever.

Código

Ficheiro “nim.c” fase 1

#include
#include
#include
#include
#include "sem.h"

#define N_NIM 5

void nim( int i );

int main(int argc, char...
tracking img