Transcript
Sistemas Operacionais Processos e Threads Carine Rodrigues da Costa UnematAlto Araguaia – MT, 31/08/2011
Processo e Programa PROCESSO Entidade dinâmica e “breve”
Altera seu estado à medida que avança sua execução
Composto por código, dados, pilha e contexto (registradores e informações de controle)
PROGRAMA Entidade estática e “permanente”
Sequência de instruções
Passivo sob o ponto de vista do SO
2
PROCESSO
Abstração que representa um programa em execução Diferentes instâncias Um programa pode ter várias instâncias em execução, ou seja, diferentes processos Mesmo código, porém dados, pilhas e contextos diferentes Forma pela qual o sistema operacional “enxerga” um programa e possibilita sua execução. Exemplo: receita de bolo.
3
Multiprogramação
Torna mais eficiente o aproveitamento dos recursos do computador Execução “simultânea” de vários programas Diversos programas são mantidos na memória Conceitos necessários à multiprogramação
Processo Interrupção Proteção entre processos
4
Ciclo de vida – criação Principais eventos que levam à criação de processos Início do sistema Execução de chamada ao sistema de criação de processos – Exemplos: fork, CreateProcess – Podem ser associados a uma sessão de trabalho Exemplo: login de usuário cria um (shell) ou vários processos (ambiente gráfico) Solicitação do usuário para criar um novo processo Início de um job em lote
5
Ciclo de vida – execução
Processos apresentam dois ciclos básicos de operação Ciclo de processador: Tempo que ocupa a CPU Ciclo de entrada e saída: tempo em espera pela conclusão de uma operação de E/S Primeiro ciclo é sempre de processador Trocas de ciclos por: – CPU → E/S: chamada de sistema – E/S → CPU: ocorrência de evento (interrupção)
6
Ciclo de vida – execução (cont.) Processos podem: Utilizar muito a CPU (CPU bound) – Ciclo de processador >> ciclo de E/S Realizar muitas operações de E/S (I/O bound) – Ciclo de E/S >> ciclo de processador
Situação ideal: Misturar processos CPU bound com I/O bound – Uso eficiente dos recursos (CPU + E/S)
7
Ciclo de vida - término Condições que levam ao término de processos
Término normal (voluntária) Término por erro (voluntária) Erro fatal (involuntário) Cancelamento por um outro processo (involuntário)
8
Estados
Após criado, um processo alterna entre diferentes estados até o seu término Estados de um processo (versão simples): Executando Bloqueado Pronto
9
Estados (cont.)
Implementação dos estados através de filas
10
Estruturas de controle (cont.) Cada processo é composto por: Programa (texto ou código) Dados (parte alterável) Pilha (usada para armazenar parâmetros e endereços) Bloco de controle de processo (ou bloco de controle da tarefa ou descritor do processo ou descritor da tarefa)
Contém os dados necessários para SO controlar o processo
11
Suporte à multiprogramação Concorrência
Concorrência: mecanismo que permite manter vários processos seqüenciais ativos, em uma máquina com um só processador, e diversos dispositivos de E/S. Princípio básico para projeto e implementação dos SO multiprogramáveis.
12
Soluções para o problema de concorrência
Buffering Reentrância
13
Buffering
Implementação para minimizar o problema da disparidade da velocidade de processamento existente entre a UCP e os dispositivos de E/S.
Objetivo: manter, na maior parte do tempo, UCP e dispositivos ocupados.
Utilização de uma área de memória para a transferência entre os periféricos e a memória principal denominada buffer.
14
Buffering Como funciona
Enquanto a UCP manipula o dado localizado no buffer, o dispositivo realiza outra operação de leitura no mesmo instante.
Pode ser aplicado para operações de gravação, onde a UCP coloca o dado no buffer para um dispositivo de saída manipular.
15
Reentrância
Capacidade de um código de programa (código reentrante) poder ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja na memória.
O código não pode ser modificado por nenhum usuário no momento em que está sendo executado.
Permite que cada usuário possa estar em um ponto diferente do código reentrante, manipulando dados próprios, exclusivos de cada usuário.
16
Reentrância
Exemplo: vários usuários utilizam o mesmo editor de textos. Várias cópias desperdício de espaço.
Outros exemplos: utilitários do sistema, como editores de texto, compiladores.
17
Fim da revisão....
18
Modos de implementar concorrência
Concorrência: mecanismo que permite manter vários processos seqüenciais ativos, em uma máquina com um só processador, e diversos dispositivos de E/S. Princípio básico para projeto e implementação dos SO multiprogramáveis.
19
Modos de implementar concorrência
Processos independentes Subprocessos e Threads Objetivo: dividir o código em partes para trabalhar de maneira cooperativa.
20
Modos de implementar concorrência
Processos independentes
Maneira mais simples de implementar concorrência. Não existe vínculo com o processo criado e seu criador.
21
Modos de implementar concorrência
Subprocessos Criados dentro de uma hierarquia. Processo criador: processo-pai. Subprocesso: processo-filho. Dependência entre processo criador e subprocesso: caso processo pai seja eliminado, os filhos deixam de existir. Processo D Demora para alocação de recursos. Comunicação pouco eficiente.
Processo A
Processo C
Processo B
Processo E
22
Modos de implementar concorrência
Thread Objetivos: reduzir o tempo gasto de criação, eliminação e troca de contexto das aplicações concorrentes. Um único processo pode suportar múltiplos threads, cada qual associado a uma parte do código da aplicação.
23
Modos de implementar concorrência
Threads compartilham o processador da mesma forma de processos. Compartilham o espaço de endereçamento, permitindo a comunicação mais rápida.
Contexto de hardware
Contexto de hardware
Contexto de hardware
Thread 1
Thread 2
Thread 3
Contexto de software
Espaço de endereçamento
24
Threads
Ambiente monothread Ambiente multithread
25
Ambiente monothread
Um processo suporta apenas um programa em seu espaço de endereçamento. Concorrência implementada com múltiplos processos (independentes ou subprocessos).
26
Ambiente monothread
Processos independentes Exemplo: gerenciador de emails com interface gráfica. Enquanto lê emails pode enviar também. Problemas: cada funcionalidade exige a criação de novos processos, consumindo recursos do sistema. Cada processo tem seu espaço de endereçamento comunicação difícil e lenta. Exemplo: MS-DOS, primeiras versões do Windows,VMS e Unix.
Thread
Thread
Thread
27
Ambiente multithread
Não existe a ideia de programas associados a processos, e sim a threads. Thread: programa que pode ser executado de forma assíncrona (concorrentemente). Permite a execução de diversas sub-rotinas dentro de um mesmo processo. Contexto de hardware
Contexto de hardware
Contexto de hardware
Thread 1
Thread 2
Thread 3
Contexto de software
Espaço de endereçamento
28
Ambiente multithread Aplicação multithread
Processo
Variáveis
Programa Principal
Thread_1 PC SP
Contexto de Hardware
...
Espaço de endereçamento
Call Sub_1
Thread_2
Sub_1
Ret
PC SP
Thread_3
Sub_2
PC SP
Contexto de Hardware
Fim
Contexto de Hardware
Call Sub_2
Ret
...
29
Ambiente multithread
Threads compartilham o processador do mesmo modo que processos. Passam pelos mesmos estados (execução, espera e pronto). A troca de contexto é feita pelo contexto de hardware (registradores). Contexto de software é o mesmo. São implementadas com uma ED chamada Bloco de Controle de Thread (Thread Control Block - TCB).
30
Diferenças...
Processos
Unidade de alocação de recursos Unidade de escalonamento
Threads
Unidade de alocação de recursos – compartilham espaço de endereçamento, descritores de arquivos e dispositivos de E/S. Unidade de escalonamento independente.
31
Diferenças entre monothread e multithread
Espaço de endereçamento Processos possuem espaços de endereçamento individuais e protegidos. Threads compartilham o mesmo espaço para um processo.
Compartilhamento de dados é mais rápido.
Entretanto....
Falta de proteção no acesso à memória: Problema???
32
Diferenças entre monothread e multithread
Falta de proteção no acesso à memória: Problema?? Cada thread pode facilmente alterar dados de outras. Necessidade de implementação de mecanismos de comunicação e sincronização entre threads.
33
Atenção!! Novo site! https://sites.google.com/site/carineunemat/
[email protected]
34