Sistemas Operacionais
Prof. Leonardo Araújo
Processos
• Quando se fala em Sistema Operacional, se fala em processos;
• Um programa é carregado na memória, mas, para ser de fato executado, ele precisa ser “transformado” em um processo;
Processos
• É importante entender que, embora um programa seja conceitualmente muito parecido com um processo, existe sim diferença;
• Processo: constitui uma atividade dependente de um programa • Programa: é o “roteiro” da atividade (processo)
Modelo de processo
• Um processo é uma atividade, que consiste de um programa, entrada, saída e um estado de execução;
• Sem os processos não teríamos os conceitos na Ciência da computação que temos hoje;
• Os processos são a base da execução de múltiplos programas;
Modelo de processo
• Atualmente muitos programas são executados pelos usuários de forma simultânea;
• Na realidade, é executado um processo por vez;
• A CPU gerencia os processos através da técnica de escalonamento/chaveamento, dando a impressão de paralelismo;
Modelo de processo
• Cada processo recebe um tempo específico de CPU;
• Porém, para entender melhor esse conceito, assume-se que cada processo tem uma CPU virtual (pseudo) o executando;
Modelo de processo
• Para entender (ainda) melhor, vamos assumir, a princípio, que existe apenas uma CPU no sistema (esqueça multiprocessadores ou multinúcleos);
• Cada programa está alocado na memória em uma dada posição determinada por um contador de programa físico;
• Como um processo é uma abstração de um programa, cada programa tem um processo rodando na memória associado a ele (pseudoprograma);
Modelo de processo
• Logo, vários processos também estão alocados na memória, porém cada processo tem o seu contador de programa lógico;
• Quando um processo está sendo executando na CPU, seu contador de programa logico é carregado no contador de programa físico;
• Assim, quando o tempo de CPU para um processo acaba, o contador de programa físico daquele processo é carregado no contador de programa lógico;
Modelo de processo
• Ideia de multiprogramação com quatro programas, com um contador de programa
Modelo de processo
• Modelo conceitual de quatro processos suquenciais independentes
A B C D
Modelo de processo
• Somente um programa (processo) está ativo dentro do tempo de CPU alocado a cada um deles
Modelo de processo
• Todos processo tem um “ciclo de vida”;
• Basicamente os processos são criados, executados e terminados;
• Além disso, os processos podem assumir estados e pertencerem a conjuntos hierárquicos.
Criação de Processos
• Para que um processo seja de fato executado, evidentemente ele precisa ser criado;
• O responsável direto pela criação do processo é o sistema operacional;
Criação de Processos
• Em sistemas operacionais simples, como em eletrodomésticos ou eletroportáteis (ar-condicionado, forno micro-ondas), todos os processos são criados no ato da inicialização do sistema;
• Em sistemas de uso geral, como computadores pessoais, servidores e smarphones, existem, pelo menos, quatro tipos de eventos que fazem com que processos sejam criados:
• Início do sistema;
• Por meio de outro processo em execução; • Por meio do usuário do sistema;
Criação de Processos
• No início do sistema:
• Quando um sistema operacional é carregado, vários processos são iniciados;
• Existem dois tipos de processos do ponto de vista do usuário:
• Aqueles que permitem interação com o usuário (arquivo de texto, browser, planilha), ou seja, estão em primeiro plano (foreground);
Criação de Processos
• Por meio de outro processo em execução:
• Processos que já estão sedo executados podem requisitar a criação de novos processos idênticos a ele;
• Isso pode ser feito tanto pelo próprio sistema quanto pela ação de um usuário;
• Esses processos são criados a partir de chamadas de sistema (somente o sistema operacional em modo núcleo pode criá-los);
Criação de Processos
• Por meio do usuário do sistema:
• Em sistemas interativos, os usuários podem inicializar um programa por meio de comandos ou janelas (cliques);
• Essa ação gera um novo processo referente àquele programa;
• Vários processos com as mesmas características referentes ao mesmo programa podem ser criados;
Criação de Processos
• Início de uma tarefa em lote:
• Em sistema em lote, os processos são criados quando o sistema operacional “julgar” a possibilidade da execução de uma tarefa em lote;
Criação de Processos
• Em todos os casos, tecnicamente, o processo inicialmente criado que invoca a criação de outro processo é chamado de processo pai, e o processo criado por ele é chamado de processo filho;
• Cada processo (pai e filho) tem o seu espaço de endereçamento da memória;
• Normalmente os processos não compartilham recursos entre si, mesmo um sendo a cópia fiel na memória do outro;
Término de Processos
• Se um processo é iniciado, em algum momento ele pode ser
terminado;
• Algumas razões podem levar ao término dos processos,
sendo elas de ordem:
• Voluntária
• Saída normal; • Saída por erro; • Involuntária
Término de Processos
• Saída normal:
• Quando o processo encerra a sua execução dentro do previsto (sucesso), o compilador executa uma chamada ao sistema informando que o processo referente àquele programa terminou;
• Neste caso, o sistema retira da memória todos os dados referentes ao processo finalizado;
Término de Processos
• Saída por erro:
• Ainda assim, um processo em execução pode identificar algum erro (previsível);
• O mesmo dispara uma requisição de sistema solicitando o seu encerramento; • Em sistemas com janela, normalmente é perguntado ao usuário se ele deseja
Término de Processos
• Erro fatal:
• Por outro lado, quando um processo encontra um erro inesperado,
geralmente por um erro de programa, o mesmo é encerrado abruptamente – erro fatal;
• O próprio sistema operacional trata de encerrar o processo, independente do que ele esteja fazendo;
• Acesso à endereços de memória inexistentes, execução de uma instrução ilegal ou divisão por zero, causam erro fatal;
Término de Processos
• Cancelamento por outro processo:
• Há também a possibilidade de um processo solicitar o encerramento de outro processo;
• Normalmente, quando um processo pai gerou um processo filho para a execução temporária ou auxiliar de alguma tarefa;
Término de Processos
• Cancelamento por outro processo:
• O processo que solicita o encerramento de outro processo tem que ter autorização necessária para realizar tal chamada;
• Um exemplo claro é um programa em janela interativa (processo pai) que, por meio de uma ação do usuário, iniciou outra janela (processo filho) com um contador de carregamento (loading), sendo encerrada ao atingir 100%;
Hierarquia de Processos
• Sabendo-se que um processo pode criar outro processo (pai-filho), os processos podem ficar associados;
• O processo filho gerado também pode gerar novos processos filhos;
• Nos sistemas UNIX (por exemplo, o init), todos os processos filhos formam um grupo de processos;
Hierarquia de Processos
• Logo, é formada uma hierarquia de processos, onde todos estão ligados de tal forma que quando algum comando é passado (pelo sistema ou usuário), todos os processos ligados poderão receber e responder a esse comando;
• Já nos sistemas Windows, não existe o conceito de hierarquia de processos, todos são iguais;
Estados dos Processos
• É importante lembrar que um processo tem o seu próprio contador de programa (lógico);
• Também, o processo é uma atividade, que consiste de um programa, entrada, saída e um estado de execução;
• Quando um processo é executado, ele nada mais é do que uma instância de um programa;
Estados dos Processos
• O processo, para ser executado, precisa de uma entrada (letras do teclado inseridas pelo usuário ou um sinal de controle para rotação do disco, por exemplo);
• Com o término da execução do processo (assumindo uma saída normal), é gerada uma saída para quem o invocou;
Estados dos Processos
• Mas o processo ainda tem um parâmetro que indica o seu
estado, que pode ser:
• Em execução • Pronto
Estados dos Processos
• Em execução:
• Quando um processo assume o estado de execução, indica que ele realmente está usando a CPU naquele momento;
• Enquanto o processo estiver dentro do seu tempo de CPU ou com as entradas corretas, ele manterá o seu estado em execução;
• Uma vez que ele termina a execução, o processo não muda para um estado “terminado”. Normalmente ele pode ficar no estado de “pronto” ou é
Estados dos Processos
• Pronto:
• O processo está apto a ser executado;
• Contem todas as informações (entrada) necessárias para a sua execução; • Fica aguardando o escalonador de processos apontar para ele;
Estados dos Processos
• Bloqueado (em espera):
• Quando um processo não recebe a entrada, ele entra no estado de “bloqueado”;
• Neste caso, o processo está incapaz de executar enquanto não ocorrer um evento externo;
• Porém, mesmo “pronto” para executar, um processo pode ser interrompido pelo sistema operacional para dar lugar na CPU a outro processo, fora do padrão de escalonamento;
• No primeiro caso (não tem entrada), a suspensão do processo é inerente ao problema;
Resumo
• Definição de processos
• Modelo conceitual de processos
• Criação de processos
• Término de processos
• Hierarquia de processos
• Estado de processos
Na próxima aula
Referências
• TANENBAUM, Andrew S. Sistemas Operacionais Modernos. São Paulo: PRENTICE HALL.
• SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Sistemas Operacionais com Java. Rio de Janeiro: Elsevier, 2004.
• CARISSIMI, Alexandre. Sistemas Operacionais. Porto Alegre: Bookman.
Sistemas Operacionais
Prof. Leonardo Araújo