08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

notas de aula - Jerônimo C. Pellegrini<br />

10 C O N C O R R Ê N C I A<br />

Programas concorrentes são projetados para realizar mais de uma tarefa ao mesmo<br />

tempo (ou para passar ao usuário a ilusão de fazê-lo): são similares a diversos programas<br />

sequenciais funcionando em paralelo.<br />

Funções são mecanismos de abstrações para processos; <strong>com</strong> variáveis não-locais, é<br />

possível construir fechos, que são abstrações de processos e dados a eles relacionados;<br />

continuações são a abstração da noção de “estado” de uma <strong>com</strong>putação, e podem ser<br />

usadas para implementar abstrações para o <strong>com</strong>portamento de um programa na presença<br />

de falhas, <strong>com</strong>putação não-determinística etc. Mecanismos para programação concorrente<br />

oferecem outra forma de abstração, que permite modelar diversas tarefas diferentes que<br />

são realizadas simultaneamente 1 .<br />

Um programa concorrente é a intercalação de um conjunto de programas<br />

sequenciais.<br />

Um processo é um trecho de programa (concorrente ou não) <strong>com</strong> um único<br />

espaço de endereçamento;<br />

Uma thread é um trecho de programa, executado sequencialmente, que <strong>com</strong>partilha<br />

o espaço de endereçamento <strong>com</strong> o processo que a criou.<br />

Uma instrução atômica é uma instrução que pode ser eecutad por um processo<br />

<strong>com</strong> a garantia de que não será intercalada <strong>com</strong> outra<br />

Uma abstração útil para raciocinar sobre programas concorrentes é:<br />

Há uma entidade escalonadora que decide de qual processo será a próxima<br />

instrução atômica a ser executada; o programador não tem <strong>com</strong>o influenciar<br />

esta entidade nas suas decisões<br />

Esta abstração é útil para modelar programas concorrentes executando em uma única<br />

Versão Preliminar<br />

CPU (<strong>com</strong> multitarefa), <strong>com</strong> múltiplas CPUs e também programas distribuídos.<br />

1 Alguns mecanismos para programação concorrente foram abordados superficialmente no Capítulo 8, na<br />

discussão de aplicações de continuações.<br />

[ 27 de outubro de 2010 at 15:47 ]<br />

225

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!