Processos Prof. Gustavo Leitão Campus Natal Central Disciplina Programação para Ambiente de Redes Baseada na Aula do Prof. Ricardo Valentim 5/3/2010 5/3/2010 Objetivo da Aula PLANO DE AULA Processos Processos: O Modelo de Processo; Criação de Processos; Término de Processos; Hierarquias de Processos; Estados de Processos; Implementação de Processos. OBJETIVO DA AULA ● O aluno deverá ao termino da aula ter entendido conceitualmente o que são processos, e como estes funcionam nos sistemas operacionais. INTRODUÇÃO ● Um processo é um ambiente de execução que consiste em um segmento de instruções, e dois segmentos de dados (data e stack). Deve-se, entretanto, notar a diferença entre um processo e um programa: um programa nada mais é que um arquivo contendo instruções e dados utilizados para inicializar segmentos de instruções e de dados do usuário de um processo. 5/3/2010 INTRODUÇÃO O processo constitui-se de: Código executável; Pilha de Execução; Dados; Estado; Registradores; Prioridades, arquivos abertos, quotas, etc. PROCESSOS ● ● ● Todos os sistemas operacionais (SO) modernos são capazes de executar diversas tarefas ao “mesmo tempo”; Em sistemas multiprogamado a CPU salta de programa para programa executando cada um deles por dezenas ou centenas de milissegundos; Efetivamente, em um dado período de tempo a CPU executa vários programa, neste sentido o usuário tem a impressão de paralelismo. PSEUDO PARALELISMO ● ● O pseudo paralelismo é portanto o termo empregado no contexto no qual uma CPU é compartilhada por diversas aplicações; Esse termo permite contrastar com o paralelismo real (verdadeiro) de hardware dos sistema multiprocessadores; O MODELO DE PROCESSO ● ● ● ● Os software que podem executar em um computador são organizados em processos seqüenciais, ou simplesmente processos; Um processo é apenas um programa em execução; ● Ele é acompanhado dos valores atuais do contador de programa, dos registradores e das variáveis; Conceitualmente cada processo tem sua CPU virtual; ● Na realidade a CPU troca a cada instante de processo, mas é melhor tentar entender cada processo funcionando pseudo-paralelamente; Ao mecanismo de troca rápida é chamado de multiprogramação. MODELO DE PROCESSO: ESCALONADOR O ESCALONADOR seleciona qual processo deve usar a CPU a cada momento e por quanto tempo. O MODELO DE PROCESSO A) Um computador multiprogramado com 4 programas na memória; B) Quatro processos seqüencias independentes, cada um com seus controle de fluxos. – Fisicamente existe apenas um contador de programa; C) Apenas um programa está ativo por vez. O MODELO DE PROCESSO ● Nota Importante: – Com a alternância da CPU entre os processos, a taxa na qual o processo realiza sua computação não será uniforme e provavelmente não será nem reproduzível se os mesmo processos executarem novamente; – Desta forma, programados temporização. os processos considerando não devem hipóteses ser de PROCESSO E PROGRAMA ● ● ● ● Um Programa é um algoritmo expresso em uma notação adequada; O processo é a atividade desempenhada; Um Processo possui: ● Um Programa; ● Uma Entrada; ● Uma Saída; ● E um Estado. Um único processador pode ser compartilhado entre diversos processos; CRIAÇÃO DE PROCESSOS ● ● Em sistemas operacionais de proposito geral é necessário ter algum mecanismo para criar e terminar um processo durante a sua operação – isso quando for preciso; Existem 4 eventos principais que fazem com quer um um processo sejam criados: ● Início do sistema; Execução de uma chamada de sistema para criação de um ● processo, por um processo em execução; Um requisição do usuário para criar um novo processo e; ● Início de um JOB em Lote. ● CRIAÇÃO DE PROCESSOS ● Tipos de Processos: – Primeiro plano: são processo que interagem com usuário e realizam tarefas para eles; – Segundo plano (daemons): são processo que não estão associados ao um usuário particular, mas que executa uma tarefa especifica; ● ● Por exemplo: um socket que mensagens enviadas pela rede; Outro exemplo: servidor web. recebe CRIAÇÃO DE PROCESSOS ● Além dos processos criados durante a carga do sistema operacional , novos processos podem ser criados depois disso; ● ● Um processo em execução pode criar um, ou mais processos (através de chamadas de sistema) para ajudá-lo no seu trabalho; Pensar um sistema com vários processos pode ser útil para melhorar o desempenho do sistema; ● Por exemplo, um sistema que necessita ler um quantidade expressiva de dados que vem da rede e também precisa armazená-lo; – Um processo pode ler os dados entrantes e armazená-lo em uma memoria compartilhada, enquanto outro processo remove os dados e os processa. CRIAÇÃO DE PROCESSO ● Em um sistema multiprocessador, permitir que cada processo execute em uma CPU diferente também torna o trabalho mais rápido. Paralelismo Físico Paralelismo Lógico CRIAÇÃO DE PROCESSO ● ● Em sistemas interativos um usuário pode iniciar um programa digitando um comando ou clicando (duas vezes) em um ícone; Cada uma dessas ações inicia um novo processo, executando nele o programa; CRIAÇÃO DE PROCESSO ● ● No caso de um job em lote os processos criados se aplicam mais especificamente a computadores de grande porte; Nesses sistema os usuários submetem jobs em lote para o sistema; ● Quando julgar que tem recursos para executar outro job, o sistema operacional criará um novo processo e executará nele o próximo job da fila de entrada. CRIAÇÃO DE PROCESSOS ● ● ● Tecnicamente, o que ocorre para todos os casos, um novo processo é criado por um processo existente executando uma chamada de sistema de criação de processo; No UNIX existe somente uma chamada de sistema para criar um novo processo: fork; Essa chamada cria um processo clone ao processo que a chamou; FORK ● Depois de uma Fork os dois processos pai e filho tem a mesma imagem de memória, as mesmas cadeia de caracteres no ambiente, e os mesmos arquivos abertos. TÉRMINO DE PROCESSO ● Após criado, o processo executa seu trabalho, e em algum momento terminará, por alguns dos seguintes motivos: – Saída normal (voluntária); – Saída por erro (voluntária); – Erro fatal (involuntária); – Cancelamento por um outro processo (involuntária). TÉRMINO DE PROCESSO: SAÍDA NORMAL ● Na maioria das vezes, os processos terminam porque fizeram seu trabalho; ● ● Quando acaba de compilar um programa atribuído ao processo, o compilador executa uma chamada de sistema para informar ao S.O. Que o mesmo terminou; TÉRMINO DE PROCESSO: SAÍDA POR ERRO ● Um processo pode ser fechado quando encontra um erro; – Por exemplo, tentar abrir um arquivo que não existe; – Neste caso, o sistema pode exibir uma mensagem solicitando ao usuário o fechamento do programa, ou a localização de um novo arquivo; TÉRMINO DE PROCESSO: ERRO FATAL ● Erros fatais podem ser ocasionados pelo processo; ● Por exemplo: – Execução de um instrução ilegal, referência a memória inexistente, ou divisão por zero. – ● Em alguns S.O. É possível tratar determinados erros. Nesta caso, o processo é sinalizado (interrompido), em vez de ser finalizado. TÉRMINO DE PROCESSO: CANCELAMENTO POR OUTRO PROCESSO ● ● ● ● Um processo pode realizar chamada de sistema solicitando a finalização de outro processo; No Unix a chamada é kill, e no Win32 é TerminateProcess Em ambos os casos, o processo para realizar este tipo de operação deve ter autorização para isso; Em alguns sistemas, quando um processo pai morre, todos os seus morrem também; – No Windows e no Unix não funciona HIERARQUIA DE PROCESSOS ● Em alguns sistemas, quando um processo cria outro, o pai e o filho ficam de alguma maneira associados; ● O processo filho pode criar outros processos; ● Isso permite criar uma hierarquia de processos; ● ● ● No Unix, um processo, os seus filhos e todos os descendentes formam um grupo de processos; Quando um usuário envia um sinal do teclado, o sinal é entregue a todos os membros; O processo pode capturar o sinal, ignorá-lo, ou tomar uma ação predefinida – ser cancelado pelo ESTADOS DE UM PROCESSO 1. Executando: realmente utilizando a CPU naquele instante; 2. Pronto: executável, mas temporariamente parada para dar lugar a outro processo; 3. 4. Bloqueado: incapaz de executar enquanto um evento externo não ocorrer; ESTADOS DE UM PROCESSO Nota: Os dois primeiros são similares. Em ambos os casos o processo vai executar, só que no segundo não há, não há CPU disponível para ele. O terceiro estado é diferente, pois o processo não pode executar, mesmo que a CPU esteja ociosa. ESTADOS DE UM PROCESSO: TRANSIÇÃO ESTADOS DE UM PROCESSO: TRANSIÇÃO 1 ● A transição vai ocorrer quando o processo descobre que não pode prosseguir; ● ● Em alguns sistemas o processo precisa executar uma chamada de sistema: block, pause; Em outros sistemas e inclusive no Unix, os processos são automaticamente bloqueado quando ler de um pipe, ou de um arquivo especial e não encontra entrada disponível; ESTADOS DE UM PROCESSO: TRANSIÇÃO 2 ● Essa transição ocorre quando o Escalonador do S.O. decide que processo em execução já teve tempo suficiente de CPU; ● Então este processo vai para o estado de pronto e outro processo entra em estado de executando; ESTADOS DE UM PROCESSO: TRANSIÇÃO 3 ● Essa transição ocorre quando todos os processo compartilharam a CPU; ● Então de uma maneira justa, o escalonador escolhe então o primeiro processo para utilizar a CPU; – – Fazer uma leitura sobre escalonamento de processos; O escalonador tem um papel importante no desempenho do S.O. ESTADOS DE UM PROCESSO: TRANSIÇÃO 4 ● Essa transição ocorre quando acontece um evento externo, pelo qual o processo estava aguardando; – ● ● Por exemplo: uma entrada de dados; Se a CPU estive livre a transição 3 é disparada; Caso contrario, ficará esperando em estado de pronto – até que a CPU fique livre e chegue a sua vez. ESTADOS DE UM PROCESSO O escalador é a parte mais baixa de S.O. Ele trata as interrupção e o escalamento dos processos. Acima dele estão os processo sequenciais. CONTEXTO DE PROCESSO ● Contexto de Hardware: – ● Registradores: quando um processo está em execução o seu contexto está armazenado nos registradores do processador; Contexto de Software: – São especificados os limites dos recursos a serem usados pelo processo (prioridade, tamanho do buffer para operação de entrada, número máximo de arquivos abertos simultaneamente); ● ● ● Identificação; Quotas; Privilégios; CONTEXTO DE PROCESSO: IDENTIFICAÇÃO ● Cada processo cria uma identificação única (PID – Process Identification); ● ● ● Usado para fazer referências e chamadas aos processos; Também possui a identificação do usuário (UID – User Identification); Em alguns S.O. os processos podem ser identificado por um nome; CONTEXTO DE PROCESSO: COTAS ● Limite de recursos que um processo pode executar; ● Caso a cota seja insuficiente o processo pode funcionar lentamente, ser interrompido, ou até mesmo não ser executado; CONTEXTO DE PROCESSO: PRIVILÉGIOS ● Define que um processo pode fazer em relação a si mesmo, aos demais processos, e ao sistema operacional; ● Permite que características do processo possam ser alteradas durante a sua execução; ● A maioria dos S.O. tem uma conta com maiores privilégios; CONTEXTO DE UM PROCESSO ● ● Em um S.O. uma troca de contexto (também conhecido como chaveamento ou mudança de contexto) é o processo computacional de armazenar e restaurar o estado (contexto) de uma CPU de forma que múltiplo processos possam compartilhar uma única instância de CPU; É garantido que quando o contexto anterior armazenado seja restaurado, o ponto de execução volte ao mesmo estado que foi deixado durante o armazenamento. CONTEXTO DE UM PROCESSO CENÁRIOS DE USO Existem três cenários no qual a troca de contexto ocorre: 1. Multitarefa; 2. Interrupção de Hardware; 3. Troca de modo Usuário para modo Kernel; CONTEXTO DE UM PROCESSO MULTITAREFA ● ● ● Em um sistema preemptivo, o escalonador permite que cada tarefa seja executada por um determinado tempo; Se um processo não indicar explicitamente a troca de contexto (por exemplo, ao realizar uma operação de E/S), uma interrupção de tempo é disparada, e o sistema operacional troca o contexto para outro processo; Isso assegura que a CPU não é monopolizada por um processo somente. CONTEXTO DE UM PROCESSO INTERRUPÇÕES DE HARDWARE ● Isso significa que se a CPU requisita dados de um disco, por exemplo, ela não precisa esperar a leitura em disco terminar, podendo continuar alguma outra tarefa na fila de execução; ● ● Quando a leitura em disco é terminada, a CPU é interrompida e o resultado da leitura é disponibilizado; Antes de realizar a interrupção, o contexto do processo em execução é armazenado para futura restauração; CONTEXTO DE UM PROCESSO TROCA DE MODO USUÁRIO PARA MODO KERNEL ● Quando tal transição é requisitada pelo sistema operacional, uma troca de contexto não é necessária, mas dependendo da implementação isso é feito. CONTEXTO DE PROCESSO CONTEXTO DE PROCESSO ● ● ● ● ● Em uma troca de contexto, o estado do primeiro processo deve ser armazenado de alguma forma, para que quando o escalonador retorne sua execução, o estado seja antes restaurado; O estado de um processo inclui todos os registradores que o processo pode estar usando, especialmente o contador de programa, e qualquer outro dado específico do sistema operacional; A estrutura que armazena todas essas informações é chamada de bloco de controle de processo; O bloco pode ser armazenado na pilha de execução do processo na memória do kernel, ou em algum outro local específico definido pelo sistema operacional; A seguir é feita a restauração do bloco de controle do processo que irá executar. IMPLEMENTAÇÃO DE PROCESSOS ● ● Para implementar o modelo de processos, o S.O. mantém uma tabela de processos, ou blocos de controle de processos; Essa tabela contém informações sobre o estado do processo, seu contador de programa, o ponteiro da pilha, a a locação de memória, os estados de seus arquivos, etc. IMPLEMENTAÇÃO DE PROCESSOS ● ● Todas essas informações (da tabela de processo) sobre o processo devem ser salvas quando o processo passa do estado em execução para o estado pronto ou bloqueado; Isso permitirá que o processo possa ser restaurado como se nunca tivesse sido bloqueado; IMPLEMENTAÇÃO DE PROCESSOS TIPOS DE PROCESSOS ● Processos podem ser classificados em função do processamento realizado: ● ● Processos CPU-bound: processo liga a CPU , passa a maior parte do tempo em execução, utilizando a CPU ou em estado de pronto; Processos IO-bound: processo ligada a dispositivos de E/S, passa a maior parte do tem em estado de espera. Tempo ATIVIDADE: PRÓXIMA AULA ● ● Ler e fazer um resumo para discussão em sala de aula sobre algoritmos de escalonamento. Escolher um algoritmo e escrever sobre ele.