Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia de Computação Sistemas Operacionais / Laboratório de Sistemas Operacionais Trabalho Prático 12 Utilização de Semáforos com Processos Aluno: Larisse Stefany Pires Amorim Engenharia de Computação Sistemas Operacionais / Laboratório de Sistemas Operacionais Objetivo Implementar um programa que atualiza o valor da variável “sum” compartilhada através de processos e utilizar semáforos para controlar o acesso à variável compartilhada. Desenvolvimento e resultados obtidos Para o conceito de semáforos para controlar o acesso à variável compartilhada dentro da sessão crítica pelos processos, foi criado uma fila que gerencia a região de memória compartilhada. Os processos filhos irão escrever na fila o valor a ser somado na variável sum e os valores lá escrito serão somados na variável resultado. A lógica para implementação foi bem parecida com aquela que foi utilizada para calcular o valor de pi através de filas de mensagens. Nas imagens abaixo poderão ser vistos trechos do programa: Figura 1: procedimento para acesso à sessão crítica. Na figura, sem_wait(&s) e sem_post(&s) são operações equivalentes ao Down e Up, respectivamente no padrão POSIX. Figura 2: os processos filhos escrevem na fila de mensagens os valores. Engenharia de Computação Sistemas Operacionais / Laboratório de Sistemas Operacionais Figura 3: após os processos filhos terminarem, é feita a soma dos valores que estão na fila. Os resultados da compilação foram: Figura 4: Resultado da execução 1 - Criação dos processos Figura 5: Resultado da execução 2 - escrita na fila Engenharia de Computação Sistemas Operacionais / Laboratório de Sistemas Operacionais Figura 6: Resultado da execução 3 - resultado final Como compilar e executar o programa: ● gcc semaforo.c -o semaforo -lpthread ○ ./semaforo
Compartilhar