Processos Prof. Alexandre Monteiro Recife ‹#› Contatos Prof. Guilherme Alexandre Monteiro Reinaldo Apelido: Alexandre Cordel E-mail/gtalk: [email protected] [email protected] Site: http://www.alexandrecordel.com.br/fbv Celular: (81) 9801-1878 Introdução a Processos Em um sistema multiprogramado vários programas estão na RAM e são executados concorrentemente •A CPU permuta entre programas, executando cada um por dezenas/centenas de milisegundos. - Uma CPU só pode executar um programa por vez. •Mas no curso de 1’’ uma CPU pode executar diversos programas ilusão de paralelismo (pseudoparalelismo) - Verdadeiro paralelismo = sistema multiprocessado Introdução a Processos O conceito de processo é a base para a implementação de um sistema multiprogramável A gerência de um ambiente multiprogramável é função do SO, o qual controla a execução dos programas e o uso concorrente da CPU Neste contexto um programa esta associado a um processo OBS: Apesar de denominações como tarefa ou job ainda serem usadas com o mesmo sentido, o termo processo é atualmente o mais utilizado. job = tarefa = processo Introdução a Processos Vantagens da Multiprogramação: • Aumento da taxa de utilização do processador • Melhor utilização dos recursos em geral • Redução do tempo de execução de um conjunto de programas • Dá a ideia ao usuário de que ele possui uma máquina só para si. Tipos de Processo Independentes: não podem afetar a execução dos outros processos. Cooperativos: podem afetar ou ser afetados pela execução de outros processos. Vantagens: • Compartilhamento de informações • Aumento da veloc. de computação (speedup) • Modularidade • Conveniência Processos O Modelo de Processo • • • Multiprogramação de 4 programas Modelo conceitual de 4 processos sequenciais, independentes Somente um programa está ativo a cada momento 7 Introdução a Processos 4 programas na memória de um sistema multiprogramado e a abstração em processos. Introdução a Processos 4 programas na memória de um sistema multiprogramado e a abstração em processos. Introdução a Processos 4 programas na memória de um sistema multiprogramado e a abstração em processos. Sequencial x Multiprogramado Introdução a Processos Para que a troca de programa ocorra sem problemas é necessário que todas as informações do programa interrompido sejam guardadas Todas as informações importantes à execução de um programa são parte do processo, por exemplo: •seu espaço de endereçamento, •seu tempo de processador e •sua área de disco Introdução a Processos Um processo é formado por três partes •Contexto de Hardware •Contexto de Software •Espaço de endereçamento Estas três partes mantêm todas as informações necessárias à execução de um programa Quando um processador troca de processo caracteriza uma mudança de Contexto de Execução Estrutura de um Processo Contexto de Hardware Armazena o conteúdo dos registradores gerais da CPU, além dos registradores de uso específico, por exemplo: •Contador de programa (Program Counter - PC) - Armazena o endereço de memória onde se encontra a próxima instrução a ser executada •Apontador da pilha (Stack Poiter - SP) - A pilha contém valores que podem ser inteiros, reais ou endereços. - O SP aponta para o topo da pilha •Status (Estado do Processo) - Contém diversos flags que auxiliam à tomar decisões após instruções Contexto de Hardware Quando um processo está em execução, o seu contexto de HW está armazenado nos registradores da CPU. No momento em que o processo perde a utilização da CPU, o sistema salva as informações no contexto de HW do processo A troca de um processo por outro na CPU é denominada mudança de contexto. Esta consiste em salvar o conteúdo dos registradores do processo que está deixando a CPU e carregá-los com os valores referentes ao do novo processo. (1) (2) (3) (4) (5) (6) (7) Contexto de Hardware A troca de contexto resume-se em substituir o contexto de HW de um processo A pelo de outro processo B. Contexto de Software Especifica as características e limites dos recursos que podem ser alocados pelo processo, como: • O número máximo de arquivos abertos simultaneamente, • A prioridade de execução e • O tamanho do buffer para E/S Muitas informações do contexto de SW são provenientes de um arquivo do SO conhecido como arquivo de contas • Ele é gerenciado pelo Administrador do sistema e contém os limites dos recursos que cada processo pode alocar. Contexto de Software É formado por 3 grupos de informações: •Identificação •Quotas •Privilégios Contexto de Software - Identificação Grupo Identificação •Cada processo criado pelo sistema recebe uma identificação única - PID – Process Identification •Através do PID o SO e outros processos podem fazer referência a qualquer processo existente •O processo também possui a identificação do usuário ou processo que o criou (owner). - Cada usuário possui uma identificação no sistema - UID – User Identification Contexto de Software - Identificação A UID permite implementar um modelo de segurança, onde apenas os objetos (processos, arquivos, áreas de memória,...) que possuem a mesma UID do usuário (ou processo pai) podem ser acessado. Contexto de Software - Quotas Grupo Quotas •As quotas são os limites de cada recurso do sistema que um processo pode alocar •Caso uma cota seja insuficiente, o processo poderá: - Ser executado lentamente - Interrompido durante seu processamento - Ou até nem ser executado Contexto de Software - Quotas Grupo Quotas •Alguns exemplos de quotas: - 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 ser criados Contexto de Software - Privilégios Grupo Privilégios •Os privilégios ou direitos definem as ações que um processo pode fazer em relação a ele mesmo, aos demais processo e ao SO. - Alterar a prioridade de execução - Modificar os limites alocados de memória - Alteração de regras de segurança - Criação de outros processos privilegiados - Modificação de parâmetros de configuração do sistema Contexto de Software - Privilégios Grupo Privilégios •Privilégio que afetam o SO são os mais amplos e poderosos. •A maioria do SO possui uma conta de acesso SUPER privilegiada - Windows = administrator - UNIX = root Espaço de Endereçamento É a área de memória do processo onde as instruções e os dados do programa são armazenadas para execução Cada processo possui seu espaço de endereçamento Processo: Estrutura Detalhada PCB - Bloco de Controle do Processo O processo é implementado pelo SO através de uma estrutura de dados (Lista Encadeada) chamada de Bloco de Controle do Processo (Process Control Block - PCB) A partir do PCB, o SO mantém as informações sobre o contexto de HW, o contexto de SW e o espaço de endereçamento de cada processo. O PCB possui todas as informações necessárias para que a execução do processo possa ser iniciada, interrompida e retomada conforme determinação do SO, sem prejuízo para o processo. PCB - Bloco de Controle do Processo Algumas informações típicas que o PCB possui são: • Identificador de processo (pid); • Estado atual do processo; • Cópia do conteúdo do registrador contador de programa (PC – Program Counter); • Cópia do conteúdo dos demais registradores do processador; • PID do processo pai (parent process); • Ponteiro para a pilha; • Tempo em que o processo iniciou; • Tempo utilizado do processador; • Informações sobre diretório raiz e de trabalho. OBS: Os PCBs de todos os processos residem na memória principal em uma área exclusiva do SO PCB na Memória (Lista Encadeada) Address Windowing Extensions Estado do Processo Para haver o compartilhamento da CPU em um sistema multiprogramável, os processos passam por diferentes estados ao longo do seu processamento • A troca de estado ocorre em função de eventos gerados pelo próprio processo (voluntário) ou pelo SO (involuntário) Os estados em que um processo pode se encontrar variam de sistema para sistema mas, de uma maneira geral, pode-se citar: • Executando (Running) • Pronto (ready) • Bloqueado (blocked) – Também conhecido com Espera (Wait) • Terminado (exit) Estados do Processo: Executando (running) Um processo está no estado executando quando ele está sendo executado pelo processador. Em ambientes com uma única CPU, somente um processo pode estar sendo executado em um certo instante. Em ambientes com mais de uma CPU, existe a possibilidade de mais de um processo estar sendo executado ao mesmo tempo •Neste tipo de sistema um mesmo processo também pode ser executado simultaneamente em mais de uma CPU Estados do Processo: Pronto (ready) O processo está temporariamente parado para que outro processo possa ser executado. O processo encontra-se pronto para a execução, aguardando apenas a liberação do processador para que ele seja executado; Em geral existem vários processos no sistema no estado de pronto organizados em listas encadeadas; Os processos são encadeados pela sua importância/prioridade Estados do Processo: Pronto (ready) Estados do Processo: Bloqueado (blocked) – Espera (wait) Um processo está no estado bloqueado/espera quando aguarda a ocorrência de algum evento ou recurso externo para poder prosseguir, por exemplo: - O término de uma operação de E/S - Espera de uma data e/ou hora para continuar sua execução O sistema também organiza os vários processos no estado de bloqueado/espera em listas encadeadas - Em geral, os processos são separados em listas de espera associadas a cada tipo de evento Estados do Processo: Bloqueado (blocked) – Espera (wait) Processos x Programas • • • • Diferença sutil mas crucial. Um processo é um programa em execução. CPU chaveam conjuntos de processos, o que chamamos de multiprogramação. Analogia da Receita de Bolo: • A receita é o programa (algoritmos). • O cozinheiro/programador é o processador (CPU) • Os ingredientes são os dados de entrada. • O processo é a atividade desempenhada pelo cozinheiro (ler receita, buscar e misturar ingredientes, assar o bolo) 40 Processos x Programas • Agora imagine que no meio do preparo o filho do cozinheiro chegue chorando e dizendo que uma abelha o picou: • O cozinheiro registra de onde está (estado atual do processo é salvo). • Pega livro de primeiros socorros e começa a seguir as instruções. • Quando o problema da picada de abelha tiver sido tratado, o processador (cozinheiro) volta ao bolo. • Nesse ponto vemos que o processador alternou de um processo para outro de mais alta prioridade 41 Processos • Um processo constitui uma atividade composta de: • Programa • Entrada • Saída • Estado. • Um programa sendo executado duas vezes, isso conta como dois processos. Apesar do SO compartilhar o código do programa em memória. 43 Criação de Processos Principais eventos que levam à criação de processos 1. Início do sistema 2. Execução de chamada ao sistema de criação de processos 3. Solicitação do usuário para criar um novo processo 4. Início de um job em lote I. II. Processos e Foreground (primeiro plano): interagem com usuários Processos e Background (segundo plano): função específica, que não se associam com o usuários (Daemons) 44 Criação de Processos Sistemas Antigos: só o sistema podia criar novos processos Sistemas Atuais: os usuários podem criar novos processos e destruir dinamicamente SO deve fornecer chamadas para a manipulação e gerência de processos Quando um novo processo é criado o seu PCB é preparado com as informações básicas e colocado na fila de prontos. Criação de Processos Novos processo derivam do Processo Pai, sendo criada uma cópia dos endereços de memória para Processos Filhos • UNIX (fork: cria novo processo e execve: sobrepõe espaço de endereçamento) • Windows (CreateProcess) Pai e Filho tem seus Endereços de Memória distintos, principalmente para escrita. No UNIX há pouco compartilhamento, no Windows os espaços são distintos desde o início da criação do Processo Filho. 46 Criação de Processos Processos Pais criam processos Filhos, que podem criar novos processos => gerando uma árvore de processos Compartilhamento de Recursos: 1. Pais e Filhos compartilham os mesmo recursos 2. Filhos compartilham um subconjunto de recursos do Pai 3. Pais e Filhos não compartilham recurso algum Execução 1. Pai e Filhos executam concorrentemente 2. Pai aguarda até que o filho termine Espaço de endereçamento 1. Filho é uma cópia do Pai (Firefox) 2. Filho tem um novo programa carregado (Google Chrome) Árvore de Processos Windows Criação de Processos Término de Processos Condições que levam ao término de processos 1. Saída normal (voluntária) 2. Saída por erro (voluntária) 3. Erro fatal (involuntário) 4. Cancelamento por um outro processo (involuntário) 50 Término de Processos Término de processos • UNIX (exit) • Windows (ExitProcess) Todos os programas baseados em tela também suportam o término voluntário. Término do Erro Fatal: executar arquivo inexistente. Instrução Ilegal: divisão por zero, referência a memória inexistente. Término por cancelamento UNIX (Kill) e Windows (TerminateProcess) 51 Eliminação de Processo Quando um processo é eliminado seus recursos associados são desalocados e o SO elimina o PCB. Além dos 3 estados de um processo, a maioria dos SO têm mais 2 estados (um para criação e outro para eliminação) Criação (New) • O SO criou um novo PCB, porém o processo não está na lista de prontos Terminado (Exit) • Não pode ser mais executado, porém o SO ainda mantém seu PCB - O SO usa o PCB para contabilizar os recursos usados. Após isto, o processo pode deixar de existir Eliminação de Processo Pais podem terminar a execução de processos Filhos (abort) 1. Filhos excederam os recursos alocados 2. Tarefa de incumbência do Filho não é mais necessária 3. NO caso de Pai terminando •SO não permite que o Filho continue se seu pai terminou •Terminação em cascata Criação e Eliminação de Processos Hierarquias de Processos • • Pai cria um processo filho, processo filho pode criar seu próprio processo Formam uma hierarquia –UNIX chama isso de “grupo de processos” • Windows não possui o conceito de hierarquia de processos –Todos os processos são criados iguais 55 Estados de Processos (1) • Possíveis estados de processos –em execução –bloqueado –Pronto –terminado • Mostradas as transições entre os estados 56 Transições Possíveis entre Estados Estados de Processos De forma resumida existem 4 mudanças de estado que podem ocorrer a um processo: • (a) Pronto -> Execução • (b) Execução -> Bloqueado/Espera • (c) Bloqueado/Espera -> Pronto • (d) Execução -> Pronto Mudança de Estado de Processo (a) Pronto -> Execução Quando um processo é criado, o sistema o coloca em uma fila de processos prontos, onde aguardará uma oportunidade para ser executado. Cada SO tem seus próprios critérios e algoritmos para a escolha da ordem em que os processos serão executados (escalonamento). Esta transição também ocorre quando todos os processos já tiveram o seu tempo de execução (fatia de tempo) e agora é novamente a vez do primeiro processo da fila de prontos ser executado pela CPU Causada por eventos gerados pelo sistema. Isto é de forma involuntária ao processo. Estados do Processo: Pronto Mudança de Estado de Processo (b) Execução -> Bloqueado/Espera Um processo executando pode passar para o estado bloqueado por meio de eventos gerados pelo próprio processo •Ex: uma operação de E/S Um processo executando também pode passar para o estado bloqueado por eventos gerados pelo sistema •Ex: SO suspende por um período a execução de um processo. Estados do Processo: Bloqueado (blocked) – Espera (wait) Mudança de Estado de Processo (c) Bloqueado/Espera -> Pronto Um processo no estado de bloqueado/espera passa para o estado de pronto quando a operação solicitada é atendida ou o recurso esperado é concedido. Um processo no estado de bloqueado/espera sempre terá que passar pelo estado de pronto antes de poder ser novamente selecionado para execução •Não existe mudança de estado de bloqueado/espera para o estado de execução diretamente Mudança de Estado de Processo (d) Execução -> Pronto Um processo em execução pode passar para o estado de pronto quando ocorrer o término da sua fatia de tempo, por exemplo. Nesse caso, o processo volta para a fila de processos prontos, onde aguarda uma nova fatia de tempo; Causada por eventos gerados pelo sistema. Isto é de forma involuntária ao processo. OBS. Um processo em estado pronto ou bloqueado/espera pode não estar em RAM. Isto ocorre quando não existe espaço suficiente para todos os processo na RAM e parte do contexto do processo é levada para o HD. E isso leva mais tempo para executar. Conceito de Escalonamento Para cada estado existe uma Fila que contém os PCBs. Nas transações entre estados, o PCB do processo é movido entre as filas apropriadas. Razões para Suspender Processos Uma técnica conhecida como swapping retira processos da RAM, liberando espaço de memória para outro processo, e os traz de volta seguindo critérios de cada SO. Neste caso, os processos em estado bloqueado/espera e pronto podem estar residentes ou não residentes na RAM. - SO pode suspender processos: - Em background - Utilitário Suspeito de estar causando problemas Solicitação de usuário interativo Temporização: execução periódica Solicitação do processo pai. Mudanças de Estados do Processo RAM HD Estados de Processos (2) • Camada mais inferior de um SO estruturado por processos –trata interrupções, escalonamento • Acima daquela camada estão os processos sequenciais 68 Escalonamento de Processos Quando um ou mais processos estão prontos para serem executados, o sistema operacional deve decidir qual deles vai ser executado primeiro A parte do sistema operacional responsável por essa decisão é chamada escalonador, e o algoritmo usado para tal é chamado de algoritmo de escalonamento Para que um processo não execute tempo demais, praticamente todos os computadores possuem um mecanismo de relógio (clock) que causa uma interrupção, periodicamente Implementação de Processos (1) Campos da entrada de uma tabela de processos 70 Implementação de Processos (2) Esqueleto do que o nível mais baixo do SO faz quando ocorre uma interrupção 71 Processos Foreground e Background - Processos Foreground: Permite a comunicação direta do usuário com o processo durante o seu processamento •Tem como base processamento interativo (teclado, mouse e monitor) - Processos Background: Não permite a comunicação com o usuário durante o seu processamento •Tem como base processamento tipo batch (arquivos de E/S) Processos Foreground e Background Processos Foreground e Background Processo Foreground e Background – PIPE É possível associar a saída de um processo a entrada de um outro. Para isso usa-se um pipe ligando os processos. Exemplo em UNIX cat cap1 cap2 cap3 | grep linguagem cat está sendo usado para concatenar 3 arquivos grep mostrará as linhas da saída de cat com a palavra linguagem Processos Foreground e Background Processos CPU-Bound e I/O Bound Processos CPU-Bound • Passa a maior parte do tempo no estado de execução, ou seja, utilizando a CPU - Esse tipo de processamento realiza pouca E/S (aplicações científicas) Processos I/O-Bound • Passa a maior parte do seu tempo no estado de bloqueado (ou espera), pois realiza muita E/S - Esse tipo de processamento usa pouco a CPU (aplicações comerciais) Processos CPU-Bound e I/O Bound Múltiplos Processos Concorrência São formas diferentes de implementar concorrência Busca-se subdividir o código em partes que permitam o trabalho cooperativo entre estas partes São elas: •Processos Independentes •Subprocessos •Threads Processos Independentes O uso de processo independentes é a forma mais simples de implementar a concorrência em sistemas 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. A criação e eliminação de processos independentes e subprocessos demanda recursos do sistema (CPU, RAM,...). Além disso, como cada processo tem seu espaço de endereçamento, a comunicação e sincronização entre processo é pouco eficiente Subprocessos(Cooperativos) São processos criados dentro de uma estrutura hierárquica •Processo criador = processo pai •Novo processo = subprocesso ou processo filho Um subprocesso pode criar outros subprocessos Existe dependência entre o processo pai e filho •Se o pai morre, o filho morre automaticamente Também possuem seu próprio PCB Subprocessos podem compartilhar quotas com seu pai Vantagens: Compartilha informações, aumenta a velocidade computacional (speed-up), modularidade, conveniência. Subprocessos Referências Sistemas Operacionais Modernos – 3ª Edição. A. Tanenbaum, 2008. Modern Operating Systems 3 e. Prentice-Hall, 2008.