Preview only show first 10 pages with watermark. For full document please download

So-4- Processos E Threads

Redes

   EMBED

  • Rating

  • Date

    December 2018
  • Size

    435.3KB
  • Views

    6,087
  • Categories


Share

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