A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

09/03/10 20:13 Claudio de Oliveira – 1/21.

Apresentações semelhantes


Apresentação em tema: "09/03/10 20:13 Claudio de Oliveira – 1/21."— Transcrição da apresentação:

1 09/03/10 20:13 Claudio de Oliveira – 1/21

2 09/03/10 20:13 Claudio de Oliveira – Definições Década de 60, surgimento de sistemas multiprogramáveis. Aplicações compartilhando recursos do sistema, como arquivos, registros, dispositivos de E/S e áreas de memória. Soluções para sincronização de processos. Comando para implementação e concorrência ( FORK - JOIN, PARBEGIN – PAREND)

3 09/03/10 20:13 Claudio de Oliveira – Ilustração dado Processo gravador Processo Leitor Buffer Gravação Leitura

4 09/03/10 20:13 Claudio de Oliveira – 4/21 Solução para sincronização de processos Princípio da Exclusão Mútua com Espera Ocupada (busy waiting): 1 – Inibição das Interrupções: 2 – Variáveis de Travamento ou Impedimentos (lock variables): 3 – Estrita Alternada (Alternância Obrigatória): 4 – Algoritmo de Dekker: 5 – Algoritmo de Dijkstra (pronúncia: déikstra): 6 – Solução de Peterson Princípio da Exclusão Mútua com Espera Bloqueada (blocked waiting): 1 – Uso das Primitivas SLEEP/WAKEUP: 2 – Semáforos 3 – Contadores de Eventos 4 – Monitores 5 – Troca de Mensagens

5 09/03/10 20:13 Claudio de Oliveira – Principais soluções de sincronização Semáforos Proposto por Dijkstra em Utiliza as instruções Down e UP, incremento e decremento a variável. Semáforos binários e semáforos contadores. Monitores Proposto por Brinch Hansen em A maioria das linguagens de programação disponibiliza rotinas para uso de semáforos e monitores.

6 09/03/10 20:13 Claudio de Oliveira – 6/21 Equivalência Entre os Algoritmos Além dos algoritmos apresentados, muitos outros modelos já foram propostos para a implementação da exclusão mútua, como por exemplo, os Seqüenciadores (Reed e Kanodia – 1979), as Expressões de Caminho (Campbel e Habermann – 1974), Serializadores (Atkinson e Hewitt ), etc., porém, vale observar que muitos desses algoritmos são semanticamente equivalentes, pelo menos quando usamos um único processador, ou seja, com a utilização de qualquer um deles é possível construir todos os demais: Semáforos, Contadores de Eventos, Monitores e Troca de Mensagens.

7 09/03/10 20:13 Claudio de Oliveira – Compiladores Um compilador é um programa de computador que, a partir de um código fonte escrito em uma linguagem compilada, cria um programa semanticamente equivalente, porém escrito em outra linguagem, código objeto. O nome "compilador" é usado principalmente para os programas que traduzem o código de fonte de uma linguagem de programação de alto nível para uma linguagem de programação de baixo nível. Existem centenas de compiladores, alguns específicos para determinadas linguagens.

8 09/03/10 20:13 Claudio de Oliveira – Compiladores C para Linux Eclipse Anjuta Gcc/G++ Compilador C para Windows Turbo C Instalando o gcc/g++ no Ubuntu Via Synaptic Via comando

9 09/03/10 20:13 Claudio de Oliveira – Instalando/Utilizando o gcc/g++ sudo apt-get install gcc-4.2 g Aplicações->Adicionar/Remover para abrir o Synaptic. Ao abrir a janela clique em Avançado. Na janela que abrir clique em Desenvolvimento na lista à sua esquerda. Procure por gcc e g++ na lista que aparecer à sua direita (selecione todos os que possuirem como descrição GNU C/C++ compiler). Agora clique em aplicar.

10 09/03/10 20:13 Claudio de Oliveira – Utilizando o GCC Abrir o terminal. Copiar o código fonte em um editor de textos como o gedit e salvar como teste.c: #include int main() { printf("Isso é um teste\n"); return 0; }

11 09/03/10 20:13 Claudio de Oliveira – Navegue até a pasta GCC e execute o arquivo teste.c Quando estiver na pasta desejada, digite: gcc teste.c Isso gerará um arquivo a.out na pasta atual. Se nenhuma mensagem de erro apareceu o seu compilador está instalado corretamente Para abrir o programa digite./a.out Deverá aparecer: Isso é um teste

12 09/03/10 20:13 Claudio de Oliveira – Comandos Básicos C #include main() {int x, y, z; scanf("%d %d", &x, &y); z = x + y; printf("%d", z); }

13 09/03/10 20:13 Claudio de Oliveira – Nomeando o arquivo compilado Se você quiser dar um nome ao programa como teste.bin ou teste.exe, digite: gcc -o teste.bin teste.c

14 09/03/10 20:13 Claudio de Oliveira – Compilando outros programas Compile e teste as soluções para os problemas em C. -Jantar dos Filósofos -Barbeiros -Leitores e Consumidores Exemplo: gcc [[nome_programa.c]] -o [[nome_programa]] - lpthread gcc filos.c –o filos.bin -lpthread


Carregar ppt "09/03/10 20:13 Claudio de Oliveira – 1/21."

Apresentações semelhantes


Anúncios Google