You are on page 1of 12

WEB AULA 1 Entendendo as Aplicaes Concorrentes

Vamos assistir um vdeo!

A multiprogramao um conceito importante para agilizar o andamento dos processos, mas, ao mesmo tempo, ela exige um maior controle dos programas em execuo. Para esse controle, uma das tcnicas utilizadas o desenvolvimento das aplicaes concorrentes. O principal objetivo da aplicao concorrente gerenciar a execuo dos processos de um ou mais programas em execuo. Essa execuo concorrente pode ocorrer utilizando um processador ou vrios processadores (processamento paralelo). Para possibilitar a execuo de processos concorrentes necessrio que haja o gerenciamento da sincronizao das tarefas. Isso acontece porque, na realidade, as tarefas no so executadas ao mesmo tempo. Existe a concorrncia por uma determinada execuo.

Vamos ao exemplo: Existem dois processos concorrentes A e B, B l as informaes gravadas por A em uma varivel de memria. O processo B somente poder ler essas informaes depois que A as tiver gravado.

Por isso, como o processo A somente poder gravar novas informaes depois que o processo B tiver lido as informaes anteriores, existir a necessidade da sincronizao de suas operaes.

Mas, como trabalhar com a sincronizao? Uma maneira para especificar as partes de um programa que devem ser executadas ao mesmo tempo, atravs dos comandos FORK e JOIN. O comando FORK inicia a execuo de outro processo concorrentemente e o comando JOIN determina o ponto onde deve haver uma sincronizao. Para entender melhor, vamos ao exemplo de FORK e JOIN:

Explicando o exemplo de FORK e JOIN: O programa A executado at encontrar o comando FORK; Nesse ponto criado o processo B, que ir executar ao mesmo tempo (os comandos Comando1, Comando2, ComandoN do processo

A sero executados ao mesmo tempo que os comandos do processo B); Os comandos do processo A aps o JOIN B somente sero executados aps o trmino do processo B. No compartilhamento dos recursos utilizado como exemplo, as variveis de memria, ou arquivos de dados, alguns aspectos importantes devem ser verificados durante a concorrncia, visto que na implementao da sincronizao dos processos podem ocorrer alguns problemas na execuo de tarefas. Mas, quais so as recomendaes para prevenir possveis erros? Agora, seguiremos com a identificao de algumas rotinas para resoluo desses casos! Excluso Mtua O objetivo da excluso mtua que, se um processo estiver acessando um determinado recurso, todos os outros devero esperar para utiliz-lo. A parte do cdigo do programa em que um recurso deve ser bloqueado para outros acessos chamada de regio crtica. Quando um processo est executando a sua regio crtica, os outros processos no podero acessar o mesmo recurso.

Se o recurso estiver livre, o processo deve bloque-lo para evitar a sua utilizao simultnea. Se o recurso j estiver bloqueado, o processo entra numa fila e aguarda at que o recurso seja liberado. O grande problema no controle da excluso mtua a possibilidade de um processo jamais conseguir acesso a um recurso. Isso chamado de starvation, quando um processo fica em espera o tempo todo. Isso ocorre porque os algoritmos de escalonamento, que veremos nas sees a seguir, podem nunca escalonar um determinado processo. Mas, nessa situao, podemos encontrar algumas solues! Solues de Hardware Desabilitao de interrupes: Quando um processo est em execuo, ele somente ser substitudo por outro no momento em que o sistema gerar uma interrupo. Se o processo em execuo vai entrar na sua regio crtica, e no quer que nenhum outro processo execute ao mesmo tempo, ele pode desabilitar as interrupes e, assim, somente ele permanecer no controle do processador e dos recursos do sistema. Por meio da instruo test-and-set. Essa instruo permite salvar o contedo de uma varivel e alterar o seu valor. A vantagem dessa instruo que ela executada sem interrupo e, portanto, enquanto estiver sendo alterada, nenhum outro processo poder acess-la. Solues de Software Algoritmos Os algoritmos para as solues em software se baseiam na criao de um protocolo de entrada e de um protocolo de sada da regio crtica, o que prov o bloqueio do acesso a um recurso. Semforos

Um semforo uma varivel inteira, no negativa, que s pode ser manipulada por duas instrues: DOWN e UP. Essas instrues so indivisveis, ou seja, a sua execuo ocorre sem interrupes. A instruo UP incrementa o semforo em uma unidade, e a instruo DOWN o decrementa em uma unidade. Como, por definio, um semforo no pode ser negativo, a tentativa de realizar um DOWN em um semforo zerado coloca o processo em estado de espera. Quando um processo vai entrar na sua regio crtica, ele executa um DOWN no semforo correspondente ao recurso que deseja bloquear. Se o semforo estiver com zero, significa que o recurso j est bloqueado por outro processo e o processo que tentou fazer o DOWN entra em espera. Quando o processo sai da sua regio crtica, ele d um UP no semforo, fazendo-o ir para o valor 1. O uso de semforos exige, do desenvolvedor, bastante cuidado, pois qualquer engano pode levar a problemas imprevisveis. Monitores Monitores so mecanismos de sincronizao de alto nvel que tornam mais simples o desenvolvimento de aplicaes concorrentes.

Eles so implementados pelo compilador, facilitando, assim, a sua utilizao. Troca de Mensagens A troca de mensagens um mecanismo de comunicao e sincronizao de processos, viabilizado pelo sistema operacional atravs do seu subsistema de mensagens e que pode ser implementada atravs da comunicao direta ou indireta.

Comunicao Direta A mensagem deve enderear, explicitamente, o processo transmissor e o processo receptor. Dessa forma, a comunicao acontece somente entre dois processos. Um dos problemas que, se um processo mudar de nome, a mensagem deve ser igualmente alterada e, portanto, o cdigo do programa ter que ser recompilado. Comunicao Indireta

Os processos utilizam uma rea comum, chamada de mailbox ou port. O processo transmissor coloca mensagens no mailbox e o processo receptor se encarrega de retir-las. Independente do tipo de comunicao utilizada, os processos que esto fazendo a troca das mensagens devem estar sincronizados para evitar que um processo tente ler uma mensagem que ainda no foi enviada, ou, que o processo transmissor envie outra mensagem antes que o receptor tenha lido a mensagem anterior. Deadlock O contexto de deadlock est relacionado ao seguinte problema: um processo aguarda por um recurso que nunca estar disponvel ou um evento que no ocorrer.

Na preveno da ocorrncia de deadlocks, so utilizadas algumas tcnicas: No implementar a excluso mtua: essa soluo cria outros problemas, como j discutimos anteriormente.

No permitir que processos que j possuem um recurso garantido requisitem outros recursos. Para implementar isso, pode-se realocar todos os recursos necessrios a um processo antes que ele seja iniciado. Assim, se algum recurso j estiver bloqueado, esse processo ir aguardar para iniciar sua execuo. Essa soluo tem dois problemas: O primeiro saber de antemo todos os recursos que o processo ir necessitar; O segundo que o processo pode sofrer starvation caso os recursos necessrios sua execuo nunca estejam disponveis ao mesmo tempo. Forar o processo a ter apenas um recurso de cada vez. Forar a liberao de um recurso j alocado a um processo no caso de outro processo necessitar do mesmo recurso. Todas essas solues levam a outros problemas e limitaes que podem comprometer o funcionamento de todo o sistema. O sistema operacional deve, portanto, implementar mtodos para a deteco e correo de deadlocks

WEB AULA 2 Escalonamento


Ateno Para gerenciar o compartilhamento dos diversos processos e/ou threads em execuo, necessrio implementar um algoritmo para a escolha de qual processo ir deter o controle do processador. Essa implementao tem a ver com o escalonamento (scheduling) de um processo, que responsvel por selecionar (escalonar) qual o prximo processo na fila de prontos ir ganhar o controle de um determinado recurso do processador.

Escalonamento Preemptivo No escalonamento preemptivo, o sistema pode interromper um processo em execuo para que outro processo utilize o processador. Escalonamento Circular (Round-Robin) O escalonamento circular foi projetado especialmente para os sistemas de tempo compartilhado. Seu funcionamento bastante semelhante ao FIFO, porm, sendo um escalonamento preemptivo, o processo que est em execuo pode ser interrompido. Nos sistemas de tempo compartilhado, cada processo ganha uma fatia de tempo do processador. Quando essa fatia de tempo (time slice ou quantum) se encerra, o processo em execuo interrompido e passa para o estado de pronto, entrando no final da fila. Esse mecanismo definido como preempo por tempo. Dessa forma, nenhum processo poder monopolizar o processador, sendo que cada processo pode utilizar o processador somente durante o seu quantum, que definido pelo sistema.

Escalonamento por Prioridade Nesse escalonamento, uma prioridade associada a cada processo e a UCP alocada para o processo com maior prioridade. Quando dois processos da fila tm a mesma prioridade, eles so escalonados para execuo em ordem FIFO. Como est caminhando o estudo? Escalonamento por Mltiplas Filas O algoritmo de escalonamento por mltiplas filas divide a fila de pronto em vrias filas, uma para cada tipo de processo. Os processos so designados a uma fila, em geral com base em alguma propriedade do processo, tal como tamanho da memria, prioridade do processo ou tipo do processo. Cada fila tem seu prprio algoritmo de escalonamento, ou seja, uma fila pode ser circular, outra por prioridade e assim por diante. Para o escalonamento entre as filas, geralmente se utiliza a preempo por prioridade esttica, ou seja, as filas possuem prioridade e o sistema atender a fila de maior prioridade at que ela se esgote. Escalonamento por Mltiplas Filas com Realimentao Esse escalonamento funciona de maneira semelhante ao escalonamento por mltiplas filas, com a diferena de que, quando um processo sai do estado de execuo, ele poder entrar em outra fila de pronto, ou seja, os processos se movimentam de uma fila para outra. Assim, se um processo utilizar muito o processador, ele ser movido para uma fila com prioridade mais baixa, da mesma forma que um processo que fica muito tempo em espera pode passar para uma fila com prioridade mais alta.

Dessa forma se evita a starvation. Escalonamento com Multiprocessadores

No escalonamento com multiprocessadores (mais de um processador), para selecionar a tcnica mais apropriada, deve-se levar em considerao a homogeneidade do sistema: Se os processadores possuem a mesma capacidade e funo, ento os processos podem ser escalonados para qualquer processador. E cada processador deve implementar seu escalonamento em separado. Se o sistema for heterogneo, determinados processos somente podero ser executados em processadores especficos. Para aproveitar a possibilidade de compartilhamento de carga, utiliza-se uma fila de pronto comum a todos os processadores. Assim, todos os processos entram em uma fila e so escalonados para qualquer processador disponvel. O problema desse tipo de escalonamento que tem que haver um controle para que um processo no seja escalonado para mais de um processador ao mesmo tempo, e esse controle pode ser resolvido selecionando um processador para fazer o controle dos escalonamentos. Escalonamento de Sistemas de Tempo Real Todo processamento desse tipo deve ser realizado dentro de limites rgidos de tempo. Nesses sistemas, no existe compartilhamento de tempo e o escalonamento realizado somente com base em prioridades. A cada processo atribuda uma prioridade esttica de acordo com sua importncia. Quando um processo de maior prioridade chega fila de pronto ele imediatamente escalonado para execuo. Escalonamento No Preemptivo No escalonamento no preemptivo, o processo que est em execuo permanecer assim at que no precise mais do processador. Escalonamento FIFO (First-In-First-Out) Nesse escalonamento implementada uma fila simples, onde o primeiro processo ao entrar na fila de pronto ser o primeiro a receber o controle do processador.

Seu algoritmo implementado da seguinte passam para o estado de pronto entram escalonados quando chegarem ao seu preemptivo, quando um processo ganha o ele o utilizar sem ser interrompido.

forma: os processos que no final da fila e sero incio. E, por ser no controle do processador,

O problema com esse tipo que, quando um processo utiliza muito o processador, ir demorar demais para liber-lo. Escalonamento SJF (Shortest-Job-First) Esse tipo de algoritmo associa a cada processo o seu tempo de execuo. Assim, os processos mais rpidos so escalonados primeiro. Na verdade, na hora do escalonamento o sistema escolhe o processo que ter o menor bloco de utilizao do processador. O problema em relao a esse algoritmo determinar exatamente quanto tempo do processador cada processo ir necessitar. Fiquem de olho! O aprendizado tambm depende de vocs!

Parabns, voc chegou ao fim de mais uma etapa do nosso estudo!

You might also like