Programação Concorrente
Monografias: Programação Concorrente. Pesquise 861.000+ trabalhos acadêmicosPor: rcelsantos • 11/1/2015 • 1.338 Palavras (6 Páginas) • 937 Visualizações
Respostas
Problema 1: Quais as principais razões (motivações) para se usar programação concorrente?
Melhorar o desempenho das aplicações seriais, aproveitar hardware com múltiplos processadores, atender a vários usuários simultaneamente, aumentar a disponibilidade de serviço para o usuário, implementar programas paralelos complexos.
Problema 2: Quais os benefícios que programas concorrentes oferecem sobre programas seqüenciais?
Programas concorrentes são mais eficientes, pois executam processos concorrentemente.
Problema 3: Quais são os estados de um processo? Explique cada um deles.
Executável, pronto para executar; Executando, rodando(usando CPU); Bloqueado, esperando informações para continuar; Suspenso, escalonado para outro processo.
Problema 4: Quais as diferenças entre um processo e um thread?
Os threads são mais leves de serem criadas, a troca de contexto é mais suave e facilita o compartilhamento de memória. Threads são partes do processo.
Problema 5: Quais as principais propriedades de programação concorrente?
Segurança (Safety): o programa nunca entra em um estado errado; Vivacidade(liveness): em algum momento o programa vai para outro estado; Correção parcial: se o programa terminar, o resultado está correto. Término: o programa termina; Ausência de deadlock: nunca todos os processos estarão bloqueados; Correção total: o programa sempre termina e produz o resultado correto.
Problema 6: Comente a relação entre as propriedades de segurança (security) e vivacidade (liveness) em um sistema concorrente.
Melhor a segurança implica em reduzir a vivacidade e vice versa. Para a segurança é melhor não receber uma informação errada, para a vivacidade é melhor uma informação imprecisa do que nada.
Problema 7: Como você pode verificar manualmente uma propriedade de segurança?
Existem 3 estratégias: imutabilidade: evitar mudanças de estado(statless), sincronização e contenção: garantir acesso exclusivo dinamicamente e estruturalmente.
Problema 8: Quais são as principais falhas de vivacidade? Explique
Contenção: starvation, não executa pq outro thread tomou recurso; Dormência: um thread não pronto falha ao tentar passar para esse estado; Deadlock:thread tentam acessar travas sincronizadas necessárias para continuar seu processamento sem sucesso; Termino prematuro: um thread é parado ou encerrado prematuramente.
Problema 9: Cite cinco serviços oferecidos por um Sistema Operacional.
Gerenciamento de processos, da memória principal, dos sistemas de i/o, sistema de segurança e implementação de sistema de arquivos.
Problema 10: O que são System Calls? Cite alguns exemplos.
São uma interface entre o processo e o sistema operacional. Inicia ou finaliza processo, altera atributos dos processos, sinalização de concorrência, abre ou fecha arquivo, lê relógio do sistema
Problema 11: Descreva as principais arquiteturas de sistemas operacionais.
Nucleo monolítico ou monobloco: o núcleo consiste em um único processo executando numa memória protegida executando as principais funções. Micronucleo ou modelo cliente servidor o núcleo consiste de funções mínimas são executadas no espaço do usuário como serviços, os programas são clientes.
Problema 12: Quais são as ações tomadas pelo kernel do sistema operacional para realizar a troca de contexto entre processos?
Quando CPU troca processo em execução por outro, SO deve salvar o estado (contexto de execução) do processo anterior e carregar nos registradores da máquina o estado (guardado) do próximo processo.
Problema 13: Explique a solução de Peterson.
A solução de Peterson diz que antes do processo entrar em sua região crítica ele chama uma função identificando-se como processo que deseja estar na região crítica. Se estiver liberado, ele entra! Caso contrario, aguarda que outra função permita sua entrada lá.
Problema 14: O que são Semáforos? Mostre um exemplo de acesso a região critica usando semáforo.
Um semáforo é uma variável de sincronização que pode ter valores inteiros não-negativos com duas operações definidas. Uma operação que espera o semáforo ficar positivo e a seguir decrementa-o de 1 e uma operação que incrementa o semáforo de 1.
Problema 15: Mostre uma solução de produtor-consumidor com buffer limitado usando semáforo.
Problema 16: Quais os principais algoritmos de escalonamento? Explique cada um deles. Quais poderão causar 'starvation'?
Problema 17: Qual é a diferença entre simultaneidade e paralelismo?
Um programa simultâneo tem múltiplos fluxos (threads) de controle. Estes fluxos podem ser executados como processos paralelos.
Problema 18: Quais as formas de se implementar o paralelismo de processos? Explique.
Problema 19: Quais as maneiras que processos concorrentes podem se comunicar e sincronizar?
Problema 20: Quais são as três técnicas de sincronização? Explique e dê um exemplo.
Problema 21: Para que serve a Espera Ocupada? Explique seu funcionamento. Exemplifique um exemplo de uso?
Problema 22: Para que serve o semáforo? Explique o seu funcionamento. Qual as vantagens do semáforo comparado com espera ocupada ?
Problema 23: Para que serve o monitor? Explique o seu funcionamento.
Problema 24: Como você pode implementar um semáforo com monitores?
Problema 25: Como você implementa monitores usando semáforos?
Problema 26: Explique as formas de passar mensagem síncrona e assíncrona.
CAP 06
Problema 37: Que tipos de problemas de vivacidade
...