Baixe o app para aproveitar ainda mais
Prévia do material em texto
CCT0011 – Sistemas Operacionais Aula 03 – Processos Sistemas Operacionais Revisão de Conceitos Sistema operacional é software. Um sistema operacional deve fornecer interface com o usuário e administrar recursos de hardware e software. Sistemas multitarefa permitem a concorrência entre tarefas: tarefas disputam recursos. Os mecanismos de interrupção são fundamentais para a existência de sistemas multitarefa. Sistemas Operacionais Conceito de Processos Processo é a instância de um programa em execução. É a unidade de carga e alocação de uma tarefa. Um programa é carregado para a memória onde aloca uma determinada área para código e dados. Cada processo é único em um sistema. O processo é criado quando o programa é carregado para a memória para ser executado. Um programa é carregado para a memória onde aloca uma determinada área para código e dados. Sistemas Operacionais Conceito de Processos Em geral os processos podem ser classificados em três classes: Interativos: são processos que necessitam de algum tipo de interação com o usuário. Ex.: editor de texto, planilhas eletrônicas, jogos, etc. Batch: são processos que realizam o processamento de dados de entrada produzindo um conjunto de dados de saída sem que haja a intervenção do usuário. Ex.: backups, compiladores, programas de cálculo numérico, etc. Daemons: são processos carregados pelo sistema operacional durante sua inicialização e permanece em execução até que o sistema seja finalizado. Processos Daemons ficam em espera em segundo plano até que seja requerido algum serviço. Ex.: gerenciamento de log do sistema, serviços de e-mail, etc. Sistemas Operacionais Process Control Block Bloco de Controle do Processo (PCB). O sistema operacional ao iniciar um processo, cria um bloco chamado Bloco de Controle de Processos (PCBs), também chamado de bloco de controle de tarefa. O bloco de controle de processo contém diversas informações que auxiliam o seu gerenciamento pelo sistema operacional. Sistemas Operacionais Process Control Block Dentre as informações presentes no PCB estão: Número de Identificador de Processo (PID): número pelo qual o processo é identificado pelo sistema operacional. Estado do processo: estado atual do processo (pronto, etc.). Contador de programa: indica qual instrução do processo deverá ser executada. Informações de escalonamento: indica qual a prioridade do processo na escala de prioridade de execução. Sistemas Operacionais Process Control Block Credenciais: indica quais as permissões o processo possui. Informações de gerência de memória: incluem dados tabelas de páginas e valor dos registradores de base e limite. Informações de status de I/O: incluem lista de dispositivos de I/O alocados para este processo, lista de arquivos abertos, etc. Informações de contabilização: incluem a quantidade de CPU , limites de tempo, número de jobs ou processos, etc. Sistemas Operacionais Process Table A tabela de processos fornece uma lista dos processos ativos no sistema. Sistemas Operacionais Contexto do Processo O estado representa a situação atual do processo, ou seja, os valores de suas variáveis, as instruções que está executando, os recursos em uso. Conforme a execução do processo avança, o seu estado se altera. O estado de um processo em um determinado instante é conhecido como contexto. O processo é formado por três partes: Contexto de Hardware Contexto de Software Espaço de Endereçamento Sistemas Operacionais Contexto de Hardware Características de execução. Armazena o conteúdo dos registradores de usos gerais e os específicos, tais como o Program Conter (PC), o Stack Pointer (SP) e o Registrador de Status (PSW), responsáveis pelo controle de execução do programa. O armazenamento dos registradores no contexto de hardware permite que um processo volte exatamente no estado de execução que estava quando foi interrompido. Sistemas Operacionais Contexto de Software Quando um processo é criado, o S.O. especifica os limites e características de recursos que o processo pode alocar. Estas informações são armazenadas no contexto de software e são relativas à: quantidade máxima de arquivos que o processo pode abrir simultaneamente, prioridade de execução, tamanho do buffer utilizado em operações de entrada e saída, etc. As especificações de limites de recursos são armazenadas, num arquivo do S.O. denominado arquivo de usuários. Sistemas Operacionais Contexto de Software As informações do processo são divididas em três grupos no contexto de software. Identificação – PID e UID. Quotas – Limites de cada recurso do sistema que um processo pode alocar. Privilégios – O que o processo pode o não fazer em relação ao sistema e outros processos. Sistemas Operacionais Espaço de Endereçamento Os processos são responsáveis pela execução das instruções de um programa. A área de memória onde o programa será armazenado, além do espaço para os dados utilizados por ele. Cada processo possui seu próprio espaço de endereçamento, que deve ser protegido do acesso dos demais processos. Sistemas Operacionais Estados de um Processo Processo é um programa em execução. A execução do processo ocorre de forma sequencial. A cada instante, apenas uma instrução de um processo específico é executada. Embora dois processos possam estar associados a um mesmo programa, são considerados duas sequencias de execução distintas. Obs.: Um programa por si só não é um processo. Um processo em execução sofre mudanças de estado. O estado de um processo é definido em parte por seu contador de instruções e pelos valores dos registradores do processador. Há várias formas de representar os estados de um processo, variando o detalhamento dos estados possíveis. Sistemas Operacionais Estados de um Processo • Todas as informações sobre um processo são mantidas na tabela de processos. • A tabela de processos tem campos que dizem respeito: à gerência do processo; à gerência da memória; à gerência de arquivos. • A tabela de processos possui uma entrada por processo e os campos nela contidos variam de sistema operacional para sistema operacional. Sistemas Operacionais Estados de um Processo Com base em um diagrama de cinco estados é possível o entendimentos dos estados intermediários. Podem ser classificados, de acordo com o estado. Novo Pronto Em execução Em espera ou bloqueado Terminado Sistemas Operacionais Estados de um Processo Novo Estado de admissão onde são geradas as estruturas de dados e alocado o espaço para o processo; Pronto Após admissão o processo está pronto para ser executado e aguardando a sua vez. Em execução Apenas um processo por vez pode estar neste estado. Após ser selecionado, o processo recupera seu contexto que é guardado após ter sua execução interrompida. Sistemas Operacionais Estados de um Processo Em espera ou bloqueado Processo está aguardando por um evento externo ou ser atendida alguma chamada ao S.O.. Esse bloqueio é síncrono, ou seja, ocorre sempre que determinado trecho do programa for executado. Terminado / Fim Ao terminar a execução do processo as estruturas criadas são removidas e a área alocada é liberada. Obs.: A substituição do processo em execução é denominada“troca de contexto”. Nas operações de interrupção do processo e retorno a execução seu contexto ser respectivamente, armazenado e recuperado. Sistemas Operacionais Estados de um Processo modelo de 5 estados Sistemas Operacionais Mudança de Estado Novo Pronto : Ocorre apenas na admissão pelo S.O.. Pronto Em execução: Ocorre quando o processo é selecionado para execução segundo um critério do escalonador. Em execução Pronto: Ocorre quando o processo é interrompido e novo processo será selecionado. Em execução Espera: Ocorre quando o processo deve aguardar um recurso ou evento solicitado. Espera Pronto: Ocorre quando a solicitação de recurso pelo processo é atendida. Em execução Terminado: Ocorre quando o processo finaliza sua execução ou quando acontece algum erro e o processo precisa ser abortado. Sistemas Operacionais Ciclo de vida de um Processo Principais eventos que causam a criação de um processo Inicialização do sistema Na inicialização vários processos são criados. Ex.: processo requisições de páginas Web. Execução de uma chamada de sistema de criação de processo por um processo em execução Processos pais criam processos filhos, que podem criar seus próprios processos filhos e assim por diante. Ex.: no UNIX a chamada fork. Uma requisição do usuário para criar um novo processo Em sistemas interativos, digitando um comando ou clicando em um ícone. Início de uma tarefa em lote Em computadores de grande porte, quando o mesmo possui recursos suficientes para executar a tarefa. Sistemas Operacionais Ciclo de vida de um Processo Quando um processo é criado? Quando executamos um programa. Quando um usuário acessa o sistema. Quando um processo gera um processo-filho. Etapas de criação Atribui um identificador único. Aloca uma entrada na tabela de processos. Aloca espaço para o processo. Inicializa o PCB. Coloca o processo na fila apropriada. Cria estruturas auxiliares. Sistemas Operacionais Execução de um Processo Execução concorrente de processos leva às seguintes situações: Trocas de Contexto substituição do processo em execução. Trocas de Modo de Execução troca menor e mais rápida que a troca de contexto. Sistemas Operacionais Execução de um Processo Troca de Contexto Interrupção : Reação a um evento assíncrono. Trap Associado a erro na execução de uma instrução . System Call Requisição explícita. Ações (etapas): Salva o estado do processador; Muda o estado do processo; Muda o processo para a fila apropriada; Seleciona o novo processo; Atualiza o PCB do novo processo; Modifica os mapeamentos de memória; Restaura o estado do processador. Sistemas Operacionais Execução de um Processo Troca de Modo de Execução O estado do processo corrente não é alterado. Ocorre geralmente quando o processador, ao final de um ciclo de instrução, detecta a existência de interrupção pendente. Nesses casos, o processador realiza o seguintes passos: Salva o contexto do processo em execução. Carrega o PC com o endereço inicial da rotina de interrupção. Troca o modo de execução de usuário para kernel (privilegiado) para que instruções privilegiadas do tratador de interrupções possam ser executas. Sistemas Operacionais Termino de um Processo Condições que terminam um processo Saída Normal (voluntária) Quando terminaram seu trabalho Saída por erro (voluntária) Processo descobre um erro fatal. Ex.: compilar um arquivo que não existe. Erro fatal (involuntária) Erro causado pelo processo, normalmente erro de programação. Ex.: divisão por zero, referência para memória inexistente. Cancelamento por um outro processo (involuntária) Um processo executa uma chamada de sistema dizendo ao SO para cancelar algum outro processo. Ex.: no UNIX a chamada kill. Sistemas Operacionais Escalonamento de Processos Em computadores multiprogramados, muitas vezes múltiplos processos (ou threads) competem pelo uso da CPU ao mesmo tempo. Isso ocorre sempre que dois ou mais processos estão simultaneamente no estado pronto. Nestes casos, quando o CPU se encontrar disponível, deverá ser feita uma escolha sobre qual processo executar. A parte do sistema operacional que faz esta escolha é o escalonador e o algoritmo que ele usa é o algoritmo de escalonamento. O objetivo do escalonador é atribuir processos para serem executados pelos processadores de modo a atingir parâmetros de performance, tais como: Tempo de resposta Vazão Eficiência do processados Sistemas Operacionais Escalonamento de Processos Escalonador Determina ordem em que processos alocam o processador. S.O. usa algum critério para escolher um processo apto para rodar. S.O. pode também tirar o processador de um processo que estiver rodando. Quando um processo solicita operações bloqueantes (E/S, por exemplo), sua execução fica suspensa até que o evento solicitado ocorra. Se outro processo estiver pronto para execução, o mesmo poderá passar a utilizar a CPU, maximizando a utilização da mesma, melhorando o desempenho percebido do sistema. Sistemas Operacionais Escalonamento de Processos Não preemptivo – Processo só perde o processador se terminar ou entrar em estado de espera. Preemptivo – O processo executa em fatias de tempo determinadas pelo S.O.. O escalonador pode desalocar um processo da CPU em qualquer instante de tempo Critérios para um bom escalonamento Processor utilization: Porcentagem de tempo em que o processador está ocupado (eficiência). Tempo de resposta: Tempo entre a ocorrência de um evento e a reativação do processo que o aguarda. Tempo de execução: Tempo para finalizar a execução de um determinado processo no sistema. Throughput: Número de processos concluídos por unidade de tempo. Turnaround Time: Intervalo de tempo entre a submissão de um processo e o seu término de execução. Sistemas Operacionais Escalonamento de Processos O escalonamento afeta a performance do sistema, pois determina quais processos deverão esperar e quais deverão progredir. Isso envolve o gerenciamento de filas. Escalonador de curto prazo, também conhecido como dispatcher, é executado muito frequentemente sendo responsável pela tomada de decisão de qual será o próximo processo a ser executado. Este escalonamento é executado quando da ocorrência de um evento que conduza o bloqueio do processo corrente, cria-se uma oportunidade de preempção em favor de outro processo. Exemplos desses eventos são: - Clock da CPU; - Interrupções de I/O; - Chamadas do sistema operacional; O escalonador de curto prazo procura alocar o tempo do processador de tal maneira a otimizar um ou mais aspectos do comportamento do sistema. Sistemas Operacionais Processos do Sistema Grande parte do núcleo do sistema é executada no contexto de processos, inclusive no contexto de processos de usuários, como: Auditoria e segurança; Serviços de rede; Gerencia de impressão; Gerencia de jobs batch; Comunicação de eventos; Interface de comando (shell). Sistemas Operacionais Processos no Windows Sistemas Operacionais Processos no Windows Sistemas Operacionais Processos no Linux Sistemas Operacionais Processos no Linux Sistemas Operacionais Processos e Subprocessos Um processo pode criar vários novos processos através de uma chamada ao sistema para a criação de processo, durantesua execução. O processo criador é chamado de processo pai, enquanto os novos são chamados de processos filhos. Em geral, um processo precisará de determinados recursos: • tempo de CPU, memória, arquivos, dispositivos de I/O para realizar sua tarefa. Quando um processo cria um subprocesso, esse subprocesso pode ser capaz de obter seus recursos diretamente do sistema operacional ou pode ser limitado a um subconjunto dos recursos do processo pai. O pai pode ter de dividir seus recursos entre os filhos, ou talvez possa compartilhar alguns recursos (como memória ou arquivos) entre vários filhos. Sistemas Operacionais Processos e Subprocessos Restringir um processo filho a um subconjunto dos recursos do pai evita que algum processo sobrecarregue o sistema criando subprocessos demais. Além dos vários recursos físicos e lógicos que um processo obtém quando é criado, os dados de inicialização (entrada) podem ser passados pelo processo pai para o processo filho. Quando um processo cria um novo processo, existem duas possibilidades em termos de execução: • O pai continua a executar de forma concorrente com os filhos. • O pai espera até que alguns ou todos os filhos tenham terminado. Sistemas Operacionais Processos e Subprocessos Existem também duas possibilidades em termos de espaço de endereçamento do novo processo: • O processo filho é uma duplicata do processo pai. • O processo filho tem um programa carregado nele. Um pai pode terminar a execução de um de seus filhos por vários motivos, a saber: • O filho excedeu seu uso de alguns dos recursos que foram alocados. • A tarefa atribuída ao filho não é mais exigida. • O pai está saindo, e o sistema operacional não permite que um filho continue se seu pai terminar. Sistemas Operacionais Processos Cooperativos Processos concorrentes em um sistema operacional podem ser cooperativos ou independentes. • Um processo é independente se não puder afetar ou ser afetado pelos outros processos executando no sistema. Processo que não compartilhe dados (temporários ou persistentes) com outro processo é independente. • Um processo é cooperativo se puder afetar ou ser afetado por outro processo executando no sistema. Processo que compartilhe dados com outros processos é um processo cooperativo. Sistemas Operacionais Processos Cooperativos Existem motivos para se criar ambiente que permita a cooperação entre processos: • Compartilhamento de informações: vários usuários interessados na mesma informação (arquivo compartilhado); • Velocidade de computação: executar tarefas rápido dividindo em subtarefas, e executando em paralelo com as outras. Se o computador tiver múltiplas possibilidades de processamento (tais como CPUs ou canais de I/O). • Modularidade: dividindo as funções do sistema em processos ou threads separados. • Conveniência: Várias tarefas do mesmo usuário em dado momento (editar, imprimir e compilar em paralelo). A execução concorrente que requer a cooperação entre os processos exige mecanismos para permitir que os processos se comuniquem e sincronizem suas ações. Sistemas Operacionais Tipos de Processos Os processos são classificados de acordo com o tipo de processamento que realizam. Existem dois tipos de processos: CPU-bound: são processos que utilizam de modo muito intenso o processador durante o seu ciclo de vida. A maior parte do tempo os estados destes processos são Pronto ou Em Execução . I/O-bound: este tipo de processo está mais ligado aos dispositivos de entrada/saída do que propriamente ao processador. O estado deste processo fica Em Espera durante grande parte do seu ciclo de vida devido aos longos tempos aguardando respostas das solicitações feitas aos dispositivos de entrada e saída. Sistemas Operacionais Classificação de Processos Durante o ciclo de vida de um processo são realizadas entradas e saídas de dado e elas são feitas através de canais de comunicação disponibilizados pelo processo. O processo tem no mínimo dois canais de comunicação associados a ele que permitem acesso de um processo a outros processos, comunicação com o usuário, arquivos, etc. Processo em foreground: são processos que mantém com o usuário uma ligação direta enquanto esta sendo processado. Esta ligação do processo com o usuário é feita através dos canais de comunicação associados ao teclado, mouse, monitor, etc. Processos em background: são processos que não tem ligação direta com o usuário enquanto esta sendo processado. Este tipo de processo é muito utilizado em processamentos do tipo batch. Sistemas Operacionais Reflexão e Duvidas
Compartilhar