Processos
Capítulo 3 – Parte 1
Processos
Definição:
• Um processo é um programa em execução, ou melhor,um ambiente onde se executa um programa.
• Um mesmo programa pode produzir resultados diferentes, em função do processo no qual ele é executado.
• Exemplo: Se um programa necessitar abrir cinco arquivos
simultaneamente, e o processo onde será executado só permitir que se abram quatro, o programa será interrompido durante a execução.
Processos
• O sistema operacional
materializa o processo através de uma estrutura chamada
Bloco de Controle de Processo (BCP).
• No BCP, o SO mantém todas as informações sobre o processo.
• O processo pode ser divido em três elementos básicos:
contexto de hardware, contexto de software e espaço de
endereçamento. Lista de Arquivos Abertos
Limites de Memória Registradores Prioridade do Processo Nome do Processo Estado do Processo Ponteiros BCP
Processos
Processos
Contexto de Hardware:
• O contexto de hardware constitui-se, basicamente, do conteúdo de
registradores: program counter (PC), stack pointer (SP) e registrador de status.
• O program counter (PC) é o registrador responsável pelo
armazenamento do endereço da próxima instrução que a CPU deverá executar. Toda vez que a CPU executa uma instrução, o PC é
atualizado com um novo endereço.
• O stack pointer (SP) é o registrador que contém o endereço de
memória do topo da pilha, que é a estrutura de dados onde o sistema mantém informações sobre tarefas que estavam sendo processadas e que tiveram que ser interrompidas por algum motivo.
Processos
Contexto de Hardware (cont.):
• O registrador de status é o responsável por armazenar informações sobre a execução do programa.
• Quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador. No momento em que o processo perde a utilização da CPU, o sistema salva suas
informações no seu contexto de hardware.
• O contexto de hardware é fundamental para a implementação dos
sistemas de tempo compartilhado (time-sharing), onde os processos se revezam na utilização do processador, podendo ser interrompidos e, posteriormente, restaurados.
Processos
• Quando um processo é interrompido para que outro processo utilize a CPU, é realizada a Troca de Contexto.
• A Troca de Contexto consiste em salvar o conteúdo dos
registradores da CPU e carregá-los com os valores referentes ao processo que esteja ganhando a utilização da CPU.
Processos
Contexto de Software:
• O contexto de software especifica características do processo que vão influir na execução do programa, por exemplo, número máximo de
arquivos abertos simultaneamente.
• O contexto de software define basicamente três grupos de informações: identificação, quotas e privilégios.
Identificação
• Cada processo tem identificação única (PID – process identification), representada por um número.
• O processo também possui uma identificação (UID – user identification) do usuário ou processo que o criou (owner).
Processos
Quotas
• São os limites de cada recurso do sistema que um processo pode alocar.
• Alguns exemplos de quotas: número máximo de arquivos abertos, tamanho máximo de memória que o processo pode alocar, número máximo de operações de E/S pendentes.
Privilégios
• Definem o que o processo pode ou não fazer em relação ao sistema e aos outros processos.
• Existem privilégios associados à segurança que permitem a um usuário a eliminar processos de outros usuários e ter acesso a arquivos que não lhe pertencem.
Processos
Espaço de Endereçamento:
• É a área de memória do processo onde o programa será executado, 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.
Mudanças de Estados de Processos
• Um processo muda de estado diversas vezes durante o seu
processamento, em função de eventos originados por ele próprio (eventos voluntários) ou pelo sistema operacional (eventos
involuntários).
• Basicamente existem 4 mudanças de estado que podem ocorrer a um processo:
• Pronto → Execução (a)
• Execução → Espera (b) • Espera → Pronto (c) • Execução → Pronto (d) Execução Espera Pronto (a) (b) (c) (d)
Mudanças de Estados de Processos
Pronto →→→→ Execução
• Quando um processo é criado, o sistema o coloca em uma lista de processos no estado de pronto, onde aguarda a oportunidade de ser executado.
Execução →→→→ Espera
• Um processo em execução passa para o estado de espera por eventos gerados pelo próprio processo, como, por exemplo, uma operação de entrada e saída.
Espera →→→→ Pronto
• Um processo no estado de espera passa para o estado de pronto quando a operação solicitada é atendida ou o recurso esperado é liberado. Um processo no estado de espera sempre precisa passar pelo estado de pronto antes de ser selecionado para execução.
Execução →→→→ Pronto
• Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema, como, por exemplo, o fim da fatia de tempo que o processo possui para sua
Tipos de Processos
CPU-bound
• Um processo é dito CPU-bound quando passa a maior parte do tempo no estado de execução, ou seja, utilizando o
processador.
I/O-bound
• Um processo é dito I/O-bound quando passa a maior parte do tempo no estado de espera, pois realiza um elevado
número de operações de entrada/saída.
• Os processos podem ser classificados de acordo com o tipo de processamento: CPU-bound, I/O bound.
Subprocesso e Thread
• Um processo pode criar outros processo de maneira hierárquica.
• Quando um processo cria outro, chamamos o processo criado de subprocesso. O
subprocesso por sua vez, pode criar outros subprocesso.
• Caso um processo deixe de existir, os subprocessos subordinados são
eliminados.
• A utilização de subprocessos permite dividir uma aplicação em partes que podem
trabalhar de forma concorrente.
Processo A
Processo B Processo C
Subprocessos e Thread
• O uso de subprocessos no desenvolvimento de aplicações
concorrentes demanda consumo de diversos recursos de sistema.
• Sempre que um novo processo é criado, o sistema deve alocar recursos (contexto de HW, contexto de SW e espaço de
endereçamento).
• Na tentativa de diminuir o tempo gasto na criação/eliminação de processos, bem como economizar recursos do sistema como um todo, foi introduzido o conceito de thread.
Subprocessos e Thread
• A grande diferença entresubprocessos e threads é em
relação ao espaço de endereçamento.
• Enquanto subprocessos
possuem, cada um espaços independentes e protegidos,
threads compartilham o mesmo espaço de
endereçamento de processo,
sem nenhuma proteção,
permitindo assim que um thread possa alterar dados de outro
Clientes Multithread
• Sistemas distribuídos que operam em redes de longa distancia precisam esconder longos tempos de propagação de mensagens entre processos para estabelecer um alto grau de transparência de distribuição.
• A maneira de ocultar latências de comunicação é iniciar a
comunicação e imediatamente prosseguir com outra atividade.
• Exemplo: Página da Web: consiste em texto, imagens, sons...
• A cada elemento, browser estabelece uma conexão TCP/IP, para ler os dados e passar ao monitor do usuário.
• Enquanto o texto esta sendo disponibilizado para o usuário, o browser continua buscando outros arquivos, como imagens.
• Vantagem: usuário não precisa esperar até que todos os componentes sejam buscados.
Clientes Multithread
• O browser está executando várias tarefas simultâneas, já que os
browsers em geral, são multithreads.
• Tão logo o principal arquivo HTML tenha sido buscado, threads separados são ativados para se encarregar de buscar as outras partes.
• Cada thread estabelece uma conexão com o servidor e traz os dados.
• Porém se a carga desse servidor estiver pesada, ou se ele for lento, nenhuma melhoria real de desempenho será notada.
Clientes Multithread
• Replicação de Servidores Web: localizados pelo mesmo site e fornece exatamente o mesmo conjunto de documentos.
• Quando entra uma requisição para uma página Web, ela é repassada para um dos servidores: normalmente utiliza-se uma estratégia de balanceamento de carga.
• Ao ser utilizado um cliente multithread, podem ser estabelecidas conexões com diferentes réplicas o que permite dados com
transferência em paralelo.
• Essa abordagem só é possível se o cliente puder manipular fluxos de dados de entradas paralelas. Threads são ideais para essa
Cliente Multithread
Servidores Web Replicados
Servidores Multithread
• Embora clientes multithreads ofereçam benefícios importantes, a principal utilização de multithreading em sistemas distribuídos é encontrada do lado do servidor.
• Servidores de arquivos normalmente esperam pela entrada de uma requisição para uma operação, executam a requisição e então
devolvem a resposta.
• Como aumentar o desempenho?
Servidores Multithread
• Funcionamento de servidores multithreads:
• Requisições são enviadas por clientes para uma porta no servidor.
• Thread despachante lê requisições que entram para uma operação de arquivo.
• Servidor escolhe um thread operário.
• Se o thread escolhido estiver suspenso, outro thread é selecionado para ser executado. Requisição despachada para um thread operário Thread despachante Thread operários
Servidores Multithread
• Característica Importante:• Se os processos forem inteiramente CPU-bound, não existe necessidade de diversos threads.
• Motivo: Como os processos tem pouca entrada e saída, e muita execução essa implementação traz aumento de complexidade sem
ganho de desempenho, já que poucas janelas de utilização da CPU
Servidores Multithread
Thread 1 Thread 1 Thread 2 Thread 2 Thread 3Thread 1 Thread 2 Thread 3 Thread 4
Thread 1 Thread 2 Thread 3 Thread 5
Thread 1
Thread 1 Thread 2 Thread 3 Thread 4
Thread 1 Thread 2 Thread 5
Thread 1 Thread 2 CPU E/S Prontos Tempo
Threads criados por processos I/O Bound
CPU E/S
Prontos
Threads criados por processos CPU Bound
Thread 3
Thread 4
Thread 4
Thread 5
Virtualização
• Threads e processos podem ser vistos como um modo de fazer diversas tarefas ao mesmo tempo.
• Permitem construir (porções de) programas que parecem ser executados simultaneamente.
• Em computadores monoprocessadores, execução simultânea é uma ilusão: única CPU, somente uma instrução de um único thread ou processo será executada por vez.
• Virtualização de recursos: “fingir” que um determinado recurso está
Virtualização
• Todo sistema distribuído de computadores oferece uma interface de programação usando software de alto nível.
• Estende ou substitui uma interface existente de modo a imitar o comportamento de um outro sistema.
Virtualização
• Softwares em nível mais alto (middleware) são mais estáveis que o hardware e sistemas de software de baixo nível: mudam mais rápido.
• A virtualização pode ajudar transportando as interfaces de softwares para novas plataformas.
• Novas plataformas são capazes de executar softwares existentes anteriormente.
Virtualização
• Em geral, sistemas de computadores oferecem 4 tipos diferentes de interfaces em 4 níveis diferentes.
3) Uma interface entre o sistema operacional e bibliotecas que consiste em chamadas de sistema operacional.
4) Uma interface entre as bibliotecas e a aplicação que consiste em chamadas de
1) Uma interface entre o hardware e a aplicação, o qual consiste em instruções de máquina.
2) Uma interface entre o hardware e o sistema
operacional, o qual consiste em instruções de máquina privilegiadas.
Modos de Virtualização: Máquina Virtual de Processo
• Aplicações desenvolvidas para um SO são executadas em outro SO.
• Possui um conjunto de instruções abstratas que deve ser utilizado para executar aplicações.
• Virtualização feita somente para um único processo.
• Uso de emuladores para imitar chamadas de sistema.
Modos de Virtualização: Monitor de Máquina Virtual
• Possui uma camada que protege o hardware completamente, mas
que fornece o conjunto de
instruções completo do hardware
• Vários sistemas operacionais diferentes executando
independente e concorrentemente na mesma plataforma.