Redes de Computadores INF201 - Fundamentos de Sistemas Operacionais - 2º Período
PARTE II: PROCESSOS E THREADS SUMÁRIO 5. PROCESSO: 5.1 Introdução; 5.2 Estrutura do Processo; 5.3 Estados do Processo; 5.4 Mudanças de Estado do Processo; 5.5 Criação e Eliminação de Processos; 5.6 Processos CPU-bound e I/O-bound; 5.7 Processos Foreground e Background; 5.8 Formas de Criação de Processos; 5.9 Processos Independentes, Subprocessos e Threads; 5.10 Processos do Sistema Operacional; 5.11 Sinais.
5.1 Introdução A gerência de um ambiente multiprogramável é função exclusiva do sistema operacional que deve controlar a execução dos diversos programas e o uso concorrente do processador e demais recursos. Um programa ao ser executado deve estar sempre associado a um processo. O conceito de processo é a base para a implementação de um sistema multiprogramável. A gerência de processos é uma das principais funções de um sistema operacional.
5.2 Estrutura do Processo O processador é projetado para executar instruções a partir do ciclo de busca e execução. O registrador PC tem a função de armazenar sempre o endereço da próxima instrução a ser executada. Na visão da camada de hardware, o processador executa instruções sem distinguir qual programa encontra-se em processamento. O conceito de processo é essencial para que os sistemas multiprogramáveis implementem o mecanismo de concorrência.
5.2 Estrutura do Processo Algumas definições de processo: Pode ser entendido inicialmente como um programa em execução; É o conjunto necessário de informações para que o sistema operacional implemente a concorrência de programas; Também pode ser definido como o ambiente onde um programa é executado. Em um sistema multiusuário, cada usuário tem seu programa associado a um processo.
5.2 Estrutura do Processo Capítulo 5 - Processo
5.2 Estrutura do Processo A troca de um processo por outro no processador, comandada pelo sistema operacional, é denominada mudança de contexto. O resultado da execução de um mesmo programa pode variar, dependendo do processo em que é executado. A falta de recursos pode impedir a execução com sucesso de um programa. Um processo é formado por três partes, conhecidas como contexto de hardware, contexto de software e espaço de endereçamento, que juntas mantêm todas as informações necessárias à execução de um programa.
5.2 Estrutura do Processo Contexto de Software Contexto de Hardware Programa Espaço de Endereçamento
5.2.1 Contexto de Hardware Armazena o conteúdo dos registradores gerais da UCP, além dos registradores de uso específico, como o PC (Program Counter), o SP (Stack Pointer) e o registrador de status. O sistema operacional gerencia a mudança de contexto, base para a implementação da concorrência em sistemas multiprogramáveis. Essa mudança consiste em salvar o conteúdo dos registradores do processo que está deixando a UCP e carregar nos registradores do processador os valores do novo processo que será executado.
5.2.1 Contexto de Hardware Sistema Operacional Processo A Processo B executando Salva registradores do Processo A Carrega registradores do Processo B executando Salva registradores do Processo B Carrega registradores do Processo A executando
5.2.2 Contexto de Software São especificados limites e características dos recursos que podem ser alocados pelo processo, como: Número máximo de arquivos abertos simultaneamente; Prioridade de execução; Tamanho do buffer para operações de E/S. A maior parte das informações do contexto de software do processo provém de um arquivo do SO, conhecido como arquivo de usuários. O contexto de software é composto por três grupos de informações sobre o processo: identificação, quotas e privilégios.
5.2.2 Contexto de Software Identificação: Cada processo criado pelo sistema recebe uma identificação única (PID - Process Identification) representada por um número. 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. A UID permite implementar um modelo de segurança, onde apenas os objetos que possuem a mesma UID do usuário (processo) podem ser acessados.
5.2.2 Contexto de Software Quotas: São os limites de cada recurso do sistema que um processo pode alocar. Alguns exemplos de quotas: 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; Tamanho máximo do buffer para operações de E/S; Número máximo de processos, subprocessos e threads que podem ser criados.
5.2.2 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 sistema operacional. Quando os privilégios afetam: O próprio processo, permitem que suas características possam ser alteradas; Os demais processos, permitem alterar as suas próprias características e as de outros processos; O sistema operacional, permitem alterações relacionadas à operação e à gerência do ambiente. O SO disponibiliza uma conta de acesso com o propósito de gerenciar o SO.
5.2.3 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. 5.2.4 Bloco de Controle do Processo A partir do PCB (Process Control Block), o SO mantém todas as informações sobre os contextos de hardware e software e o espaço de endereçamento de cada processo. Os PCBs de todos os processos ativos residem na memória principal em uma área exclusiva do sistema operacional.
Características da Estrutura de um Processo owner (UID) nome PID registradores gerais prioridade de execução registrador PC data/ hora de criação Contexto de Software Contexto de Hardware tempo de processador registrador SP quotas privilégios Programa Espaço de Endereçamento registrador de status endereços de memória principal alocados
5.2.4 Bloco de Controle do Processo (PCB) ponteiros Estado do processo Nome do processo Prioridade do processo Registradores Limites de memória Lista de arquivos abertos.
5.2.4 Bloco de Controle do Processo (PCB) Capítulo 5 - Processo
5.3 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. São três diferentes estados: Execução (running): está sendo processado pela UCP; Pronto (ready): aguarda apenas para ser executado. O SO é responsável por determinar a ordem e os critérios pelos quais os processos em estado pronto devem fazer uso do processador (escalonamento); Espera (wait): aguarda por algum evento externo ou por algum recurso para prosseguir seu processamento. Em alguns SOs, o estado de espera pode ser chamado de bloqueado (blocked).
5.3 Estados do Processo Lista de processos em estado de pronto. PCB# 5. PCB# 1 Lista de processos em estado de espera. PCB# 9.. PCB# 2 PCB# 4
5.4 Mudanças no Estado do Processo Um processo muda de estado durante seu processamento em função de eventos originados por ele próprio (eventos voluntários) ou pelo sistema operacional (eventos involuntários). Pronto Execução; Execução Espera; Espera Pronto; Execução Pronto.
5.4 Mudanças no Estado do Processo Estado de Execução b d a c Estado de Espera Estado de Pronto
5.4 Mudanças no Estado do Processo Um processo em estado pronto ou de espera pode não se encontrar na memória principal. A técnica conhecida como swapping, retira processos da memória principal (swap out) e os traz de volta (swap in) seguindo critérios de cada SO. 5.5 Criação e Eliminação de Processos A 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 na memória para uso. Na eliminação, todos os recursos associados ao processo são desalocados e o PCB eliminado pelo SO.
5.4 Mudanças no Estado do Processo Estado de Execução residente não residente Estado de Espera Estado de Pronto Estado de Espera Estado de Pronto
5.5 Criação e Eliminação de Processos Estado de Execução Estado de Término Estado de Espera Estado de Pronto Estado de Criação
5.5 Criação e Eliminação de Processos Criação (new): um processo é dito em estado de criação quando o sistema operacional já criou um novo PCB, porém ainda não pode colocá-lo na lista de processos do estado de pronto. Terminado (exit): um processo no estado terminado não poderá ter mais nenhum programa executado no seu contexto, porém o SO ainda mantém suas informações de controle presentes em memória. 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.
5.6 Processos CPU-bound e I/O-bound Processos podem ser classificados como: CPU-bound (ligado à UCP): quando passa a maior parte do tempo no estado de execução, utilizando o processador, ou no estado de pronto. É encontrado em aplicações científicas que efetuam muitos cálculos. I/O-bound (ligado à E/S): quando passa a maior parte do tempo no estado de espera, pois realiza um elevado número de operações de E/S. É encontrado em aplicações comerciais, que se baseiam em leitura, processamento e gravação.
5.6 Processos CPU-bound e I/O-bound Capítulo 5 - Processo
5.7 Processos Foreground e Background Processo Foreground: é aquele que permite a comunicação direta do usuário com o processo durante o seu processamento. O processamento interativo tem como base processos foreground. Processo Background: é aquele onde não existe a comunicação com o usuário durante o seu processamento. O processamento do tipo batch é realizado através de processos background. É possível associar o canal de saída de um processo ao canal de entrada de um outro processo. Neste caso, dizemos que existe um pipe ligando os dois processos.
5.7 Processos Foreground e Background (a) Processo Foreground entrada saída terminal terminal (b) Processo Background entrada saída arquivo de entrada arquivo de saída
5.7 Processos Foreground e Background Pipe: entrada do Processo A Processo A saída do Processo A entrada do Processo B Processo B saída do Processo B
5.8 Formas de Criação de Processos Logon Interativo: o usuário, por intermédio de um terminal, fornece ao sistema um nome de identificação (username ou logon) e uma senha (password). O processo também pode ser eliminado interativamente quando o usuário realiza o procedimento de logout ou logoff. Via Linguagem de Comandos: um usuário pode, a partir do seu processo, criar novos processos por intermédio de comandos. Via Rotina do Sistema Operacional: um processo pode ser criado a partir de qualquer programa executável com o uso de rotinas do SO. A rotina de criação de processos depende do SO e possui diversos parâmetros.
5.9 Processos Independentes, Subprocessos e Threads Processos Independentes: não existe vínculo do processo criado com o seu criador. A criação de um processo independente exige a alocação de um PCB. Subprocessos: são processos criados dentro de uma estrutura hierárquica. Neste modo, o processo criador é denominado processo-pai, enquanto o novo processo é chamado de subprocesso ou processo-filho. Características de Subprocessos: dependência hierárquica, compartilhamento de quotas, consumo de recursos do sistema e comunicação/sincronização entre processos consideradas pouco eficientes.
5.9 Processos Independentes, Subprocessos e Threads Processo A Processo B Processo C Processo D Processo E
Exemplo de Uso de Subprocesso: Um processo responsável por acesso a banco de dados, onde vários usuários solicitam consultas; Caso um usuário solicite um relatório impresso de todos os registros, os demais usuários teriam que aguardar o fim da tarefa. Usando subprocesso cada consulta ao banco acarretaria na criação de um subprocesso, melhorando o desempenho da aplicação.
5.9 Processos Independentes, Subprocessos e Threads Threads: este conceito foi introduzido na tentativa de reduzir o tempo gasto em criação, eliminação e troca de contexto de processos nas aplicações concorrentes. Em um ambiente multithread, um único processo pode suportar múltiplos threads, cada qual associado a uma parte do código executável. Threads compartilham o processador da mesma maneira que um processo. 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.
Contexto de software Capítulo 5 - Processo 5.9 Processos Independentes, Subprocessos e Threads Contexto de hardware Contexto de hardware Contexto de hardware Thread 1 Thread 2 Espaço de endereçamento Thread 3
5.10 Processos do Sistema Operacional O conceito de processo, além de estar associado a aplicações de usuários, pode também ser implementado na própria arquitetura do sistema operacional. Alguns serviços que o SO pode implementar através de processos: Auditoria e segurança; Serviços de rede; Contabilização do uso de recursos e de erros; Gerência de impressão e de jobs batch; Temporização; Comunicação de eventos; Interface de comandos (shell).
5.11 Sinais É um mecanismo que permite notificar processos de eventos gerados pelo SO ou por outros processos. Sinais podem ser utilizados em conjunto com temporizadores, no intuito de sinalizar ao processo algum evento associado ao tempo. A maior parte dos eventos associados a sinais são gerados pelo SO ou pelo hardware. Em alguns casos, os eventos são gerados a partir de outros processos. Quando um sinal é tratado, o contexto do processo é salvo e a execução desviada para um código de tratamento de sinal, geralmente no núcleo. É possível que um processo bloqueie temporariamente ou ignore sinais.
5.11 Sinais [ctrl-c] interrupção Sistema Operacional sinal Processo
5.11 Sinais Processo Processo Sinais Sistema Operacional Interrupções Exceções Hardware