270 likes | 464 Views
Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread. ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO). 6 – Thread. Ambiente Monothread
E N D
Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementadopor Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO)
6 – Thread • Ambiente Monothread • Concorrência implementada apenas com o uso de processos independentes e subprocessos • Permite dividir uma aplicação em partes que podem trabalhar de forma concorrente • Problemas: • Consumo maior de recursos do sistema • Espaço de endereçamento não é compartilhado • Comunicação entre processos mais difícil e lenta • Compartilhamento de recursos é mais complicado (ex: arquivos abertos) ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/1
6 – Thread • Ambiente Monothread ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/1
6 – Thread • Ambiente Monothread • Processos monothread possuem, cada um, seu próprio contexto de hardware, de software e espaço de endereçamento • Exemplos de SO’s monothread: • MS-DOS, primeiras versões do MS-Windows • Primeiros sistemas UNIX ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/2
6 – Thread • Ambiente Multithread ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/3
6 – Thread • Ambiente Multithread • Programas são associados a threads, não a procesos • Cada programa tem pelo menos uma thread de execução • Pode compartilhar espaço de endereçamento com outras threads criadas pelo programa • Thread corresponde a uma sub-rotina que pode ser executada de forma assíncrona (paralela) das demais • Sub-rotinas concorrentes dentro de um mesmo processo • Threads criadas dinamicamente, sob demanda ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/3
6 – Thread • Aplicação Multithread ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Aplicação Multithread • Minimiza a alocação de recursos do sistema • Mais rápidos p/ criação, término e troca de contexto • Compartilham processador da mesma forma que processos independentes • Mudança de estados entre wait, ready e running • Cada thread com contexto próprio de hardware • Threads de um mesmo processo compartilham contexto de software e espaço de endereçamento (comunicação mais rápida e eficiente) • Implementadas por estrutura chamada Thread Control Block (TCB) ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Aplicação Multithread • TCB armazena contexto de hardware e informações exclusivas da thread (prioridade, estado) • Unidade de alocação de recursos é o processo • Threads criadas compartilham recursos do processo • Unidade de escalonamento é a thread • SO não escalona o processo para execução, mas sim uma de suas threads • Compartilhamento de espaço de endereçamento inibe mecanismos de proteção no acesso a este espaço (aplicação deve cuidar disto) ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Aplicação Multithread • Threads de um mesmo processo pode facilmente compartilhar recursos como descritores de arquivos, sinais, temporizadores, etc • Uso de periféricos pode ser realizado de forma concorrente entre as threads • Melhora desempenho de algumas aplicações onde tarefas podem ser executadas em background durantes operações de E/S • Exs: editores de texto, planilhas, aplicações gráficas, processamento de imagens ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Aplicação Multithread • Thread principal solicita operações de E/S • Threads específicas p/ executar as operações de E/S ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/5
6 – Thread • Aplicação Multithread • Essenciais para arquiteturas cliente-servidor • Thread no cliente p/ solicitar e aguardar o serviço enquanto thread principal continua executando em background • Evita que processo cliente pare aguardando serviço pedido • Processo servidor dispara threads para atender cada solicitação que chega de maneira simultânea • Evita que uma solicitação precise aguardar o término do atendimento das solicitações anteriores • Úteis para núcleo de arquiteturas microkernel ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Aplicação Multithread ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/6
6 – Thread • Arquitetura e Implementação • Sistemas Operacionais disponibilizam pacotes de threads para serem usados pelas aplicações • Abordagem usada no pacote influenciará o desempenho, a concorrência e a modularidade das aplicações multithread • Podem ser oferecidas de quatro formas: • Biblioteca de rotinas em modo usuário (fora do núcleo do SO) • Rotinas em modo kernel (do núcleo do SO) • Modo híbrido (modos kernel + usuário) • Modelo de Scheduler Activations ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Arquitetura e Implementação • Ex. de SO’s de acordo com a arquitetura de thread: • Modo usuário • Open VMS versão 6 • Modo kernel • Windows 2000, Open VMS versão 7, Compaq UNIX • Modo híbrido • Sun Solaris versão 2 • Modelo de Scheduler Activations • FastThreads (University of Washington) ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Threads em Modo Usuário • Threads em modo usuário (TMU) são implementadas pela aplicação, e não pelo SO, através de uma biblioteca de rotinas • Criação, eliminação, troca de mensagens, política de escalonamento • SO não gerencia nem sincroniza as múltiplas thread, é responsabilidade da aplicação • Vantagem é poder implementar aplicações multithreads em SO’s que não suportam threads • TMU’s são mais rápidas por dispensarem acessos ao kernel do SO, porém mais limitadas ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Threads em Modo Usuário • SO gerencia TMU’s como se fosse uma única thread • Caso uma thread entre em estado de espera, todo o processo fica em estado espera • Biblioteca deve possuir rotinas que substituam as rotinas bloqueantes por outras não-bloqueantes • Sinais são enviados para o processo, não para a thread • Processo deve reconhecer os sinais e encaminhá-los para as threads de direito • O mesmo para interrupções de clock objetivando time-sharing ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Threads em Modo Usuário • Caso hajam múltiplos processadores, TMU’s não poderão rodar nos diferentes processadores • Como o SO só enxerga o processo, todas as TMU’s rodarão no mesmo processador • Limitação extrema para o paralelismo da aplicação ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Threads em Modo Kernel • Threads em modo kernel (TMK) são implementadas diretamente pelo núcleo do SO através de system calls que fazem o gerenciamento e a sincronização • SO escalona as threads individualmente • Utiliza capacidade de múltiplos processadores • Baixo desempenho devido às mudanças de modo de acesso usuário-kernel-usuário (10 a 30x, +/-) ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Threads em Modo Híbrido • Threads em modo híbrido (TMH) combinam vantagens das TMU’s e das TMK’s • Processo pode ter várias TMK’s e as TMK’s podem ter várias TMU’s • TMK’s escalonadas individualmente pelo SO • Uma TMU pode ser executada por qualquer TMK • Apesar da flexibilidade, apresenta desvantagens • Quando TMK faz uma operação bloquante, todas as TMU’s associadas à TMK ficam bloqueadas • TMU’s que precisem rodar em diferentes processadores precisam estar em TMK’s distintas ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Threads em Modo Híbrido ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Threads no Modelo Scheduler Activations • Problemas das TMH’s em muito se devem à falta de comunicação entre TMU’s e TMK’s • O ideal é combinar o que há de melhor nas TMU’s e nas TMK’s sem precisar repetir os modelos • Modelo de scheduler activations • Introduzido na década de 1990 na Universidade de Washington • Núcleo do SO troca informações com biblioteca de threads através de estrutura chamada scheduler activations • Evita mudanças desnecessárias de modos de acesso ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Threads no Modelo Scheduler Activations • Caso uma thread faça uma chamada bloqueante, biblioteca em modo usuário escalona outra thread em cooperação com modo kernel • Cada camada implementa seu escalonamento de forma independente, trocando informações quando necessário ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4
6 – Thread • Modelos de Programação • Desenvolvimento de aplicações multithread exige sincronismo na comunicação e compartilhamento de recursos entre as threads • Deve-se evitar problemas de inconsistência e deadlocks • Procedimento de depuração torna-se mais complicado • Fator importante para desempenho do programa é sua política de criação e eliminação de threads, o que implicará no número total de threads coexistindo • Uma boa estratégia de modularização do programa e conseqüente divisão em threads é fundamental ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 6/4