Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Gerenciamento de Processos Conceitos Básicos UNIVERSIDADE FEDERAL DO AMAZONAS – UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA – ICET Período 2021.2 Prof. Dr. Rainer Xavier de Amorim raineramorim@ufam.edu.br Na aula anterior, vimos... 1) Chamada de Sistemas 2) Interrupções Conteúdo desta aula: ❖ Gerenciamento de Processos: conceitos básicos. Contextualização Contextualização ❖ A gerência de um ambiente multiprogramável é uma função exclusiva do SO, que deve controlar a execução dos diversos programas e o uso concorrente do processador. ❖ Nos sistemas multiprogramáveis, os processos são executados concorrentemente, compartilhado, entre outros recursos, a utilização do processador, da memória principal e dos dispositivos de E/S. ❖ Além disso, em sistemas com multiprocessadores, não só existe a concorrência de processos pelo uso do processador, como também a execução simultânea de processos nos diferentes processadores. Estrutura de um processo Estrutura de um Processo ❖ Processo: pode ser definido como o programa em execução, juntamente com seu contexto e suas áreas de dados, código e pilha. ❖ Ao executar um programa, o usuário tem a impressão de possuir o processador e os demais recursos de hardware de forma exclusiva. Na verdade, todos esses recursos estão sendo compartilhados. ❖ Nesse caso, o sistema operacional faz com que um processo de usuário seja executado durante certo intervalo de tempo e, após esse intervalo, o processo é interrompido para que outro possa ser executado. Estrutura de um Processo ❖ Para que essa troca de processo ocorra sem problemas, é necessário salvar as informações do processo interrompido, para que possam ser recuperadas quando aquele processo voltar a executar. ❖ Todas as informações relevantes e necessárias à execução de um programa que fazem do processo. Essas informações são chamadas de: contexto do processo. ❖ Além disso, é necessário haver áreas de memória (para armazenamento de instruções e dados) alocadas para o processo, chamado de espaço de endereçamento. Estrutura de um Processo ❖ Um exemplo é caracterizado por um programa em execução. Diferença entre processo e programa? Um processo é uma instância de um programa e possui dados de entrada, dados de saída e um estado (executando, bloqueado, pronto). Programa vs. Processo ❖ Um programa pode ter várias instâncias em execução (em diferentes processos). ❖ Algoritmo codificado. ❖ Forma como o programador vê a tarefa a ser executada. ❖ Um processo é único. ❖ Código acompanhado de dados e estado. ❖ Forma pela qual o SO vê um programa e possibilita sua execução. Processo em Primeiro Plano 1) Interage com o usuário. Exemplos: 1) Ler um arquivo. 2) Iniciar um programa (linha de comando ou um duplo clique no mouse). entrada saída Processo Foreground terminal terminal Processo em Segundo Plano Processos com funções específicas que independem de usuários – daemons: Exemplos: 1) Recepção e envio de e-mails. 2) Serviços de impressão. entrada saída Processo Background arquivo de entrada arquivo de saída Cada processo possui 1) Conjunto de instruções. 2) Espaço de endereçamento (espaço reservado para que o processo possa ler e escrever – 0 até max). 3) Contexto de hardware (valores nos registradores, como PC, ponteiro de pilha, e reg. de prop. gerais). 4) Contexto de software (atributos em geral, como lista de arquivos abertos, variáveis, etc.). Cada processo possui Espaço de Endereçamento Contexto de software Contexto de hardware programa Espaço de endereçamento 1) Texto: código executável do(s) programa(s). 2) Dados: as variáveis. 3) Pilha de execução: 1. Controla a execução do processo. 2. Empilhando chamadas a procedimentos, seus parâmetros e variáveis locais, etc. Pilha Gap Dado Texto 0000 FFFF Endereçamento (hexadecimal) . . . Cada processo possui Espaço de Endereçamento Contexto de software Contexto de hardware programa Contexto de hardware ❖ O contexto de Hardware armazena o conteúdo dos registradores gerais da CPU, além dos registradores de uso especifico, como program counter (PC), stack point (SP) e registradores de status. ❖ Quando um processo está em execução, o conteúdo de alguns registradores é alterado a cada nova instrução executada. No momento em que o processo perde a utilização da CPU, o sistema salva as informações no contexto de hardware do processo. ❖ A troca de um processo por outro no processador, comandada pelo sistema operacional, e denominada chaveamento (mudança) de contexto. Contexto de hardware 1 Programa A 2 3 4 1 – Salva registradores do processo A. 2 – Carrega registradores do Processo B 3 – Salva registradores do Processo B 4 – Carrega registradores do Processo APrograma B Cada processo possui Espaço de Endereçamento Contexto de software Contexto de hardware programa Contexto de software ❖ Armazena as informações características e limites dos recursos que podem ser alocados pelo processo, como o número máximo de arquivos abertos simultaneamente e a prioridade de execução e tamanho de buffer para operações de E/S. ❖ O contexto de software é composto por três grupos de informações sobre o processo: identificação, quotas e privilégio. Contexto de software: identificação ❖ Cada processo criado pelo sistema, recebe uma identificação única (PID- Process Identification), representada por um número. Por meio do PID, o SO e outros processos podem fazer referência a qualquer processo existente, consultando seu contexto ou alterando uma das suas características. 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. Contexto de software: quotas ❖ As quotas são os limites de cada recurso do sistema que um processo pode alocar. Alguns exemplos de quotas presentes na maioria dos sistemas operacionais são: ➢ Tamanho máximo de memória principal e secundária que o processo pode alocar; ➢ Número máximo de arquivos abertos simultaneamente; ➢ Números máximo de operações de E/S pendentes; ➢ Tamanho máximo de processo, subprocessos e threads que podem ser criados. ❖ Caso uma quota seja insuficiente, o processo poderá ser executado lentamente, interrompido durante seu processamento, ou mesmo, não ser executado. 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, a alteração de outros 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. ❖A maioria dos sistemas operacionais possui uma conta de acesso com todos esses privilégios, com o propósito de o administrador gerenciar o sistema operacional. Contexto de software: espaço de endereçamento ❖O espaço de endereçamento é a área da memória pertencente ao processo onde às 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. Estrutura de um Processo Espaço de Endereçamento Contexto de software Contextode hardware programa Endereços da memória principal alocados Nome PID Owner (UID) Prioridade de Execução Data/hora Tempo de processador Quotas Privilégios Registradores gerais Registradores PC Registradores SP Registrador de Status Estrutura de um Processo Tabela de Processos 1) Também chamada de BCP (Bloco Controle de Processo). 2) Contém informações de contexto de cada processo (ex. ponteiros de arquivos abertos, posição do próximo byte a ser lido em cada arquivo, etc.). 3) Contém informações necessárias para trazer o processo de volta, caso do SO tenha que tirá-lo de execução. 4) Contém estados de um processo em um determinado tempo. Tabela de Processos Tabela de Processos ou Blocos de Controle de Processos Campos da entrada de uma tabela de processos Tabela de Processos 1) O BCP só não guarda o conteúdo do espaço de endereçamento do processo. 2) Assim. Um processo é constituído de seu espaço de endereçamento e BCP (com seus registradores, etc.), representando uma entrada na tabela de processos. . . . Tabela de processos . . . BCP – P1 BCP – P2 BCP – Pn Bloco de Controle de Processo ❖ O sistema operacional utiliza uma estrutura de dados, chamada bloco de controle de processo (Process Control Block – PCB), para implementar os processos. ❖ A partir do PCB, o sistema operacional mantém todas as informações sobre o contexto de hardware, o contexto de software é o espaço de endereçamento de cada processo. ponteiros Estados do processo Nome do processo Prioridade do processo Registradores Limites de memória Lista de arquivos Abertos . . Bloco de Controle de Processo ❖ Os PCBs de todos os processos residem na memória principal, em uma área exclusiva do sistema operacional. ❖ O tamanho dessa área geralmente é limitada por um parâmetro do sistema operacional que permite especificar o número máximo de processos possíveis de serem suportados simultaneamente pelo sistema. ❖ Toda gerência dos processos é realizada por meio de chamadas de sistema, que realizam operações como criação, alteração, sincronização e suspensão de processos, entre outras. Características de Processo Características de Processo 1) Processos CPU-bound (orientados à CPU): ▪ Processos que utilizam muito o processador. ▪ Tempo de execução é definido pelos ciclos de processador. 2) Processos I/O-bound (orientado à E/S). ▪ Tempo de execução é definido pela duração das operações de E/S. IDEAL: existir um balanceamento entre processos. CPU-bound e I/O-bound. Situação ideal Processos de surto curto preenchem as lacunas de uso da CPU deixadas pro processos mais longos. Criação de Processos a) Inicialização do sistema b) Execução de uma chamada de sistema para criação de processo, realizada por algum processo em execução. c) Requisição de usuário para criar um novo processo (duplo clique do mouse, etc.). d) Inicialização de um processo em batch (em sistemas mainframes com proc. em batch). Processos criando outros processos 1) No UNIX com a função fork(). a) Cria clone do processo Pai: cópias exatas na memória, mas com identificadores diferentes. 2) No Windows com CreateProcess. a) Cria processo Filho, já carregando novo programa nele. Criando processo com fork() int main(int argc, char *argv[]){ int pid, num = -1; pid = fork(); printf(“%d”, num); if(pid == 0){ /* child */ num = 1; } else if(pid > 0){ /* parent */ num = 2; } printf(“%d”, num); } Finalizando Processos 1) Término normal (voluntário): a) A tarefa a ser executada é finalizada; b) Ao terminar, o processo executa uma chamada (comunicando ao SO que terminou): exit (UNIX) e ExitProcess (Windows). 2) Término por erro (voluntário): a) O processo sendo executado não pode ser finalizado. Ex.: gcc filename.c; o arquivo filename.c não existe. Finalizando Processos 1) Término com erro fatal (involuntário): a) Erro causado por algum erro no programa (bug); Ex.: Divisão por 0 (zero); Referência à memória inexistente; Execução de uma instrução ilegal. 2) Término (involuntário) causado por algum outro processo, via chamada a: a) kill (UNIX). b) TerminateProcess (Windows). Estados de Processos ❖ Em sistemas multiprogramáveis, é comum haver vários processos compartilhado a utilização do processador. Para evitar que alguns processos monopolize o processador, o sistema operacional determina quando cada processo tem direito a executar. ❖Assim, enquanto cada um processo executa, os demais aguardam em uma fila pela sua vez. Se um processo estiver executando e solicitar uma operação de E/S (através de uma chamada de sistema), ele deve liberar o processador e aguardar até que a operação seja concluída. Só então ele estará apto novamente a disputar a utilização do processador com os outros processos. Estados de Processos ❖ Para saber em que situação se encontra cada processo, o sistema operacional implementa o conceito de estados do processo. Ao longo do seu processamento, os processos passam por diferentes estados, em função de eventos gerados pelo próprio processo ou pelo sistema operacional. Estados de Processos 1) Executando: realmente usando a CPU naquele momento. 2) Bloqueado: incapaz de executar enquanto um evento externo não ocorrer. 3) Pronto: em memória, pronto para executar (ou para continuar sua execução), apenas aguardando a disponibilidade do processador. Executando (running) ❖ Considerando-se um processo está no estado de execução, quando ele está sendo processado pela CPU. Em sistemas com um único processador, somente um processo pode ser executado em um dado momento. ❖ O sistema operacional alterna (escalona) a utilização do processador entre os processos, segundo alguma política estabelecida por ele. ❖ Em sistemas com múltiplos processadores, há a possibilidade de mais de um processo estar sendo executado ao mesmo tempo. ❖ Nesse tipo de sistema, também é possível um mesmo processo ser executado simultaneamente, em mais de uma CPU (processamento paralelo) Pronto ou Apto (ready) ❖ Um processo está no estado de pronto ou apto, quando aguarda sua vez de ser executado. ❖ Em geral, existem vários processos no sistema em estado de pronto, organizados em uma fila. ❖ Por meio dessa fila, chamada de fila de apto ou fila de pronto, o sistema operacional determina a ordem e os critérios pelos quais os processos em estado de pronto devem utilizar o processador. Esse mecanismo é conhecido como escalonamento. Bloqueado ou Espera (wait) ❖Um processo no estado bloqueado ou espera aguarda por algum evento ou por algum recurso para prosseguir seu processamento. ❖Como exemplo, podemos citar um processo que aguarda o término de uma operação de entrada e saída ou espera de uma determinada data e/ou hora para continuar sua execução. Estados de criação e destruição de um processo ❖ Para um processo entrar na fila de aptos e aguardar sua vez de executar, é necessário que seja criado pelo loader do sistema operacional. ❖ Primeiro, o sistema operacional deve alocar na memória principal as áreas de código, dados e pilha. Em seguida, o programa deve ser transferido da memória secundária para memória principal nas áreas alocadas. Por último, o PCB é criado e inicializado apropriadamente, com as informações do processo. ❖ A partir desse momento, o SO já reconhece a existência do processo. Estados de criação e destruição de um processo ❖ Após criar o processo, o sistema operacional normalmente coloca na fila de aptos para que ele concorra à utilização do processador. ❖ No entanto algumas vezes, podem faltar recursos (por exemplo: números máximo de processo ativos alcançados); nesse caso, o sistema operacional manterá o processo no estado de criação, até que haja recursos para ele se tornar ativo. Bloqueado Apto Executando DestruiçãoCriação chamadas Estados de criação e destruição de um processo ❖ Quando um processo e finalizado, todos os recursosdo processo devem ser desalocados e o PCB deve ser eliminado pelo sistema operacional. O término de um processo pode ocorrer pelas razões: ➢ Termino normal de execução; ➢ Eliminação forçada por erros de proteção; ➢ Eliminação por outro processo; ➢ Eliminação forçada por ausência de recursos disponíveis no sistema. Transições entre estados ❖ 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). Basicamente existem quatro mudanças de estado que podem ocorrer a um processo: Bloqueado Apto Executando DestruiçãoCriação Ocorrencia de eventos (interrupçao) Chamda de Sistema Tempo/ voluntário Seleção Termino Transições entre estados novo pronto em execução em espera encerrado admissão escalonamento espera por evento ou I/O final de execução programa carga evento ou I/O concluído Considerações Finais Foram abordados nesta aula: Gerenciamento de Processos: conceitos básicos. Estes slides estão baseados na bibliografia: Sistemas Operacionais Modernos; Tanenbaum, A. S. 4ª Edição. Na próxima aula: Mais sobre Gerenciamento de Processos.
Compartilhar