Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Professor: André Sobral e-mail: asobral@unicarioca.edu.br Análise e Desenvolvimento de Sistemas Ciência da Computação Redes de Computadores Processos Concorrência entre processos: É natural que processos da mesma aplicação compartilhem recursos do sistema. Com isso podem ocorrer problemas de recursos compartilhados: Exemplo: • X = (800 x 3,14) + (1000 x 4,3 x 1,1) + (300 / 7,4) • O cálculo é feito em 4 etapas: • 1, 2 e 3: Cálculo individual de cada parcela • 4: Cálculo final, usando os resultados de 1, 2 e 3 Sistemas Operacionais Processos Concorrência entre processos: Exemplo: • X = (800 x 3,14) + (1000 x 4,3 x 1,1) + (300 / 7,4) Se fossem usados 4 processos: processo (4) depende da conclusão dos processos (1), (2) e (3). Deve ser usado um recurso de comunicação entre os processos para que o processo (4) permaneça em espera enquanto os outros processos ainda não estiverem concluídos. Sistemas Operacionais Processos Concorrência entre processos: Sistemas Operacionais Processos Concorrência entre processos: A solução mais simples para evitar o problema de compartilhamento de recursos é a Exclusão Mútua (MUTEX). Sistemas Operacionais Garante que somente um processo concorrente terá acesso a um recurso compartilhado. O trecho de um programa que faz uso de um recurso compartilhado é chamado REGIÃO CRÌTICA. Antes de entrar na região crítica, o processo pede exclusividade de acesso ao recurso. Processos Concorrência entre processos: Sistemas Operacionais Processos Concorrência entre processos: Sistemas Operacionais Quando um recurso é liberado, o SO deve escolher qual processo (aguardando) receberá a exclusividade. Dependendo do critério de seleção, um processo poderá nunca ser escolhido. Essa ocorrência pode gerar a espera indefinida ou starvation Processos O uso de processos independentes e subprocessos no desenvolvimento de aplicações concorrentes demanda consumo de diversos recursos do sistema. Sempre que um novo processo é criado, o sistema deve alocar recursos (contexto de hardware, contexto de software e espaço de endereçamento), consumindo tempo de CPU neste trabalho. No momento do término dos processos, o sistema operacional também dispensa tempo para desalocar recursos previamente alocados. Outro problema é a comunicação e sincronização entre processos consideradas pouco eficientes, visto que cada processo possui seu próprio espaço de endereçamento. Sistemas Operacionais Processos 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. Neste caso, não é necessário haver diversos processos para a implementação da concorrência. Sistemas Operacionais Processos 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. Sistemas Operacionais 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. Processos 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. Sistemas Operacionais Processos A implementação de Threads: Modo Usuário: podem ser oferecidos por uma biblioteca de rotinas fora do núcleo do Sistema Operacional; Modo Kernel: podem ser oferecidos pelo próprio núcleo do Sistema Operacional; Modo Híbrido: uma combinação de ambos. Sistemas Operacionais Processos Thread Modo Usuário (TMU): São implementados pela aplicação e não pelo sistema operacional. Para isso, deve existir uma biblioteca de rotinas que possibilite à aplicação realizar tarefas como criação/eliminação de threads, troca de mensagens entre threads e uma política de escalonamento. Neste modo, o sistema operacional não sabe da existência de múltiplos threads, sendo responsabilidade exclusiva da aplicação gerenciar e sincronizar os diversos threads existentes. Sistemas Operacionais Processos Thread Modo Usuário (TMU): Sistemas Operacionais T h re a d 0 T h re ad 1 T h re ad 2 T h re ad 3 T h re ad 4 Biblioteca Kernel Modo Usuário Modo Kernel Processos Thread Modo Usuário (TMU): A vantagem deste modelo é a possibilidade de implementar aplicações multithreads mesmo em sistemas operacionais que não suportam threads. Utilizando a biblioteca, múltiplos threads podem ser criados, compartilhando o mesmo espaço de endereçamento do processo, além de outros recursos. TMUs são rápidos e eficientes por dispensarem acessos ao kernel do sistema operacional, evitando assim a mudança de modo de acesso. Sistemas Operacionais Processos Thread Modo Usuário (TMU): TMUs possuem uma grande limitação, pois o sistema operacional gerencia cada processo como se existisse apenas um único thread. No momento em que um thread chama uma rotina do sistema que o coloca em estado de espera (rotina bloqueante), todo o processo é colocado no estado de espera, mesmo havendo outros threads prontos para execução. Sistemas Operacionais Processos Thread Modo Kernel (TMK): TMK são implementados diretamente pelo núcleo do sistema operacional. O sistema operacional sabe da existência de cada thread e pode escaloná-los individualmente. No caso de múltiplos processadores, os threads de um mesmo processo podem ser executados simultaneamente. Sistemas Operacionais Processos Thread Modo Kernel (TMK): O grande problema para pacotes em modo kernel é o seu baixo desempenho. Enquanto nos pacotes em modo usuário todo tratamento é feito sem a ajuda do sistema operacional, ou seja, sem a mudança no modo de acesso, pacotes em modo kernel utilizam chamadas a rotinas do sistema operacional e, consequentemente, várias mudanças no modo de acesso. Sistemas Operacionais Processos Thread Modo Híbrido (TMH): A arquitetura de threads em modo híbrido combina as vantagens de threads implementados em modo usuário (TMU) e modo kernel (TMK). Um processo pode ter vários TMKs e, por sua vez, um TMK pode ter vários TMUs. O núcleo do sistema reconhece os TMKs e pode escaloná-los individualmente. Um TMU pode ser executado em um TMK, em um determinado momento, e no instante seguinte ser executado outro. Sistemas Operacionais Processos Thread Modo Híbrido (TMH): O programador desenvolve a aplicação em termos de TMUs e especifica quantos TMKs estão associados ao processo. Sistemas Operacionais Processos Thread Modo Híbrido (TMH): O modo híbrido, apesar da maior flexibilidade, apresenta problemas herdados de ambas as implementações. Por exemplo, quando um TMK realiza uma chamada bloqueante, todos os seus TMUs são colocados no estado de espera. TMUs que desejam utilizar vários processadores devem utilizar diferentes TMKs, o que influenciará no desempenho. Sistemas Operacionais Próxima Aula Gerência do Processador;
Compartilhar