Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos de Sistemas Operacionais Seção 2: Processos e Threads Profa. Dra. Maria Teodora Ferreira maria.ferreira@bilac.com.br Objetivo: O aluno deverá ser capaz de entender sobre o funcionamento de processos e threads. 2 PROCESSO 3 Capítulo 4 Capítulo 2 Capítulo 2 Capítulo 5 4 Introdução A gerência de um ambiente multiprogramável é função exclusiva do SO. O SO deve controlar a execução dos diversos programas e o uso concorrente do processador e demais recursos. Para isso, um programa ao ser executado, deve estar sempre associado a um processo. 5 Introdução A gerência de processos é uma das principais funções de um SO, possibilitando aos programas: alocar recursos, compartilhar dados, trocar informações e sincronizar suas execuções. 6 Introdução Em sistemas multiprogramáveis os processos são executados concorrentemente, compartilhando o uso: do processador, da memória principal e dos dispositivos de entrada e saída, dentre outros recursos. 7 Introdução Nos sistemas com múltiplos processadores existe: a concorrência de processos pelo uso do processador; a possibilidade de execução simultânea de processos nos diferentes processadores. 8 Processo Um processo (às vezes chamado de tarefa ou de processo sequencial) pode ser entendido inicialmente como um programa em execução. É uma entidade ativa que compete por recursos oferecidos pelo sistema (acesso a discos, periféricos e principalmente à CPU) e também interage com outros processos. 9 Processo A troca de um processo por outro no processador, gerenciada pelo SO, é denominada mudança de contexto. é dessa maneira que o SO implementa e gerencia um ambiente multiprogramável. 10 Estrutura do Processo Um processo é formado por três partes, conhecidas como: contexto de hardware; contexto de software; espaço de endereçamento, que juntos mantêm todas as informações necessárias à execução de um programa. Programa Contexto de Software Contexto de Hardware Espaço de Endereçamento 11 Estrutura do Processo – Contexto de Hardware Armazena o conteúdo dos registradores gerais da UCP, além dos registradores de uso específico. Processo está em execução o seu contexto de hardware está armazenado nos registradores do processador. Processo perde a utilização da UCP o sistema salva as informações no contexto de hardware do processo. Em sistemas multiprogramáveis os processos se alternam na utilização da UCP, podendo ser interrompidos e, posteriormente, restaurados. 12 Estrutura do Processo – Contexto de Software São especificados limites e características dos recursos que podem ser alocados pelo processo, como: O número máximo de arquivos abertos simultaneamente, Prioridade de execução, entre outras. A maior parte das informações provém de um arquivo do SO, conhecido como arquivo de usuários. Neste arquivo são especificados os limites dos recursos que cada processo pode alocar, sendo gerenciado pelo administrador do sistema. 13 Estrutura do Processo – Contexto de Software Outras informações presentes neste contexto são geradas dinamicamente ao longo da execução do processo. É composto por três grupos de informações sobre o processo: Identificação, Quotas e Privilégios. 14 Estrutura do Processo – Contexto de Software: Identificação Cada processo criado pelo sistema recebe uma identificação única (PID – process identification) representada por um número. Alguns sistemas, além do PID, identificam o processo através de um nome. O processo também possui a identificação do usuário ou processo que o criou (owner). Cada usuário possui uma identificação única no sistema (UID – user identification), atribuída ao processo no momento de sua criação. 15 Estrutura do Processo – Contexto de Software: Quotas São os limites de cada recurso do sistema que um processo pode alocar. Alguns exemplos de quotas presentes na maioria dos SO são: Número máximo de arquivos abertos simultaneamente; Tamanho máximo de memória principal e secundária que o processo pode alocar; Número máximo de operações de E/S pendentes; Número máximo de processos, subprocessos e threads que podem ser criados. 16 Estrutura do Processo – Contexto de Software: Privilégios Definem as ações que um processo pode fazer em relação a ele mesmo, aos demais processos e ao SO. A maioria dos SO disponibiliza uma conta de acesso com todos estes privilégios disponíveis, com o propósito do administrador gerenciar o SO. No sistema Unix existe a conta “root”. No MS Windows a conta “administrador”. 17 Estrutura do Processo – Espaço de Endereçamento É a área de memória pertencente ao processo onde instruções e dados do programa são armazenados para execução. Cada processo possui seu próprio espaço de endereçamento, que deve ser devidamente protegido do acesso dos demais processos. 18 Estrutura do Processo Programa Contexto de Software prioridade de execução registrador PC data/ hora de criação tempo de processador registrador SP quotas privilégios endereços de memória principal alocados registrador de status owner (UID) PID nome registradores gerais Contexto de Hardware Espaço de Endereçamento Características da Estrutura de um Processo 19 Diferenciação entre Programa e Processo Programa Entidade estática e permanente: Sequência de instruções; Passivo sob o ponto de vista do SO. Processo Entidade dinâmica: Altera o seu estado, a medida que avança sua execução. Composto por programa (código), dados e contexto (valores). 20 Blocos de controle de processo O processo é implementado pelo SO através de uma estrutura de dados chamada bloco de controle de processo (Process Control Block - PCB). . . . . .. . . ponteiros Estado do processo Registradores Nome do processo Prioridade do processo Limites de memória Lista de arquivos abertos 21 Blocos de controle de processo A partir do PCB, o SO mantém todas as informações sobre: • o contexto de hardware, • contexto de software e • espaço de endereçamento de cada processo. . . . . .. . . ponteiros Estado do processo Registradores Nome do processo Prioridade do processo Limites de memória Lista de arquivos abertos 22 Blocos de controle de processo Normalmente, eles incluem as seguintes informações: Número de identificação de processo (PID); Estado do processo; Contador de programa; Prioridade de escalonamento; Credenciais; Um ponteiro para o processo-pai; Ponteiros para os processos-filho; Ponteiros para localizar os dados e instruções do processo na memória; Ponteiros para recursos alocados, entre outras. 23 Blocos de controle de processo Os PCBs de todos os processos ativos residem na memória principal em uma área exclusiva do SO. O tamanho desta área élimitado por um parâmetro do SO que permite especificar o número máximo de processos que podem ser suportados simultaneamente pelo sistema. Toda a gerência dos processos é realizada por intermédio de chamadas a rotina do SO que realizam operações como: – criação, alteração de característica, visualização, eliminação, sincronização, suspensão de processos, dentre outras. 24 Estados do processo 25 Estados do Processo Muitas vezes os processos precisam interagir com outros. Um processo pode gerar uma saída que o outro processo usa como entrada. À medida que o processo executa, ele muda de estado. O estado de um processo é definido em parte pela atividade atual desse processo. 26 Estados do Processo Os processos passam por diferentes estados ao longo do seu processamento, em função de • Eventos gerados pelo SO ou • Pelo próprio processo. Um processo ativo pode encontrar-se em três estados diferentes: – Execução (running); – Pronto (ready); – Espera (wait). 27 Estados do Processo Execução: Quando está sendo processado pela UCP. Pronto: Quando aguarda apenas para ser executado. O SO é responsável por determinar a ordem e os critérios pelos quais os processos em estado de pronto devem fazer uso do processador escalonamento. 28 Estados do Processo 29 Espera/Bloqueado: Aguarda por algum evento externo ou por algum recurso para prosseguir seu processamento. Um processo bloqueia porque: • está esperando por uma entrada ainda não disponível a suspensão é inerente ao problema. • o SO decide alocar a CPU para outro processo por algum tempo É uma tecnicalidade do sistema. Mudança de Estado do Processo Basicamente, existem 4 mudanças de estado que podem ocorrer a um processo: Pronto Execução. Execução Espera. Espera Pronto. Execução Pronto. 30 Mudança de Estado do Processo a) Pronto Execução b) Execução Espera c) Espera Pronto d) Execução Pronto Estado de Execução Estado de Espera Estado de Pronto a c d b 31 Criação e Eliminação de Processos Há 4 eventos principais que fazem com que processos sejam criados: Início do sistema. Execução de uma chamada de sistema de criação de processo por um processo em execução. Uma requisição do usuário para criar um novo processo. Início de uma tarefa em lote (batch job). 32 Criação e Eliminação de Processos Criação de um processo Ocorre a partir do momento em que o SO adiciona um novo PCB à sua estrutura e aloca um espaço de endereçamento na memória para uso. A partir da criação do PCB, o SO já reconhece a existência do processo, podendo gerenciá-lo e associar programas ao seu contexto para serem executados. 33 Criação e Eliminação de Processos Eliminação de um processo Todos os recursos associados ao processo são desalocados. O PCB é eliminado pelo SO. 34 Criação e Eliminação de Processos Terminado (exit) Não poderá ter mais nenhum programa executado no seu contexto. O SO ainda mantém suas informações de controle presentes em memória. Um processo neste estado não é considerado mais ativo, mas como o PCB ainda existe, o SO pode recuperar informações. 35 Criação e Eliminação de Processos Terminado (exit) O término de processos pode ocorrer por razões como: Término normal de execução; Eliminação por um outro processo; Eliminação forçada por ausência de recursos disponíveis no sistema. 36 Processos CPU-bound e I/O-bound Classificados de acordo com a utilização do processador e dos dispositivos E/S. CPU-bound (ligado à CPU) I/O-bound (ligado à E/S) • Quando passa a maior parte do tempo no estado de execução, utilizando o processador, ou pronto. • Realiza poucas operações de leitura e gravação. • É encontrado em aplicações científicas que efetuam muitos cálculos. • Quando passa a maior parte do tempo no estado de espera. • Realiza um elevado número de operações de E/S. • É encontrado em aplicações comerciais. 37 Processos CPU-bound e I/O-bound (a) CPU-bound tempo tempo E/ S E/ S UCP UCP (b) I/ O-bound 38 Processos Foreground e Background Um processo possui sempre pelo menos dois canais de comunicação associados a sua estrutura. Foreground Background • é aquele que permite a comunicação direta do usuário com o processo durante o seu processamento. • Tanto o canal de entrada quanto o de saída estão associados a um terminal com teclado, mouse e monitor. • é aquele onde não existe a comunicação com o usuário durante o seu processamento. • Os canais de E/S não estão associados a nenhum dispositivo de E/S interativo, mas em geral a arquivos de E/S. 39 Processos Foreground e Background (a) Processo Foreground (b) Processo Background saída saída arquivo de saída terminalterminal entrada entrada arquivo de entrada40 Processos Foreground e Background É possível associar o canal de saída de um processo ao canal de entrada de um outro processo. Nesse caso dizemos que existe um pipe ligando os dois processos. entrada do Processo A saída do Processo B saída do Processo A entrada do Processo B Processo A Processo B 41 Formas de Criação de Processos Um processo pode ser criado de diversas maneiras: Logon interativo O usuário fornece ao sistema um username e uma senha. Um processo foreground é criado. Via linguagem de comandos Um usuário pode, a partir do seu processo, criar novos processos por intermédio de comandos da linguagem de comandos. Via rotina do SO Um processo pode ser criado a partir de qualquer programa executável com o uso de rotinas do SO. 42 Processos independentes, subprocessos e threads Processos independentes, subprocessos e threads são maneiras diferentes de implementar a concorrência dentro de uma aplicação. Busca-se subdividir o código em partes para trabalharem de forma cooperativa. 43 Subprocessos – São processos criados dentro de uma estrutura hierárquica. – Processo criador processo pai. – O novo processo é chamado de subprocesso ou processo filho. Processo A Processo C Processo B Processo E Processo D 44 Subprocessos O subprocesso pode criar outras estruturas de subprocessos. Dependência existente entre o processo criador e o subprocesso. Caso um processo pai deixe de existir, os subprocessos subordinados são automaticamente eliminados. Possuem seu próprio PCB. Podem compartilhar quotas com o processo pai. 45 Threads Introduzido na tentativa de reduzir o tempo gasto em criação, eliminação e troca de contexto de processos em aplicações concorrentes, bem como economizar os recursos do sistema como um todo. Threads compartilham o processador da mesma maneira que um processo. Cada thread possui seu próprio contextode hardware. Compartilha o mesmo contexto de software e espaço de endereçamento com os demais threads do processo. 46 Processos do SO O processo pode também ser implementado na própria arquitetura do SO. A arquitetura microkernel implementa o uso intensivo de processos. Alguns serviços que o SO pode implementar através de processos: Segurança, serviços de rede, contabilização do uso de recursos, interface de comandos (shell), entre outros. 47 Sinais É um mecanismo que permite notificar processos de eventos gerados pelo SO ou por outros processos. É fundamental para a gerência de processos, além de possibilitar a comunicação e sincronização entre processos. 48 THREAD 49 Thread Thread = “fluxo”, “fio”. Fluxo de execução dentro de um processo. É às vezes chamado de processo leve (LWP). Por que alguém desejaria ter um tipo de processo dentro de um processo? Constata-se que há várias razões para existirem esses miniprocessos, chamados threads. 50 Threads - Motivação O modelo de programação se torna mais simples se decompomos uma aplicação em múltiplos threads sequenciais. Eles são mais fáceis (isto é, mais rápidos) de criar e destruir que os processos. 51 Threads - Benefícios Capacidade de resposta. Compartilhamento de recursos. Os threads compartilham a memória e os recursos do processo as quais pertencem. Economia. É mais econômico criar e realizar a troca de contexto de threads. Possibilidade de minimizar a alocação de recursos do sistema. 52 Ambiente Monothread Um processo suporta apenas um programa no seu espaço de endereçamento. Exemplos de sistemas monothreads: MS-DOS. As primeiras versões do MS-Windows. Versões mais antigas do UNIX. Thread ThreadThread 53 Ambiente Multithread Com múltiplos threads. O processo tem pelo menos um thread de execução. Pode compartilhar o seu espaço de endereçamento com inúmeros outros threads. Contexto de hardware Contexto de hardware Contexto de hardware Espaço de endereçamento C o n te x to d e s o ft w a r e Thread 3Thread 2Thread 1 54 Ambiente Multithread Compartilham o processador da mesma maneira que processos e passam pelas mesmas mudanças de estado (execução, espera e pronto). Para permitir a troca de contexto entre diversos threads, cada thread possui seu próprio contexto de hardware. Cada thread possui seu contexto de hardware individual. 55 Ambiente Multithread São implementados internamente através de uma estrutura de dados denominada bloco de controle do thread (TCB). O TCB armazena, além do contexto de hardware, mais algumas informações relacionadas exclusivamente ao thread, como prioridade, estado de execução, entre outras. Como threads de um mesmo processo compartilham o mesmo espaço de endereçamento, não existe qualquer proteção no acesso à memória, permitindo que um thread possa alterar facilmente dados de outros. 56 57 Estados de Thread Threads POSIX Pacote de threads definido por Pthreads. A maioria do sistema UNIX o suporta. Todos os threads Pthreads têm certas propriedades. 58 Arquitetura e Implementação Threads podem ser oferecidos: por uma biblioteca de rotinas fora do núcleo do SO (modo usuário), pelo próprio núcleo do SO (modo kernel), uma combinação de ambos (modo híbrido) ou por um modelo conhecido como scheduler activations. 59 Threads em Modo Usuário São implementados pela aplicação e não pelo SO. Deve existir uma biblioteca de rotinas. Responsabilidade exclusiva da aplicação gerenciar e sincronizar os diversos threads existentes. Vantagem: Possibilidade de implementar aplicações multithreads mesmo em SO que não suportam threads. São rápidos e eficientes por dispensarem acessos ao kernel do SO, evitando assim a mudança de modo de acesso (usuário-kernel-usuário) 60 Threads em Modo Kernel São implementados diretamente pelo núcleo do SO, através de chamadas a rotinas do sistema. O SO sabe da exigência de cada thread e pode escaloná- lo individualmente. Problema: Baixo desempenho Utilizam chamadas a rotinas do sistema e, consequentemente, várias mudanças no modo de acesso. 61 Implementação de Threads Threads em modo usuário Threads em modo kernel Modo usuário Modo kernel Kernel Biblioteca Th re ad 0 Th re ad 4 Th re ad 3 Th re ad 2 Th re ad 1 Modo usuário Modo kernelKernel Th rea d 0 Th rea d 4 Th rea d 3 Th rea d 2 Th rea d 1 62 Threads em Modo Híbrido Combina as vantagens dos 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 programador desenvolve a aplicação em termos de TMUs e especifica quantos TMKs estão associados ao processo. 63 Scheduler Activations • Este pacote combina o melhor das duas arquiteturas. • O núcleo do sistema troca informações com a biblioteca de threads utilizando uma estrutura de dados chamada scheduler activations. – A biblioteca em modo usuário e o kernel se comunicam e trabalham de forma cooperativa. 64 Evitar as mudanças de modos de acesso desnecessárias (usuário- kernel-usuário). gentilezascotidianas.org 65
Compartilhar