Trabalho
Por: Júnior Diniz • 4/10/2015 • Trabalho acadêmico • 1.616 Palavras (7 Páginas) • 239 Visualizações
----------------------- Page 1-----------------------
Sistemas Operacionais (DCA0108)
Universidade Federal do Rio Grande do Norte
Centro de Tecnologia
Departamento de Engenharia de Computação e Automação
Professor: Diogo Pinheiro Fernandes Pedrosa
Turma: 01
Local: 4A2, 35T34
Aluno:___________________________________________________________________
Primeira Avaliação - Programas
Programa I
A sequência de Fibonacci é a série de números 0, 1, 1, 2, 3, 5, 8, … Formalmente, ela
pode ser expressa como:
fib =0
0
fib =1
1
fib =fib +fib
n n −1 n −2
Escreva um programa usando chamada de sistema para criação de processos que gere a
sequência de Fibonacci no processo filho criado. O número da sequência será fornecido
na linha de comando. Por exemplo, se 5 for fornecido, os cinco primeiros números da
sequência serão exibidos pelo processo filho. Já que os processos pai e filho têm suas
próprias cópias dos dados, será necessário que o filho exiba a sequência. Faça o pai
invocar a chamada de sistema para espera (wait(), por exemplo na API POSIX) para
esperar o processo filho ser concluído antes de sair do programa. Execute verificação de
erros necessária para assegurar que um número negativo seja passado na linha de
comando.
Observação:
• Esta tarefa é o exercício 3.15, página 80, do livro “Fundamentos de Sistemas
Operacionais”, de Silberschatz, Galvin e Gagne, editora LTC, 8ª edição.
----------------------- Page 2-----------------------
Programa II
No programa anterior, o processo filho deve exibir a sequência de Fibonacci, já que pai e
o filho têm suas próprias cópias dos dados. Outra abordagem para o projeto desse
programa é o estabelecimento de um segmento de memória compartilhada entre os
processos pai e filho. Essa técnica permite que o filho grave o conteúdo da sequência de
Fibonacci no segmento de memória compartilhada e faz o pai exibir a sequência quando o
filho é concluído. Já que a memória é compartilhada, qualquer alteração que o filho fizer
também será refletida no processo pai. Assim sendo, faça um programa para resolver a
questão da sequência de Fibonacci do programa anterior, mas utilizando memória
compartilhada para comunicação entre os processos pai e filho. Outra modificação é que,
dessa vez, a exibição da sequência é responsabilidade do processo pai.
O processo pai tem que seguir os passos abaixo:
1. Aceita o parâmetro passado na linha de comando e executa verificação de erros.
2. Cria um segmento de memória compartilhada.
3. Anexa o segmento de memória compartilhada ao seu espaço de endereçamento.
4. Gera o processo filho e invoca a chamada de sistema para esperar o filho terminar.
5. Filho grava o valor da sequência de Fibonacci no segmento de memória
compartilhada, desanexa memória e finaliza.
6. Pai desanexa e remove o segmento de memória compartilhada.
Já que o processo filho é uma cópia do pai, a região de memória compartilhada será
anexada ao espaço de endereço do filho e do pai. O processo filho gravará então a
sequência de Fibonacci na memória compartilhada e, para concluir, desanexará o
segmento.
Uma questão relacionada a processos em cooperação envolve problemas de
sincronização. Neste exercício, os processos pai e filho devem estar sincronizados para
que o pai não exiba a sequência de Fibonacci antes que o filho termine de gerar a
sequência.
...