Sistemas de Computação I - Trabalho 1

Trabalho : Multiplicação de Matrizes

Deve ser construído um programa C que receba como parâmetro o nome de um arquivo e o número de processos auxiliares a serem usados. O arquivo dado deve conter duas matrizes quadradas de números inteiros. Cada uma das matrizes aparece no arquivo como uma sequência de linhas, cada uma contendo todos os elementos de uma linha separados por brancos. As duas matrizes são separadas por uma ou mais linhas em branco.

Por exemplo, o arquivo poderia conter duas matrizes 3x3:

1 3 5
7     9  12
5 33 25

 7    8    1
12   23   14
-4    4   -5 

Caso alguma das matrizes não seja quadrada ou as duas não sejam do mesmo tamanho, o programa deve sinalizar um erro. O programa deve calcular o produto das duas matrizes lidas e imprimí-lo na tela em um formato razoável (por exemplo, o mesmo do arquivo de entrada).

A multiplicação deve ser executada, com concorrência, pelos processos auxiliares (também chamados de escravos.) Após ler o arquivo com as matrizes, o processo inicial (chamado de mestre) deve construir dois pipes e em seguida disparar N processos escravos (onde N é o segundo parâmetro do programa). A seguir, o processo mestre deve fechar um dos pipes para leitura e o outro para escrita; os processos escravos devem agir de forma simétrica.

Um dos pipes funcionará como um pool de tarefas, ou seja, o mestre colocará neste pipe uma descrição de cada tarefa a ser realizada. A descrição da tarefa consiste do par de inteiros que descreve uma posição da matriz. O outro pipe será usado para envio dos resultados calculados pelos processos escravos para o processo mestre. O mestre só deve imprimir o resultado quando tiver recebido todas as respostas.

Cada processo escravo deve continuamente processar tarefas do pool de tarefas, calculando o elemento indicado e enviando o resultado para o mestre, até que não existam tarefas a realizar.

A finalização do programa deve ser tratada. A forma de detectar a finalização deve ser definida por cada grupo (é desaconselhado o uso de kill pelo processo mestre).

As chamadas necessárias para construção do programas estão documentadas no próprio sistema, via man, e em Stevens. Este livro está disponível para consulta na Biblioteca da Informática.

Data de entrega: 7/04

ATENÇÃO: Questões de Ordem

Last update: Thu Apr 2 16:45:56 EST 1998 by Noemi