Prefácio dos Autores

Este livro apresenta a matéria que tradicionalmente tem sido estudada como uma segunda disciplina de sistemas operacionais, em vários cursos de Ciência da Computação, a qual inclui o tema de programação concorrente.

O estudo da programação concorrente tem sido desenvolvido em conjunto com o estudo de sistemas operacionais por dois motivos básicos. Primeiro: porque a programação concorrente surgiu 'dentro' dos sistemas operacionais. Segundo: porque os mecanismos de programação concorrente são normalmente implementados pelo próprio sistema operacional, no seu nível mais interno, denominado kernel.

Apesar da programação concorrente ter sido utilizada inicialmente apenas na implementação de sistemas operacionais, hoje em dia é amplamente utilizada em diversos tipos de aplicações. Como tal, os princípios e as técnicas de programação concorrente passaram a ser considerados uma área de estudos básica dentro da Ciência da Computação. Mas, mesmo que a programação concorrente seja importante e interessante por si só, é conveniente estudá-la, pelo menos inicialmente, dentro do contexto de sistemas operacionais, o que é feito neste livro. Aqui, as ferramentas e técnicas da programação concorrente são ilustradas com exemplos de sistemas operacionais.

Nos cursos de bacharelado em Ciência da Computação da UFRGS, da UFSC, da PUCRS, da UNICRUZ e da UNILASALLE, o contéudo deste livro é ministrado para os alunos que já estudaram os tópicos de gerência de processador, gerência de periféricos, gerência de memória e sistemas de arquivos. Embora este embasamento seja conveniente, também é verdade que o livro pode ser aproveitado por pessoas sem essa base, que tenham interesse em conhecer a organização interna dos sistemas operacionais e as técnicas usadas na construção desses sistemas.

Se nós, professores, tivéssemos que avaliar o conhecimento de um aluno nesta área da computação, certamente ficaríamos muito satisfeitos com um aluno que: (1) conhecesse os mecanismos que os componentes de um sistema operacional utilizam para se sincronizar e comunicar (em particular, como esses mecanismos são implementados no kernel do sistema operacional, (2) soubesse resolver os problemas clássicos da programação concorrente (produtor-consumidor, barbeiro dorminhoco, jantar dos filósofos, etc.) através dos principais mecanismos existentes (semáforos, monitores, rendezvous, etc), e (3) conhecesse as técnicas para detectar e prevenir deadlocks. Basicamente esta é a matéria tratada neste livro. O aprendizado de assuntos aqui abordados é facilitado pela disponibilidade de uma linguagem de programação didática, denominada de Vale 4, que pode ser instalada e, praticamente qualquer microcomputador e que está disponível através da home page www.inf.ufrgs.br/~stoscani.

Para cortar o texto, nas páginas que iniciam capítulos e nas páginas em branco que finalizam capítulos, são colocadas estrofes da obra prima da literatura gaúcha (a nação gaúcha se estende por três países: Argentina, Brasil e Uruguai), o poema Martin Fierro de José Hernandez. Foram selecionadas estrofes do cantar de contra-ponto entre Martín Fierro e um pajador negro. Para quem não sabe, Martín Fierro é o Livro Sagrado da cultura gaúcha.

Queremos agradecer a ajuda de Gil Carlos Rodrigues Medeiros, nosso colega, professor da Universidade Federal de Pelotas, pela revisão criteriosa de boa parte do texto (daquela que ficou boa) e dois ex-alunos: Júlio Carlos Balzano de Mattos, que, segundo o Prof. Simão, somando as virtudes e os defeitos, foi o melhor aluno que passou pelas suas mãos nos últimos tempos, e Gerardo Schneider, o verdadeiro gaúcho de três bandeiras. Júlio ajudou na revisão e formatação do texto e Gerardo na revisão ortográfica das estrofes de Martín Fierro.

Porto Alegre, 20 de setembro 2003.

Rômulo Silva de Oliveira
Alexandre da Silva Carissimi
Simão Sirineo Toscani