Sistemas Operacionais Abertos Prof. MSc. André Yoshimi Kusumoto andrekusumoto.unip@gmail.com
Gerência de Processos Componentes do Sistema Um programa não faz nada a não ser que suas instruções sejam executadas por uma CPU Um processo precisa de determinados recursos incluindo tempo de CPU, memória, arquivos e dispositivos de I/O para realizar sua tarefa. Esses recursos são dados ao processo quando ele é criado ou alocados a ele durante sua execução. Um programa por si só não é um processo. Um programa é uma entidade passiva, como o conteúdo de um arquivo armazenado em disco, enquanto um processo é uma entidade ativa, com um contador de programa especificando a próxima instrução a ser executada. Um processo é a unidade de trabalho em um sistema. Um sistema desse tipo consiste em uma coleção de processos, alguns dos quais são processos de sistema operacional e o resto são processos de usuário. 2/13
Processos Os primeiros sistemas de computação só permitiam que um programa fosse executado de cada vez. Conceito de Processo Um sistema em batch executa jobs, enquanto um sistema de tempo compartilhado executa programas de usuários ou tarefas. Os termos job e processo são usados indistintamente, apesar do termo processo ser o mais preferido. O processo Informalmente, um processo é um programa em execução. Um programa por si só não é um processo; um programa é uma 3/12
Novo: o processo está sendo criado Em execução: as instruções estão sendo executadas. Em espera: o processo está esperando a ocorrência de algum evento (como conclusão de operação de I/O). Pronto: o processo está esperando para ser atribuído a um processador. Encerrado: o processo terminou sua execução. 4/12 Processos Estado do processo À medida que o processo executa, ele muda de estado. O estado de um processo é definido em parte pela atividade atual desse processo. Cada processo pode estar em um dos seguintes estados:
Processos Estado do processo 5/12
Processos Bloco de controle de processo Cada processo é representado no sistema operacional por um bloco de controle de processo (PCB process control block), também chamado de bloco de controle de ponteiro tarefa. O PCB serve simplesmente como repositório número do processo contador do programa de informações que podem variar de processo a processo. registradores estado do processo limites de memória lista de arquivos abertos 6/12
Processos Threads O modelo de processo discutido até agora considerava implicitamente que um processo é um programa que realiza um único fluxo de execução. Muitos sistemas operacionais modernos estenderam o conceito de processo para permitir que um processo tenha múltiplos fluxos de execução, ou threads. 7/12
Filas de escalonamento À medida que os processos entram no sistema, são colocadas em uma fila de jobs. Essa fila consiste em todos os processos do sistema. Escalonadores Um processo migra entre várias filas de escalonamento ao 8/12 Escalonamento de processos O objetivo da multiprogramação é ter processos em execução o tempo todo, para maximizar a utilização de CPU. O objetivo do tempo compartilhado é alternar a CPU entre processos de forma tão frequente que os usuários possam interagir com cada programa durante sua execução.
Escalonadores A principal distinção entre esses dois escalonadores é a frequência de sua execução. O escalonador de curto prazo deve selecionar um novo processo para a CPU com frequência O escalonador de longo prazo, por outro lado, executa com muito menos frequência Pode haver um intervalo de minutos entre a criação de novos processos no sistema. É importante que o escalonador de longo prazo faça uma seleção cuidadosa. Em geral, os processos podem ser descritos como limitados por I/O ou limitador pela CPU. Um processo limitado por I/O passa mais tempo realizando operações de I/O do que efetuando cálculos. Um processo limitado pela CPU, por outro lado, gera pedidos de I/O com pouca freqüência, usando mais o 9/12 Escalonamento de processos
Escalonamento de processos Troca de Contexto Alternar a CPU para outro processo requer salvar o estado do processo antigo e carregar o estado salvo do novo processo. Essa tarefa é chamada de troca de contexto. O contexto de um processo é representado no PCB de um processo Quando ocorre uma troca de contexto, o kernel salva o contexto do processo antigo em seu PCB e carrega o contexto salvo do novo processo escolhido para execução. O tempo de troca de contexto é puro overhead, já que o sistema não efetua trabalho útil durante o processo de troca. 10/12
Conceitos Básicos Escalonamento de CPU O objetivo da multiprogramação é ter sempre algum processo em execução para maximizar a utilização de CPU. Para um sistema uniprocessador, ou monoprocessado, nunca haverá mais de um processo em execução. A idéia da multiprogramação é relativamente simples. Um processo é executado até ter de esperar, geralmente pela operação de I/O. Em um sistema de computação simples, a CPU ficaria ociosa. Todo esse tempo de espera é perdido; nenhum trabalho útil é realizado. Com a multiprogramação, esse tempo é usado de forma produtiva. Vários processos são mantidos na memória ao mesmo tempo. Quando um processo precisa esperar, o sistema operacional tira a CPU do processo e passa para outro processo. 11/7
Ciclo de surtos de CPU e I/O A execução de um processo consiste em um ciclo de execução de CPU e espera de I/O. Os processos alternam entre esses dois estados. A execução de um processo começa com um surto de CPU. A isso se segue um surto de I/O que por sua vez, é seguido por outro surto de CPU, depois outro surto de I/O e assim por diante. Um programa limitado por I/O geralmente terá muitos surtos de CPU curtos. Um programa limitado pela CPU, poderá ter alguns surtos de CPU longos. 12/7
Escalonador de CPU Sempre que a CPU fica ociosa, o sistema operacional deverá escolher um dos processos para execução da fila de processos prontos. O processo de seleção é executado pelo escalonador de curto prazo. O escalonador seleciona dentre os processos na memória aqueles que estão prontos para executar e aloca a CPU a um deles. 13/7
Critérios de Escalonamento Muitos critérios foram sugeridos para comparar os algoritmos de escalonamento de CPU Utilização de CPU: A CPU deverá ficar o mais ocupado possível. A utilização da CPU pode variar de 0 a 100%. Em um sistema real, deverá variar de 40% (para um sistema não muito carregado) a 90% (para sistemas muito utilizados). Maximizar Produtividade (Throughput): Uma medida de trabalho é o número de processos completados por unidade de tempo. Maximizar Tempo de Processamento (Turnaround): quantidade de tempo necessária para executar um determinado processo. Minimizar Tempo de espera: O tempo de espera é a soma dos períodos gastos esperando na fila de processos prontos. Minimizar Tempo de resposta: Tempo de submissão de um pedido até a primeira resposta a ser produzida. Minimizar 14/7
Sistemas de tempo real crítico Escalonamento de Tempo Real São necessários para completar uma tarefa crítica dentro de um período garantido. Neste caso, o escalonador admite o processo, garantindo que ele concluirá no prazo, ou rejeita o pedido como sendo impossível. Essa garantia, feita mediante reserva de recurso, exige que o escalonador saiba exatamente quanto tempo leva para realizar cada tipo de função do sistema operacional. Sistemas de tempo real não-crítico São menos restritivos. Requer que os processos críticos recebam prioridade em relação a outros menos favorecidos. Embora isso possa causar alocação injusta de recursos e resultar em atrasos, ou mesmo starvation, para alguns processos, é pelo menos possível de alcançar. 15/7