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 BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS Professor: Dr. Josivaldo Araújo josivaldo@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 lhe falte nenhuma informação necessária a sua continuação do 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); � O PCB mantém as informações necessárias para a gerencia 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, ou seja, será 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 é comandado (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á aguardando apenas 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 residindo na memória principal e estão prontos e esperando a execução são mantidos em uma lista chamada de fila de prontos; � A lista de processos em espera por um dispositivo de 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 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ário para: 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 Controlede 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;
Compartilhar