Sistemas Operacionais Gerenciador de Processos Gerenciador de processo Processos • Um processo é um programa em execução que utiliza recursos, incluindo tempo de CPU, memória, arquivos e dispositivos de E/S. • O sistema operacional é responsável pelas seguintes atividades em conjunto com o gerenciador de processos: – Criação e exclusão de processos. – Suspensão e resumo de processos. – Provisão dos mecanismos de: • Sincronização de processos • Comunicação entre processos • Multiprogramação: – Pseudoparalelismo: coleção de processos sendo executados alternadamente na CPU; Gerenciador de processo Processos • Prioridade dos processos 0 – Tempo Real – Tempo Compartilhado Tempo Real 15 15 Prioridade variável 0 Processos Processo Pai Processo Filho A Processo Pai e Filho B D E C F Threads e Processos • Um processo pode ser composto por várias threads. T1 T1 T1 T1 T1 T1 T1 T1 T1 T1 P1 T1 T1 Threads do Windows Explorer Criação do thread Criação Reinicialização 5 Pronto Terminado 3 Solicitação para execução 1 Espera Standby Término da execução 2 6 4 Execução 1) 2) 3) 4) 5) 6) Transição Preempção por prioridade Espera por um recurso do sistema Recurso do sistema disponív el Espera por um ev ento Ev ento ocorrido Preempção por tempo ou prioridade Troca de contexto Threads Estado Descrição Pronto (ready) Indica que o thread aguarda apenas por uma chance para ser executado (espera pela UCP) Standby Thread selecionado para execução e aguarda troca de contexto. Somente um processo em standby por processador Execução (running) Indica que o processo, de posse da UCP, está sendo executado Espera (waiting) Indica que o processo aguarda por algum evento (p.ex., operação de E/S) Transição (transition) Indica que o processo aguarda por algum recurso do sistema para poder ser executado. Terminado (terminated) Quando termina sua execução, o thread é colocado no estado terminado, podendo ser eliminado ou não. Criando Processos • Processos precisam ser criados e finalizados a todo o momento: – Inicialização do sistema; – Execução de uma chamada de sistema realizada por algum processo em execução; – Requisição de usuário para criar um novo processo; – Inicialização de um processo em batch – mainframes com sistemas em batch; Criando Processos • Processos específicos para usuários específicos: – Leitura de um arquivo; – Iniciar um programa (linha de comando ou um duplo clique no mouse); • Processos com funções específicas que independem de usuários – chamados de daemons: – Recepção e envio de emails; – Serviços de Impressão; Criando Processos • UNIX: – Fork • Windows: – CreateProcess Finalizando Processos • Condições: – Término normal (voluntário): • A tarefa a ser executada é finalizada; • Chamadas: exit (UNIX) e ExitProcess (Windows) – Término com erro (voluntário): • O processo sendo executado não pode ser finalizado: gcc filename.c, o arquivo filename.c não existe; Finalizando Processos – Término com erro fatal (involuntário); • Erro causado por algum bug no programa: Divisão por 0 (zero); – Término causado por algum outro processo (involuntário): • Kill (UNIX) e TerminateProcess (Windows); Escalonamento (RAM) Programa de usuário 2 Programa de usuário 1 M E M Ó R I A P R I N C I P A L Programas de usuário rodam no modo usuário Chamada de sistema (Kernel) 4 Procedimentos de serviço Rotinas do sistema operacional rodam no modo Kernel (ou modo supervisor) 3 1 2 Tabela de escalonamento Escalonamento (tempo) Escalonamento PILHA RAM Pop Pop P3 REGISTRADORES UNIDADE DE CONTRO A B C D P C I R LE Push UNIDADE LÓGICA E ARITMÉTI CA P2 Pop REGISTRADORES UNIDADE DE CONTRO A B C D P C I R LE UNIDADE Push P1 LÓGICA E ARITMÉTI CA REGISTRADORES UNIDADE DE CONTRO A B C D P C I R LE Push UNIDADE LÓGICA E ARITMÉTI CA Uso da CPU Troca de Contexto Uso de I/O Escalonamento (conceitos) • Quanto a Troca de Contexto – Preemptivo – Não preemptivo • Quanto a Atividade – I/O bound – CPU bound