multiprocessamento

17
Multiprocessamento Sérgio Cavalcante GRECO - CIn CIn / UFPE

Upload: hasad

Post on 16-Jan-2016

25 views

Category:

Documents


0 download

DESCRIPTION

Multiprocessamento. Sérgio Cavalcante GRECO - CIn / UFPE. Multitasking. Capacidade de executar mais de uma tarefa ( task ) “simultaneamente” TAREFAS: atividades de software executadas independentemente de outras. Podem ser: PROCESSOS: programas que executam em paralelo. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Multiprocessamento

Multiprocessamento

Sérgio CavalcanteGRECO - CInCIn / UFPE

Page 2: Multiprocessamento

MultitaskingCapacidade de executar mais de uma tarefa (task) “simultaneamente”TAREFAS: atividades de software executadas

independentemente de outras.Podem ser:

PROCESSOS: programas que executam emparalelo.

THREADS: tarefas de um mesmo programa.

Page 3: Multiprocessamento

Multitasking:

ProcessosÁrea de memória isolada dos outros processos contendo segmentos de:

código executávelpilha - variáveis locais e/ou temporáriasdados - variáveis globaisheap - espaço para alocação dinâmicastatus - recursos alocados, localização dos

segmentos, contexto de execução...

Page 4: Multiprocessamento

Multitasking:

ThreadsCada thread tem sua própria pilha e contexto de execução.Todas as threads de um processo compartilham os mesmos segmentos de código, dados, heap, e parte do status. - maior compartilhamento de recursos- maior compartilhamento de recursos

- maior facilidade de sincronização- maior facilidade de sincronização- menos proteção- menos proteção

Page 5: Multiprocessamento

Multitasking:

Sincronização de ThreadsFunções que acessam apenas variáveis locais não estáticas podem ser chamadas de várias threads simultaneamente desde que sejam declaradas como reentrantFunções que usem variáveis globais ou estáticas têm, em geral, seu acesso restrito.

Page 6: Multiprocessamento

Multitasking:

Processos X ThreadsTipos de sistemas

1 processo X 1 thread: MSDOSN processos X 1 thread: OS/386, VAX/VMS, Windows 3.1, UNIX antigo1 processo X N threads: kernels para sist. embarc.N processos X N threads: Windows 95/98,NT, UNIX

Page 7: Multiprocessamento

Multiprocessamento:

Quando usar ?Tarefas diversas que necessitam de pouca ou nenhuma interação.Tarefas que necessitam de proteção.Capacidade de modificação dinâmica do sistemaExemplo:

PDA: calendário, email, spreadsheetSistema de Gerenciamento Industrial

Programas para comunicação/controle da fábricaSpreadsheet para apresentação de resultadosBanco de dados para depto de pessoal e almoxarifado

Page 8: Multiprocessamento

Multithreading:

Quando usar ?Várias atividades de um mesmo programa precisam ser executadas simultaneamente, principalmente em velocidades diferentes

Controle de recursos diferentesTratamento de diversas entradas / saídas de dados e sinais

Page 9: Multiprocessamento

Multithreading:

Como dividir em threads ?Identifique atividades que precisam ou são melhor executadas em paraleloCandidatos naturais:

Usar uma thread para cada tipo de I/O:Teclado, display, sensores, atuadores

Atividades independentesExemplo: Impressora conectada na rede

1 thread para receber jobs1 thread para processar PostScript1 thread para controlar o hardware de impressão

Page 10: Multiprocessamento

Multithreading:

EscalonamentoEstados: running, ready, suspendedEscalonamento CooperativoTarefas cooperam no uso do processador, liberando-o por conta própria.

Escalonamento PreemptivoInterferência do S.O. para recuperar o uso do processador.

Page 11: Multiprocessamento

Escalonamento de Threads:

Round-Robin

Tar. BContextoTar. BContexto

Tar. CContextoTar. CContexto

CPU:RunningCPU:Running

Tar. AContextoTar. AContexto

Tar. AContextoTar. AContexto

Tar. AContexto

Page 12: Multiprocessamento

Escalonamento de Threads:

Round-RobinO exemplo dado é independente do escalonador ser cooperativo ou preemptivo, e das tarefas terem ou não prioridade.

Page 13: Multiprocessamento

Escalonamento Cooperativo de Threads:

Round-Robin com MEFsCada thread é implementada como uma Máquina de Estados FinitosCaso não haja mudança de estado, a MEF libera o processador.Caso haja mudança de estado, a MEF executa a ação correspondente e libera o processador.

Page 14: Multiprocessamento

Round-Robin com MEFs:

Como implementar ?main(){[inicialização de variáveis, dispositivos,

etc.]while (1)

{TarefaA();TarefaB();}

}

[Rotinas de tratamento de interrupção][Outras funções auxiliares]

main(){[inicialização de variáveis, dispositivos,

etc.]while (1)

{TarefaA();TarefaB();}

}

[Rotinas de tratamento de interrupção][Outras funções auxiliares]

Tarefa A(){static char estadoA = estA0;[Ações comuns a todos os

estados]switch(EstadoA)

{case(estA0): ação0; break;case(estA1): ação1; break;case(estA2): ação2; break;}

[Ações comuns a todos os estados]

}

Tarefa A(){static char estadoA = estA0;[Ações comuns a todos os

estados]switch(EstadoA)

{case(estA0): ação0; break;case(estA1): ação1; break;case(estA2): ação2; break;}

[Ações comuns a todos os estados]

}

Tarefa B(){static char estadoB = estB0;[Ações comuns a todos os

estados]switch(estadoB)

{case(estB0): ação0; break;case(estB1): ação1; break;case(estB2): ação2; break;}

[Ações comuns a todos os estados]

}

Tarefa B(){static char estadoB = estB0;[Ações comuns a todos os

estados]switch(estadoB)

{case(estB0): ação0; break;case(estB1): ação1; break;case(estB2): ação2; break;}

[Ações comuns a todos os estados]

}

Page 15: Multiprocessamento

Round-Robin com MEFs:

Abordagem SíncronaTodas as MEFs são tratadas ANTES que novas entradas sejam verificadas.Chamados de Sistemas Reativos SíncronosLinguagem para espeficicação: Esterel

Page 16: Multiprocessamento

Round-Robin com MEFs:

Como particionar as threads ?São consideradas mudanças de

estado:Alterações em sinais de entradaRecepção de dadosTérmino de tempos de espera

Page 17: Multiprocessamento

Round-Robin com MEFs:

Como usar as interrupções ?As interrupções devem ser usadas para:

Tratar rapidamente e guardar informações sobre alterações em sinais de entrada e/ou recepção de dadosGerenciar o timer para controlar tempos de espera e contadoresNão devemNão devem ser sobrecarregadas de ações ser sobrecarregadas de ações que que podem e devempodem e devem ser tratadas nas ser tratadas nas threads.threads.Eventos são tratados nas interrupçõesAções são tratadas nos estados das MEFs