Sistemas Operativos Processos 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes ([email protected]) Processos ● A gerência de um ambiente multiprogramável é função exclusiva do sistema operativo que deve controlar a execução dos diversos programas e o uso concorrente do processador ● Para isso, um programa ao ser executado deve estar sempre associado a um processo Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos ● Assim ... ● ● ● O conceito de processo é a base para a implementação de um sistema multiprogramável O processador é projetado para executar instruções a partir do ciclo de busca e execução Na visão da camada de hardware, o processador executa instruções sem distinguir qual programa encontra-se em processamento. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos ● É de responsabilidade do sistema operacional implementar a concorrência entre programas gerenciando a alternância da execução de instruções na CPU de maneira controlada e segura ● Neste sentido, o conceito de processo tornase essencial para que os sistemas multiprogramáveis implementem a concorrência de diversos programas e atendam a múltiplos utilizadores simultaneamente Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos ● Um processo pode ser entendido inicialmente como um programa em execução, só que seu conceito é mais abrangente ● Pode-se definir mais precisamente um processo como sendo o conjunto necessário de informações para que o sistema operativo implemente a concorrência de programas Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos ● O processo também pode ser definido como sendo o ambiente onde um programa é executado ● Este ambiente, além das informações sobre a execução, possui também a quantidade de recursos do sistema que cada programa pode utilizar – O resultado da execução de um mesmo programa pode variar dependendo do processo em que é executado, ou seja, em função dos recursos que são disponibilizados para o programa Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Estrutura de um Processo ● Um processo é formado por 3 partes Estrutura de um Processo Contexto de Software Contexto de Hardware Programa Espaço de Endereçamento Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Hardware ● O contexto de hardware de um processo armazena o conteúdo dos registradores gerais da CPU, além dos registradores de uso específico, como o PC, SP (stack pointer) e o registrador de status ● Quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Hardware ● No momento em que o processo 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, podendo ser interrompidos e posteriormente restaurados Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Hardware ● O sistema operacional gerencia a troca de contexto, base para a implementação da concorrência, que consiste em salvar o conteúdo dos registradores do processo que está deixando a CPU e carregá-lo com os valores referentes ao do novo processo que será executado ● Esta operação se resume em substituir o contexto de hardware de um processo pelo outro Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Hardware Sistema Operativo Processo A Processo B Salva o conteúdo dos registradores do Processo A Carrega o conteúdo dos registradores do Processo B Salva o conteúdo dos registradores do Processo B Carrega o conteúdo dos registradores do Processo A Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● No contexto de software de um processo são especificados limites e características dos recursos que podem ser alocados pelo processo ● Muitas destas características são determinadas no momento da criação do processo, enquanto outras podem ser alteradas durante sua existência – A maior parte das informações do contexto de software do processo provém de um arquivo do sistema operacional, conhecido como arquivo de usuários Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Neste arquivo são especificados os limites dos recursos que cada processo pode alocar, sendo gerenciado pelo administrador do sistema. ● O contexto de software é composto por três grupos de informações sobre o processo: identificação, quotas e privilégios. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Identificação. ● ● Cada processo criado pelo sistema recebe um identificação única (PID – Process Identification) representada por um número. Através do PID, o sistema operacional e outros processos podem fazer referência a qualquer processo existente, consultando o seu contexto ou alterando uma de suas características. – Alguns sistemas, além do PID, identificam o processo através de um nome Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Identificação. ● ● Cada processo criado pelo sistema recebe um identificação única (PID – Process Identification) representada por um número. Através do PID, o sistema operacional e outros processos podem fazer referência a qualquer processo existente, consultando o seu contexto ou alterando uma de suas características. – Alguns sistemas, além do PID, identificam o processo através de um nome Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Identificação. ● ● O processo também possui a identificação do usuário ou o 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 podem ser acessados. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Quotas. ● ● As quotas 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. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Quotas. ● exemplos de quotas presentes na maioria dos sistemas operacionais 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; – Tamanho máximo do buffer para operações de E/S; – Número máximo de processos, subprocessos e threads que podem criar; – Espaço de disco disponível Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Privilégios. ● Os privilégios ou direitos 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 alocados na memória principal e secundária, etc. ● Já os privilégios que afetam os demais processos permitem, além da alteração de suas próprias características, alterar as de outros processos. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Privilégios. ● Privilégios que afetam o sistema são os mais amplos e poderosos, pois estão relacionados à operação e à gerência do ambiente, como a desativação do sistema, alteração de regras de segurança, criação de outros processos privilegiados, modificação de parâmetros de configuração do sistema, entre outros. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software ● Privilégios. ● A maioria dos SOs disponibiliza uma conta de acesso com todos estes privilégios disponíveis, com o propósito de o administrador gerenciar o sistema operacional. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Espaço de Endereçamento ● O 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. Analisemos a figura ... Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos – Contexto de Software nome registradores gerais PID dono (UID) registrador PC prioridade de execução data/hora de criação Contexto de Software Contexto de Hardware registrador SP tempo de processador privilégios Programa registrador de status Espaço de Endereçamento Endereços de memória principal alocados Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> PCB - Blocos de Controle Processo ● Estrutura pela qual o processo é implementado no sistema operativo ● ● A partir do PCB, o sistema operacional mantém todas as informações sobre o contexto de hardware, contexto de software e 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 Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> PCB - Blocos de Controle Processo ● O tamanho desta área, geralmente é limitado por um parâmetro do sistema operacional 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 rotinas do sistema operacional que realizam operações como criação, alteração de características, visualização, eliminação, sincronização, suspensão de processos, dentre outras Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> PCB - Blocos de Controle Processo PCB Ponteiros Estado do processo Nome do processo Prioridade do processo Registradores Limites de memória Lista de arquivos abertos Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Estado dos Processos ● Em um sistema multiprogramável, um processo não deve alocar exclusivamente a CPU, de forma que exista um compartilhamento no uso do processador. ● Os processos passam por diferentes estados ao longo do seu processamento, em função de eventos gerados pelo sistema operacional ou pelo próprio processo. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Estado dos Processos ● ● ● Um processo ativo pode encontrar-se em três diferentes estados (depende do SO): Execução (running). Um processo é dito no estado de execução quando está sendo processado pela CPU. Em sistema com apenas uma CPU, somente um processo pode estar sendo executado em um dado instante de tempo. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Estado dos Processos ● ● Os processos se alternam na utilização do processador seguindo uma política estabelecida pelo sistema operacional. Em sistemas com múltiplos processadores existe a possibilidade de mais de um processo ser executado ao mesmo tempo. Também é possível um mesmo processo ser executado simultaneamente em mais de uma CPU. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Estado dos Processos ● ● Pronto (ready) - Um processo está no estado de pronto quando aguarda apenas para ser executado. O sistema operacional é responsável por determinar a ordem e os critérios pelos quais os processos em estado de pronto devem fazer uso do processador. Este mecanismo é conhecido como escalonamento. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Estado dos Processos ● ● Em geral existem vários processos no sistema no estado de pronto organizados em listas encadeadas. Os processos devem estar ordenados pela sua importância, permitindo que processos mais prioritários sejam selecionados primeiramente para execução. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Estado dos Processos ● ● ● O sistema organiza os vários processos no estado de espera também em listas encadeadas. Em geral, os processos são separados em listas de espera associadas a cada tipo de evento. Nesse caso, quando um evento acontece, todos os processos da lista associada ao evento são transferidos para o estado de pronto. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Estado dos Processos ● ● Espera (wait) - Um processo no estado de espera aguarda por algum evento externo ou por algum recurso para prosseguir seu processamento. Como exemplo, podemos citar o término de uma operação de E/S ou espera de uma determinada data e/ou hora para continuar sua execução. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados ● Um processo muda de estado durante seu processamento em função de eventos originados por ele próprio (eventos voluntários) ou pelo SO (eventos involuntários). Abaixo temos as possíveis transições que um processo pode sofrer. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Execução Término Espera Pronto Criação Residente na MP Não Residente na MP Espera Sistemas Operativos [2011/12] Pronto - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Pronto Residente na MP Criação Execução Término Pronto Residente na MP Execução Execução Pronto Residente na MP Execução Espera Residente na MP Espera Residente na MP Pronto Residente na MP Espera Residente na MP Espera não Residente na MP Espera não Residente na MP Pronto não Residente na MP Pronto não Residente na MP Pronto Residente na MP Pronto Residente na MP Sistemas Operativos [2011/12] Pronto não Residente na MP - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Criação ● ● Pronto Residente na MP A criação de um processo ocorre a partir do momento em que o sistema operacional 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 sistema operacional já reconhece a existência do processo, podendo gerenciá-lo e associar programas ao seu contexto para serem executados. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Execução ● Término Na eliminação de um processo, o processo é encaminhado ao estado de Término e em seguida todos os seus recursos são desalocados e o PCB eliminado pelo Sistema Operacional. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Pronto Residente na MP ● Execução Após a criação de um processo, o sistema o coloca em uma lista de processos no estado de pronto, onde aguarda por uma oportunidade para ser executado. ● Cada Sistema Operacional tem seus próprios critérios e algoritmos para a escolha da ordem em que os processos serão executados (política de escalonamento) Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Execução ● Pronto Residente na MP Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema, como término da fatia de tempo que o processo possui para sua execução. ● Nesse caso, o processo volta para a fila de pronto onde aguarda por uma nova oportunidade para continuar seu processamento. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Espera Residente na MP ● Pronto Residente na MP Um processo no estado de espera passa para o estado de pronto quando a operação solicitada é atendida ou o recurso esperado é concedido. ● Um processo no estado de espera sempre terá de passar pelo estado de pronto antes de poder ser novamente selecionado para execução. – Não existe a mudança do estado de espera para o estado de execução diretamente. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Espera Residente na MP ● Espera não Residente na MP Quando não existe espaço suficiente na memória principal para carregar um novo processo ou para aumentar a memória de um determinado processo, o SO envia algum processo do estado de espera para o disco em um mecanismo denominado Swap out. ● preferência aos processos no estado de espera porque normalmente o tempo de permanência neste estado é longo. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Espera não Residente na MP ● Pronto não Residente na MP Esta transição é a mesma apresentada para a situação de residente na memória principal. ● A única diferença é que como o processo está originariamente fora da memória principal, ele mudará de estado, indo para pronto, mas permanecendo fora da memória principal. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Diagrama de Transição de Estados Pronto não Residente na MP ● Pronto Residente na MP Quando o sistema percebe que já está chegando a vez deste processo ser executado, ele realiza a transferência do disco para a MP no procedimento chamado de Swap in. ● Se não houver memória principal disponível para receber o processo, um outro será retirado para liberar memória e então será feita a transferência. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos Independentes, Subprocessos e Threads ● ● Processos independentes, subprocessos e threads são maneiras diferentes de implementar a concorrência dentro de uma aplicação. Nesse caso, busca-se subdividir o código em partes para trabalharem de forma cooperativa. ● Exemplo: Considere uma base de dados com produtos de uma grande loja, onde vendedores frequentemente fazem consultas. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos Independentes, Subprocessos e Threads ● ● Neste caso, a concorrência na aplicação proporciona um tempo de espera menor entre as consultas, melhorando o desempenho da aplicação e beneficiando os utilizadores. O uso de processos independentes é a maneira mais simples de implementar a concorrência em sistema multiprogramáveis. ● ● Neste caso, 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 , possuindo contextos de hardware, contextos de software e espaço de endereçamento próprios. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos Independentes, Subprocessos e Threads • A seguir temos um exemplo de processos independentes Processo D Processo A Processo E Processos Independentes Processo C Processo B Subprocessos Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos Independentes, Subprocessos e Threads ● ● ● ● Caso um processo pai deixe de existir, os subprocessos subordinados são automaticamente eliminados. De modo semelhante aos processos independentes, subprocessos possuem seu próprio PCB. Além da dependência hierárquica entre processos e subprocessos, uma outra característica neste tipo de implementação é que subprocessos podem compartilhar quotas com o processo pai. Neste caso, quando um subprocesso é criado o processo-pai cede parte de suas quotas ao processofilho. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos Independentes, Subprocessos e Threads ● ● ● ● Subprocessos são processos criados dentro de uma estrutura hierárquica. Nesse modo o processo criador é denominado processo-pai, enquanto o novo processo é chamado de subprocesso ou processo-filho. O subprocesso, por sua vez, pode criar outras estruturas de subprocessos. Uma característica desta implementação é a dependência existente entre o processo criador e o subprocesso. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos Independentes, Subprocessos e Threads • A seguir temos um exemplo de subprocessos. Processo A Processo C Processo B Processo E Processo D SubProcessos Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos Independentes, Subprocessos e Threads ● ● ● ● O uso de processos independentes e subprocessos no desenvolvimento de aplicações concorrentes demanda consumo de diversos recursos do sistema. Sempre que um novo processo é criado, o sistema deve alocar recursos (contexto de hardware, contexto de software e espaço de endereçamento), consumindo tempo de CPU neste trabalho. No momento do término dos processos, o sistema operacional também dispensa tempo para desalocar recursos previamente alocados. Outro problema é a comunicação e sincronização entre processos consideradas pouco eficientes, visto que cada processo possui seu próprio espaço de endereçamento. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]> Processos Independentes, Subprocessos e Threads ● ● ● O uso de processos independentes e subprocessos no desenvolvimento de aplicações concorrentes demanda consumo de diversos recursos do sistema. Sempre que um novo processo é criado, o sistema deve alocar recursos (contexto de hardware, contexto de software e espaço de endereçamento), consumindo tempo de CPU neste trabalho. No momento do término dos processos, o sistema operacional também dispensa tempo para desalocar recursos previamente alocados. Sistemas Operativos [2011/12] - Eng.º Anilton Silva Fernandes <[email protected]>