Sistemas Operacionais 04 Processos
Introdução Um sistema de computação quase sempre tem mais atividades a executar que o número de processadores disponíveis. Diferentes tarefas têm necessidades distintas de processamento, então, estratégias precisam ser definidas para que cada tarefa receba uma quantidade de processamento que atenda suas necessidades. Assim, é necessário criar métodos para multiplexar o(s) processador(es) da máquina entre as atividades presentes.
Programa x processo programa é um conjunto de uma ou mais sequências de instruções escritas para resolver um problema específico, constituindo assim uma aplicação ou utilitário (estático) processo é a execução, pelo processador, das sequências de instruções definidas em um programa para realizar seu objetivo (dinâmico).
Processo Quando um programa é executado ele se torna um processo Um processo é um programa que foi carregado na memória principal e está pronto para execução Conceito central de qualquer SO multiprogramado; Mantém a capacidade de operações (pseudo)concorrentes;
Processo Transformam uma única UCP em várias UCP s virtuais. Através de processos, um programa pode alocar recursos, compartilhar dados, trocar informações e sincronizar sua execução O SO cria um contexto de execução para rodar um programa (área da RAM a ser usada, arquivos acessados, privilégios de segurança, prioridade etc.)
Compartilhamento de Tempo Nessa solução, cada atividade que detém o processador recebe um limite de tempo de processamento, denominado quantum. Esgotado seu quantum, a tarefa em execução perde o processador e volta para uma fila de tarefas prontas, que estão na memória aguardando sua oportunidade de executar.
Compartilhamento de Tempo
Modelo de Processo Todos os softwares executados (inclusive o SO), são organizados em vários processos sequenciais; Através da multiprogramação, a CPU troca a todo momento, de um processo para outro; Processo constitui uma atividade; possui uma sequencia de instruções a serem executadas, entradas e saidas, além de um estado. Um mesmo programa pode ter vários processos
Modelo de Processo Multiprogramação de quatro programas Modelo conceitual de 4 processos sequenciais, independentes Somente um programa está ativo a cada momento
Estrutura de um Processo Um processo é composto por 3 partes: Contexto de hardware: O contexto de hardware armazena registradores de uso geral e específicos de processador Contexto de software: são especificados limites e características dos recursos alocados pelo processo junto ao SO Espaço de endereçamento: é a área da memória principal reservada ao processo, onde instruções e dados do programa são carregados para execução pelo processador
Estrutura de um processo owner (UID) nome PID registradores gerais prioridade de execução registrador PC data/ hora de criação Contexto de Software Contexto de Hardware tempo de processador registrador SP quotas privilégios Programa Espaço de Endereçamento registrador de status endereços de memória principal alocados
Criação de Processos SO s precisam de mecanismos para criar processos; Principais eventos de criação de processos: -Início do sistema; -Execução de uma chamada de sistema(por um processo em execução processos filhos); -Requisição do usuário; -Inicio de uma tarefa em lote;
Término do processo Depois de iniciado, um processo começa a executar e faz o seu trabalho. Em um dado momento ele encerrará, possíveis razões: -Saída normal (voluntária); -Saída por erro (voluntária); -Erro fatal (involuntária) -Cancelamento por outro processo(involuntário)
Hierarquias de Processos Em alguns SO s, quando um processo cria outro, ambos permanecem de certa forma associados; Subprocessos - Processos e subprocessos criados dentro de uma estrutura hierárquica; Processo pai e processo filho - Dependência entre processos pai e filho Término do processo pai elimina respectiva estrutura de subprocessos filhos
Hierarquias de Processos Processo A Processo B Processo C Processo D Processo E 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
Implementação de Processos Para implementar o modelo de processos, o SO mantém uma tabela de processos ou process control blocks (blocos de controles de processos BCP) -Contém informações sobre: o estado do processo, a alocação de memória, informações sobre o seu escalonamento e etc... - Gerência de processos realizada exclusivamente através de System Calls Criação, alteração, eliminação, suspensão, sincronização, etc ponteiros Estado do processo Nome do processo Prioridade do processo Registradores Limites de memória Lista de arquivos abertos.
Implementação de Processos Bloco de controle do processo (BCP) Todos os PCBs residem em área exclusiva da MP -Limitação desta área é parâmetro do SO, assim como o Nmáx de processos
Troca de contexto O SO também responde à interrupções; Quando o SO interrompe um processo, ele usa seu BCP para armazenar informações sobre os diversos registradores de processador; Permitem que um programa continue mais tarde, exatamente a partir do ponto onde foi interrompido; O SO gerencia as diversas filas de estados através de listas encadeadas de BCPs de processos
Gerenciamento de Filas SO gerencia filas de BCPs para os estados de pronto e bloqueado
Sinais O sinal é usado para sincronização entre processos e SO; Interrupção e exceção ocorre entre HW e SO, sinal ocorre entre SO e processos ou entre processos
Comunicação interprocessos Em ambientes multiprogramação é comum que processos distintos se comuniquem; mecanismos para a comunicação interprocessos (IPC), que podem ser: Sinais: são interrupções de software que notificam a ocorrência de um evento sem permitir a troca de dados entre processos (usado para sincronizar) Troca de mensagens: evoluiu muito, dada a utilização dos sistemas distribuídos, e inclui mecanismos de confirmação e autenticação para troca de dados, inclusive entre plataformas diferentes
Foreground x background Um processo em foreground roda em primeiro plano e permite a comunicação direta do usuário com o processo; Um processo em background roda em segundo plano e não existe a comunicação direta do usuário com o processo Normalmente, os processos em foreground são interativos e os processos em background são processos do tipo lote (batch)
Foreground x background
Estados de Processos Apesar de serem entidades independentes, as vezes precisam interagir com outros;
Estados de Processos Estado de pronto (ready) - Processo aguardando para ser executado; -Temporariamente parado para dar lugar a outro processo Estado de execução -Processo que está sendo executado pela CPU Estado Bloqueado (wait ou blocked) - Processo que aguarda algum evento externo ou liberação de recurso (ex: operação de E/S)
Estados de Processo Processos no estado de pronto ou no estado de espera podem estar residentes ou não na MP - Processos não-residentes na MP ficam armazenados na memória secundária (disco) Situação onde não há espaço suficiente na MP para todos os processos - Técnica para armazenamento de processos na memória secundária e reinserção dos mesmos na memória principal chamada de swapping
Mudanças de Estados de Processo Transição 1: ocorre quando o SO, percebe que um processo não pode prosseguir (dados externos); Transição 2: ocorre quando se esgota a fatia de tempo destinada à tarefa (ou seja, o fim do quantum); Transição 3: ocorre quando a tarefa é escolhida pelo escalonador para ser executada, dentre as demais tarefas prontas; Transição 4: quando o recurso solicitado pela tarefa se torna disponível, ela pode voltar a executar
Mudança de Estado do Processo Criação de processo se dá com adição de novo BCP e alocação dos devidos espaços de endereçamento - Estado de criação (new): SO cria novo BCP mas não coloca processo no estado de pronto por limitação no número de processos ativos Término do processo se dá com a desalocação dos recursos associados e eliminação do respectivo BCP - Estado de término (exit): SO desaloca recursos, processo fica inativo, mas PCB ainda não eliminado por razões de contabilização de uso
Mudança de Estado do Processo Diagrama de estados um processo
Exercícios 1- Qual a importância dos processos na evolução dos Sistemas Operacionais? 2- Qual a diferença entre um processo e um programa? 3- Qual a estrutura de um processo?, comente cada uma de suas partes. 4- Na sua visão qual a principal relação entre um processo e um subprocesso?
Exercícios 5- Qual a estrutura utilizada pelo SO para a implementação de processos?, comente suas principais características. 6- Qual a relação entre sinais e interrupções? Comente suas diferenças 7- Monte o gráfico representativo dos estados e transições de um processo. Explique cada um deles.
Threads é como chamamos cada fluxo de execução do sistema, seja associado a um processo ou no interior do núcleo Em muitas aplicações ocorrem várias atividades ao mesmo tempo; modelo de programação se torna mais simples se decompomos uma aplicação em múltiplos threads;
Threads (a) Três processos cada um com um thread; (b) - Um processo com três threads
Threads - Características permitem um paralelismo de granularidade mais fina (paralelismo de instruções) um processo (paralelismo de aplicações). Para que uma thread possa ser executada ela deve pertencer a algum processo são conhecidas como processos leves. Assim como os processos, as threads possuem estados durante o ciclo de vida.
Threads -Benefícios Velocidade de Criação das Threads: as threads são mais fáceis de criar e destruir que os processos pois elas não tem quaisquer recursos associados a elas. Capacidade de Resposta: a utilização do multithreading pode permitir que um programa continue executando e respondendo ao usuário mesmo se parte dele está bloqueada ou executando uma tarefa demorada. Compartilhamento de Recursos: todos os recursos alocados e utilizados pelo processo aos quais pertencem são compartilhados pelos threads
Threads -Benefícios Economia: como os threads compartilham recursos dos processos aos quais pertencem, é maise conômico criar e realizar a troca de contexto de threads. Desempenho: obtido quando há grande quantidade de computação e E/S, os threads permitem que essas atividades se sobreponham e, logo, melhore o desempenho da aplicação.
Referências MACHADO F. MAIA L Arquitetura de Sistemas Operacionais. Capítulo 5 Processos. Revisto por Sidney Lucena. MARQUES, G. Sistemas Operacionais Conceitos de Processos e threads Aula 3 (Ref. Caps. 3 e 4 do livro) MAZIERO, C. Sistemas Operacionais I Conceitos Básicos. UFFPR. Edição 2011 TANENBAUM, A. Sistemas Operacionais Modernos. 3ª Edição 2010. editora Pearson. SILBERSCHATZ, GALVIN, GAGNE. Fundamentos de Sistemas Operacionais. 8ª Edição 2011 Editora LTC