Sistemas Operativos Threads 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes ([email protected]) Dos Processos para os Threads ● O conceito de thread foi introduzido na tentativa de reduzir o tempo gasto em criação, eliminação e troca de contexto de processos nas aplicações concorrentes, bem como economizar recursos do sistema como um todo. ● Em um ambiente multithread, um único processo pode suportar múltiplos threads, cada qual associado a uma parte do código da aplicação. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Dos Processos para os Threads ● Neste caso, não é necessário haver diversos processos para a implementação da concorrência. ● Threads compartilham o processador da mesma maneira que um processo, ou seja, enquanto um thread espera por uma operação de E/S, outro thread pode ser executado. – cada thread possui seu próprio contexto de hardware, porém compartilha o mesmo contexto de software e espaço de endereçamento com os demais threads do processo. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Dos Processos para os Threads ● O compartilhamento do espaço de endereçamento permite que a comunicação de threads dentro do mesmo processo seja realizada de forma simples e rápida. ● Ambiente MONOTHREAD Processo Thread Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Dos Processos para os Threads ● Ambiente MULTITHREADS Processo Contexto de Hardware Contexto de Hardware Contexto de Hardware Contexto de Software Thread 1 Thread 2 Thread 3 Espaço de Endereçamento Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Dos Processos para os Threads ● Ambiente MULTITHREADS Thread de Entrada Buffer Thread de Exibição Sistemas Operativos [2011/12] Thread de Gravação - Eng.º Anilton Silva Fernandes <[email protected]> Dos Processos para os Threads ● Ambiente MULTITHREADS Processo Servidor Solicitações Thread Thread Thread Processo Cliente Processo Cliente Processo Cliente Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● Processos Leves (lightweight process) ● ● Contador de programa ● ● ● Pois possuem somente algumas propriedades dos processos Indica qual a próxima instrução a ser executada Registradores que contém as variáveis atuais Pilha sobre a história de execução ● Um para cada procedimento não retornado Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● Diferença entre thread e processo ● ● ● Processos são usados para agrupar recursos Threads são entidades escalonadas para a execução sobre a CPU Threads permitem que múltiplas execuções ocorram no mesmo ambiente do processo de forma independente Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● ● ● ● Múltiplas threads executando em paralelo é semelhante a múltiplos processos executando em um computador Threads compartilham um mesmo espaço de endereçamento Processos compartilham um espaço físico de memória, discos e impressoras e recursos semelhantes Multithread: possibilidade de execução de vários threads para um mesmo processo Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads a) Três Cadaprocessos. thread opera Cada emum umpossui espaçoseu de próprio endereçamento espaço de diferente endereçamento e thread de controle b) Todos os threads compartilham o mesmo espaço de endereçamento b) Um único processo com três threads de controle Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● Execução de múltiplos threads em sistema com uma única CPU ● ● Semelhante a execução de vários processos A CPU alterna entre os threads ● Ilusão de paralelismo Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● Threads distintos em um processo não são tão independentes quando processos distintos ● ● ● Pois compartilham o mesmo espaço de endereçamento Compartilham variáveis globais Pode ler e escrever a pilha de execução do outro thread Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● ● ● ● Não há proteção entre threads ● É impossível ● Não há necessidade No caso de processos, há utilizadores diferentes e possivelmente hostis Cada processo é propriedade do usuário Todos threads de um processo são propriedades de um único usuário Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● Itens compartilhados entre threads Se um thread abre um arquivo, este arquivo é visível para todos os threads do processo, podendo ler e escrever nesse arquivo ● Os threads podem compartilhar recursos e cooperar na realização de uma tarefa Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● Assim como em processos tradicionais ● ● Processos com um único thread Um thread pode estar em um dos vários estados Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● Cada thread possui sua própria pilha Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Modelo de Threads ● Cada thread chama procedimentos diferentes ● ● Por isso cada thread possui sua própria pilha Exemplo: ● Se o procedimento X chamar o procedimento Y e esse chamar o procedimento Z ● enquanto Z estiver executando ● X, Y e Z estarão todos na pilha Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads ● ● ● O que são? Qual a diferença entre threads e processos? Porque usar threads? Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads ● Em uma aplicação ocorrem muitas atividades ao mesmo tempo ● ● Muitas vezes as atividades são independentes Muitas vezes elas podem bloquear de tempos em tempos ● Parando a aplicação Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads ● ● O modelo de programação fica mais simples se decompormos a aplicação em múltiplos threads Com os threads há a capacidade de entidades paralelas compartilharem o endereço e os dados entre elas mesmas Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads ● Thread são mais fáceis de criar e destruir do que processos ● ● ● São mais simples Em alguns sistemas é 100 vezes mais rápido criar um thread do que um processo Há um aumento de desempenho quando os threads são orientados à E/S e têm grande computação para ser feita Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads ● ● Exemplo: dada uma planilha eletrônica. Os cálculos são dependentes das entradas do usuário. Dada a entrada os cálculos são efetuados de forma encadeada. Podemos criar threads para ● Efetuar os cálculos ● Interagir com o usuário ● Fazer backups Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads ● ● Exemplo: servidores WEB. Requisições de páginas que chegam a um servidor são devolvidas aos clientes. As páginas principais são mais acessadas do que outras páginas. ● A página principal da Sony é mais acessada do que a página sobre configurações de uma determinada câmera Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads ● ● Esse fato é usado para melhorar o desempenho As páginas mais acessadas são colocas na memória ● ● Essa coleção é chamada de cache Uma forma de organizar o servidor é utilizando threads Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Threads ● ● Threads tornam possível manter a idéia de processos sequenciais que fazem chamada ao sistema de bloqueio e mesmo assim conseguem obter paralelismo Essas chamadas tornam a programação mais fácil e o paralelismo melhora o desempenho Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]>