Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade III: Processos INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO SISTEMAS OPERACIONAIS Profª Fabíola Araújo fpoliveira@ufpa.br Objetivos desta Unidade... ▪ Introduzir a noção de processos – um programa em execução, que forma a base de toda a computação; ▪ Descrever o ciclo de vida de um processo, bem como os seus estados e as transições entre esses estados; ▪ Descrever as diversas características dos processos, inclusive a forma de comunicação; ▪ Compreender as partes (descritores) de processos, como o Bloco de Controle de Processo (PCB); ▪ Entender como os processos transitam no processador via chaveamento de contexto; ▪ Os primeiros sistemas de computação só permitiam que um programa fosse executado de cada vez e esse programa tinha controle total sobre o sistema; ▪ Os sistemas de computação atuais permitem que vários programas sejam carregados na memória e executados concorrentemente; ▪ Essa evolução demandou um controle mais firme dos diversos programas resultando no conceito de processo – que é um programa em execução; ▪ Um sistema é composto por um conjunto de processos: Processos do SO e Processos do Usuário; ▪ Todos esses processos podem ser executados concorrentemente, com a CPU (ou CPUs) multiplexada entre eles; Introdução ▪ Através do conceito de processos, um programa pode alocar recursos, compartilhar dados, trocar informações e sincronizar execuções. ▪ Nos sistemas multiprogramáveis, os processos são executados concorrentemente, compartilhando entre outros recursos, o uso do processador, memória principal e dos dispositivos de E/S. ▪ O processador é projetado apenas para executar instruções, não sendo capaz de distinguir qual processo está em execução, ou qual processo possui uma prioridade maior do que o outro; ▪ A gerência de processos é uma das principais funções do sistema operacional. Introdução ▪ Como já foi mencionado, um processo é um programa em execução e possui funções que vão além do código do programa; ▪ Possui como função principal guardar todas as informações referentes ao programa durante a sua execução; ✔ Quando for interrompido e retornar a ser executado, não pode faltar nenhuma informação necessária a continuação do seu processamento; ▪ Para que isso seja possível, o processo precisa carregar informações que são próprias (únicas) de cada processo; ▪ Cada processo é representado no sistema operacional por um Bloco de Controle de Processo (PCB – Proccess Control Block); ▪ O PCB mantém as informações necessárias para a gerência do processo pelo SO; Estrutura do Processo ▪ Os PCBs de todos os processos ativos residem na memória principal em uma área exclusiva do S.O. ▪ O tamanho dessa área é limitado pelo S.O. que permite especificar o número máximo de processos que podem ser suportados simultaneamente pelo sistema; Estrutura do Processo ✔A execução de um mesmo programa pode variar em função dos recursos disponíveis. ✔A falta de recursos pode impedir a execução com sucesso de um programa. ✔A figura ilustra, de forma abstrata, os componentes da estrutura do processo; Contexto de Hardware Contexto de Software Espaço de Endereçamento Programa ▪ Pode-se assim dizer, que um processo é formado por três partes: contexto de hardware, contexto de software e espaço de endereçamento. Estrutura do Processo ▪ Armazena o conteúdo dos registradores gerais da CPU, além dos registradores de uso específico, como o program conter (PC), stack pointer (SP) e registrador de status; ▪ Quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador; ▪ Quando ele perde a utilização da CPU, o sistema salva as informações no contexto de hardware do processo. ▪ O contexto de hardware é fundamental para a implementação dos sistemas multiprogramáveis, onde os processos se alternam na utilização da CPU; ✔ Processos podem ser interrompidos e posteriormente, restaurados; Estrutura do Processo – Contexto de Hardware ▪ Programação concorrente é o princípio básico para o projeto e a implementação dos sistemas multiprogramáveis. PROG_1 Inst. 1.1 Inst. 1.2 Inst. 1.3 Inst. 1.4 Inst. 1.5 . . . Informações de Registradores Processo X PROG_2 Inst. 2.1 Inst. 2.2 Inst. 2.3 Inst. 2.4 Inst. 2.5 . . . Informações de Registradores Processo Y PROG_3 Inst. 3.1 Inst. 3.2 Inst. 3.3 Inst. 3.4 Inst. 3.5 . . . Informações de Registradores Processo Z Estrutura do Processo – Contexto de Hardware ▪ Mudança de contexto: É a troca de um processo por outro no processador. Esta ação é comandada (gerenciada) pelo sistema operacional. ▪ É através desta mudança de contexto que o SO implementa um ambiente multiprogramável. Estrutura do Processo – Contexto de Hardware ▪ Programação Concorrente Estrutura do Processo – Contexto de Hardware ▪ Programação Concorrente ▪ Neste contexto são especificadas as características e limites dos recursos que podem ser alocados pelo processo. ▪ Características são determinadas no momento da criação do processo, enquanto outras podem ser alteradas durante sua existência. ▪ Arquivos de Contas: São especificados os limites dos recursos que cada processo pode alocar, este arquivo é gerenciado pelo administrador de sistemas. ▪ O Contexto de Software é composto por: 1. Identificação 2. Quotas 3. Privilégios. Estrutura do Processo – Contexto de Software 1. Identificação ▪ Cada processo criado pelo sistema recebe uma identificação única, representada por um número – PID (Process IDentification). ▪ Através do PID, o S.O. e outros processos podem fazer referências a qualquer processo existente. ▪ O processo também possui a identificação do usuário (Identificação única – UID – User IDentification) ou processo que o criou. ▪ UID permite implementar um modelo de segurança, onde objetos que possuem a mesma UID podem ser acessados. Estrutura do Processo – Contexto de Software 1. Identificação Estrutura do Processo – Contexto de Software ▪ São os limites de cada recurso do sistema que um processo pode alocar. ▪ Caso uma quota seja insuficiente, o processo poderá ser executado lentamente, interrompido durante seu processamento ou mesmo não ser executado. ✔ número máximo de arquivos abertos simultaneamente; ✔ tamanho máximo de memória (principal e secundária); ✔ número máximo de operações de E/S pendentes; ✔ tamanho máximo de buffer para operações de E/S; ✔ número máximo de processos, subprocessos ou threads que podem ser criados; 2. Quotas Estrutura do Processo – Contexto de Software ▪ Definem as ações que um processo pode fazer em relação a ele mesmo, aos demais processos e ao sistema operacional. ▪ Privilégios que afetam o próprio processo permitem que suas características possam ser alteradas, como: prioridade de execução, limites de memórias; ▪ Privilégios que afetam os demais processos permitem, além da alteração de suas próprias características, alterar as de outros processos. ▪ Privilégios que afetam o sistema são os mais amplos e poderosos (root, administrator). 3. Privilégios Estrutura do Processo – Contexto de Software ▪ É a área de memória pertencente ao processo onde as instruções e os 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. ▪ Lembrando que o processo é implementado pelo sistema operacional através de uma estrutura de dados chamada Bloco de Controle de Processos (PCB). Estrutura do Processo – Espaço de Endereçamento Estrutura do Processo – Visão Geral ▪ Quando um processo é executado, ele muda de estado; ▪ O estado de um processo é definido em parte pela atividade corrente desse processo; ▪ Cada processo pode estar em um dos seguintes estados: ✔ Execução (running): é quando o processo está sendo processado pelo CPU; ✔ Pronto (ready): é quando está aguardandoapenas para ser executado, sendo que os critérios devem ser determinados pelo sistema operacional (escalonamento); ✔ Espera (wait): é quando o processo aguarda por algum evento externo ou por algum recurso para prosseguir seu processamento. Estado do Processo (Ciclo de Vida) ▪ Além dos estados citados, cada processo ainda pode estar em um dos seguintes estados: ✔ Novo: O processo está sendo criado, com isso, o SO aloca o PCB deste processo na memória principal. ✔ Finalizado: O processo terminou sua execução, neste caso, o SO desaloca o PCB deste processo da memória principal. Estado do Processo (Ciclo de Vida) ▪ Criação: Ocorre a partir do momento em que o sistema operacional adiciona um novo PCB à estrutura e aloca um espaço de endereçamento na memória para uso. ▪ Um processo pode ser criado de diversas maneiras, as três principais são: 1. Logon Interativo ✔ O usuário, por intermédio de um terminal, fornece ao sistema um nome de identificação e uma senha. Estado do Processo (Ciclo de Vida) 2. Via Linguagem de Comandos ✔ Um usuário pode, a partir do seu processo, criar novos processos por intermédio de comandos das linguagens, sendo o principal objetivo a possibilidade da execução concorrente. 3. Via Rotina do Sistema Operacional ✔ Um processo pode ser criado a partir de qualquer programa executável com o uso de rotinas do sistema operacional. Estado do Processo (Ciclo de Vida) ▪ Eliminação: Todos os recursos associados ao processo são desalocados e o PCB eliminado pelo sistema. ▪ Processos Independentes, Subprocessos e Threads ✔ São maneiras de implementar a concorrência dentro de uma aplicação, ou seja, busca-se subdividir o código em partes para trabalharem de forma cooperativa. A. Processos Independentes: Não existe vínculo do processo criado com o seu criador e a criação de um processo independente exige a alocação de um PCB (contexto de hardware, de software e espaço de endereçamento próprio). B. Subprocessos: São processos criados dentro de uma estrutura hierárquica. Tipos de Processos ✔ O processo criador é denominado processo pai enquanto o novo processo é chamado de subprocesso ou processo filho; ✔ O subprocesso pode criar outras estruturas de subprocessos; ✔ Dependência: Caso um processo pai deixe de existir, os subprocessos subordinados são automaticamente eliminados; ✔ Também possuem seu próprio PCB. ✔ Subprocessos podem compartilhar quotas com o processo pai. ▪ Processos Independentes, Subprocessos e Threads Tipos de Processos ▪ Processos Independentes, Subprocessos e Threads Tipos de Processos 3. Threads: Foi introduzido na tentativa de reduzir o tempo gasto na criação, eliminação e troca de contexto de processos nas aplicações concorrentes, bem como economizar recursos do sistema como um todo. ✔ Em ambientes multithreads, um único processo pode suportar múltiplos threads, cada qual associado a uma parte do código de aplicação. ✔ Não é necessário haver diversos processos para implementar a concorrência, pois threads compartilham o processador da mesma maneira que um processo. ▪ Processos Independentes, Subprocessos e Threads Tipos de Processos ✔ Possuem seu próprio contexto de hardware, porém compartilham o mesmo contexto de software e espaço de endereçamento. ✔ Permite que a comunicação de threads dentro de um mesmo processo seja simples e rápida. ▪ Processos Independentes, Subprocessos e Threads Tipos de Processos ▪ Processos Foreground e Background ✔ Foreground: É aquele que permite a comunicação direta do usuário com o processo durante o seu processamento. Entrada Saída ✔ Background: É aquele onde não existe a comunicação com o usuário durante o processamento. O processamento do tipo batch é realizado através deste tipo. Entrada Saída Tipos de Processos ▪ Processos PIPE ✔ É quando pode-se associar o canal de saída de um processo ao canal de entrada de um outro processo. Entrada do processo B Saída do processo A Processo A Processo B Tipos de Processos Tipos de Processos ▪ Processos CPU-Bound e I/O-Bound ✔ CPU-Bound: Quando passa a maior parte do tempo no estado de execução, ou seja, utilizando o processador; ✔ I/O-Bound: Quando passa a maior parte do tempo no estado de espera, pois realiza um elevado número de operações de E/S; CPU-Bound I/O-Bound CPU CPU E/S E/S ▪ O objetivo da multiprogramação é sempre ter processos em execução o tempo todo, para otimizar a utilização da CPU. ▪ O objetivo do compartilhamento de tempo é a alternância da CPU entre os processos, de modo que se possa interagir com cada programa enquanto são executados; ▪ Para alcançar esses objetivos, o escalonador (scheduler) de processos seleciona um processo disponível para a execução na CPU; ▪ Em um sistema de processador (e núcleo) único, nunca haverá mais de um processo em execução; ▪ Se houver mais processos, os outros terão que esperar até a CPU estar livre; Escalonamento de Processos ✔ Quando os processos entram em um sistema, eles são inseridos em uma fila, que é composta por todos os processos do sistema; ✔ O Sistema Operacional que decide qual dos processos será executado primeiro; ✔ Os processos residentes em memória principal, que estão prontos e esperando uma oportunidade para executar, são mantidos em uma lista chamada de fila de prontos; ✔ A lista de processos em espera por um dispositivo de E/S (I/O) específico é chamada de fila de dispositivo. Cada dispositivo tem a sua própria fila; ▪ Filas de Escalonamento (Scheduling): Escalonamento de Processos Escalonamento de Processos Fila de Processos Prontos CPU Pedido de I/O Fatia de Tempo Expira Cria um Processo Filho Espera por uma Interrupção Fila de I/O Filho Executa Ocorre Interrupção I/O ▪ Filas de Escalonamento (Scheduling): ▪ Utilização da CPU ✔ Manter o processador ocupado a maior parte do tempo; ✔ Balancear a utilização do processador entre os diversos processos. ▪ Imparcialidade ✔ Processo recebe sua justa parte da CPU. Escalonamento de Processos ▪ Objetivos do Escalonamento: Escalonamento de Processos ▪ Tipos de Escalonamento (Schedulers) ✔ Um processo passa por várias filas de escalonamento durante o seu tempo de vida e o SO deve selecionar um processo dessas filas de alguma forma; ✔ O processo de seleção é executado pelo escalonador (scheduler) apropriado e pode ser: Escalonamento de Processos ▪ Tipos de Escalonamento (Schedulers) Escalonamento de Processos ▪ Tipos de Escalonamento (Schedulers) ✔ Escalonamento de longo prazo: • Geralmente são submetidos mais processos do que é possível executar imediatamente; • Esses processos entram em spool em um dispositivo de armazenamento (normalmente) disco, onde são mantidos para execução posterior; • O scheduler seleciona processos nesse spool e os carrega na memória para execução; • Um exemplo desse tipo de escalonamento são os utilizados nos sistemas batch; Escalonamento de Processos ▪ Tipos de Escalonamento (Schedulers) ✔ Escalonamento de curto prazo: • Seleciona entre os processos que estão prontos para a execução e aloca a CPU para um deles; • A principal diferença entre o escalonamento de longo e curto prazo é na frequência de execução; • O schedulers de curto prazo deve selecionar um novo processo para a CPU com mais frequência; • O processo pode ser executado por apenas alguns milissegundos antes de esperar por uma solicitação de I/O; Escalonamento de Processos ▪ Tipos de Escalonamento (Schedulers) ✔ Escalonamento de médio prazo: • Às vezes, pode ser vantajoso remover processos da memória (e da disputa pela CPU) e assim reduzir o grau de multiprogramação; • Posteriormente, o processo pode ser introduzido na memória e a sua execução pode ser retomada onde parou; • Esse esquema é chamado de swapping; Escalonamento de Processos ▪ Tipos de Escalonamento (Schedulers) ✔ Escalonamento de médio prazo: • O swapping pode ser necessáriopara: 1. Melhorar a combinação de processos; 2. Uma alteração nos requisitos da memória, sobrecarga da memória disponível; Conclusão ▪ Os sistemas operacionais utilizam o conceito de processo para gerenciar as tarefas/aplicações que estão sendo executadas pelo sistema; ▪ Os processos são gerenciados pelo PCB (Bloco de Controle de Processo), que são, por sua vez, armazenados na memória principal e contém todas as informações sobre cada processo; ▪ Os processos possuem vários estados desde quando são criados, até serem finalizados. Esses estados, correspondem ao ciclo de vida dentro do sistema; ▪ O escalonamento de processos é a base para todo sistema multiprogramável, pois permite realizar a troca de contexto, permitindo o uso do processador por vários processos; ▪ Questões sobre Processos. ▪ Entrega pelo SIGAA. ❑ EXERCÍCIO Atividade 03
Compartilhar