1 / 17

Multiprocessamento

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.

hasad
Download Presentation

Multiprocessamento

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multiprocessamento Sérgio Cavalcante GRECO - CIn / UFPE

  2. 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. • THREADS: tarefas de um mesmo programa.

  3. Multitasking: Processos • Área de memória isolada dos outros processos contendo segmentos de: • código executável • pilha - variáveis locais e/ou temporárias • dados - variáveis globais • heap - espaço para alocação dinâmica • status - recursos alocados, localização dos segmentos, contexto de execução...

  4. Multitasking: Threads • Cada 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 facilidade de sincronização - menos proteção

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

  6. Multitasking: Processos X Threads • Tipos de sistemas • 1 processo X 1 thread: MSDOS • N processos X 1 thread: OS/386, VAX/VMS, Windows 3.1, UNIX antigo • 1 processo X N threads: kernels para sist. embarc. • N processos X N threads: Windows 95/98,NT, UNIX

  7. 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 sistema Exemplo: • PDA: calendário, email, spreadsheet • Sistema de Gerenciamento Industrial • Programas para comunicação/controle da fábrica • Spreadsheet para apresentação de resultados • Banco de dados para depto de pessoal e almoxarifado

  8. Multithreading: Quando usar ? • Várias atividades de um mesmo programa precisam ser executadas simultaneamente, principalmente em velocidades diferentes • Controle de recursos diferentes • Tratamento de diversas entradas / saídas de dados e sinais

  9. Multithreading: Como dividir em threads ? • Identifique atividades que precisam ou são melhor executadas em paralelo • Candidatos naturais: • Usar uma thread para cada tipo de I/O: Teclado, display, sensores, atuadores • Atividades independentes • Exemplo: Impressora conectada na rede • 1 thread para receber jobs • 1 thread para processar PostScript • 1 thread para controlar o hardware de impressão

  10. Multithreading: Escalonamento • Estados:running, ready, suspended • Escalonamento CooperativoTarefas cooperam no uso do processador, liberando-o por conta própria. • Escalonamento PreemptivoInterferência do S.O. para recuperar o uso do processador.

  11. Tar. B Contexto Tar. C Contexto Tar. A Contexto Tar. A Contexto Tar. A Contexto Escalonamento de Threads: Round-Robin CPU:Running

  12. Escalonamento de Threads: Round-Robin • O exemplo dado é independente do escalonador ser cooperativo ou preemptivo, e das tarefas terem ou não prioridade.

  13. Escalonamento Cooperativo de Threads: Round-Robin com MEFs • Cada thread é implementada como uma Máquina de Estados Finitos • Caso 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.

  14. 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] Tarefa A() { static charestadoA = 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 charestadoB = 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] }

  15. Round-Robin com MEFs:Abordagem Síncrona • Todas as MEFs são tratadas ANTES que novas entradas sejam verificadas. • Chamados de Sistemas Reativos Síncronos • Linguagem para espeficicação: Esterel

  16. Round-Robin com MEFs:Como particionar as threads ? São consideradas mudanças de estado: • Alterações em sinais de entrada • Recepção de dados • Término de tempos de espera

  17. 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 dados • Gerenciar o timer para controlar tempos de espera e contadores • Não devem ser sobrecarregadas de ações que podem e devem ser tratadas nas threads. • Eventos são tratados nas interrupções • Ações são tratadas nos estados das MEFs

More Related