Mapa mental
Processos e Threads

Mapa mental: Processos e Threads
Conteúdo do mapa
Processos e Threads
O conceito de processo é a base para um sistema multiprogramável, pois a gerência de processos é uma das principais funções de um sistema operacional, possibilitando aos programas alocar recursos, compartilhar dados, trocar informações e sincronizar suas execuções.
Ao executar um programa, ele deve estar sempre associado a um processo.
Estrutura do processo
- Um processo pode ser definido como o conjunto necessário de informações para que o sistema operacional implemente a concorrência de programas, ou seja, decida o que ele precisa executar primeiro
- Na execução de instruções pelo processador, ele pode acabar interrompendo uma determinada instrução para executar outra de maior prioridade, porém, sempre salvando em processos para que possa retornar para essa instrução posteriormente.
- O resultado da execução pode variar dependendo do processo em que é executado, e a falta de recursos pode impedir a execução com sucesso do programa
- Um processo é formado por três partes
- Contexto de hardware
- Armazena o conteúdo dos registradores gerais da UCP. Fundamental para a implementação dos sistemas multiprogramáveis, em que os processos alternam na utilização da UCP, podendo ser interrompidos e restaurados posteriormente
- Contexto de software
- São especificados limites e características dos recursos que podem ser alocados pelo processo. Maior parte das informações provém de um arquivo do sistema operacional, conhecido como arquivo de usuário, e é gerenciado pelo administrador do sistema
- Composto por três grupos de informações sobre processos
- Identificação
- Cada processo criado recebe uma identificação única, chamada PID, que é representada por um número, onde o sistema operacional e outros processos podem fazer referência a qualquer processo existente
- Cada processo possui também a identificação do usuário, chamada UID, que permite implementar um modelo de segurança, em que apenas objetos com a mesma UID podem ser acessados
- Quotas
- São os limites de cada recurso do sistema que um processo pode alocar. Caso uma quota seja insuficiente, o processo poderá executar mais lentamente, ser interrompido, ou até mesmo nem executar
- Privilégios
- Definem as ações que um processo pode fazer com relação a ele mesmo, aos demais processos e ao sistema operacional
- Privilégios que afetam o próprio processo permitem que suas caracteristicas possam ser alteradas, já os que afetam o sistema estão relacionados à operação e à gerência do ambiente
- Identificação
- Composto por três grupos de informações sobre processos
- São especificados limites e características dos recursos que podem ser alocados pelo processo. Maior parte das informações provém de um arquivo do sistema operacional, conhecido como arquivo de usuário, e é gerenciado pelo administrador do sistema
- Espaço de endereçamento
- É a área de memória pertencente ao processo em que instruções e dados do programa são armazenados para a execução. Cada processo possui seu próprio espaço de endereçamento e deve ser protegido do acesso de outros processos
- Contexto de hardware
- Bloco de controle de processo
- A partir do bloco de controle de processo(PCB), o sistema operacional mantem todas as informações sobre o contexo de hardware, contexto de software e endereçamento de cada processo
- Os PCBs residem na memória principal em uma área específica do sistema operacional, e o tamanho dela geralmente é delimitado por um parâmetro do sistema operacioanal
Estados do processo
- Os processos passam por diferentes estados ao longo do seu procesamento, e podem ser encontrados em três estados diferentes
- Execução(Running)
- O processo está nesse estado quando está sendo processado pela UCP. Em sistemas com uma única UCP, somente um processo pode ser executado por vez em determinado tempo
- Em sistemas com múltiplos processadores existe a possibilidade de um processo ser executado ao mesmo tempo, e também de um mesmo processo ser executado por duas ou mais UCPs
- Pronto(Ready)
- O processo está nesse estado quando aguarda para ser executado. No geral, existem vários processos no estado de pronto, organizados em listas encadeadas
- Espera(Wait)
- O processo está nesse estado quando aguarda algum evento ou recurso externo para continuar seu processamento, em alguns sistemas operacionais esse estado pode ser chamado de bloqueado(blocked)
- O sistema também organiza os processos nesse estado em listas encadeadas
- Execução(Running)
- Os processos passam por diferentes estados ao longo do seu procesamento, e podem ser encontrados em três estados diferentes
Mudanças de estado do processo
- Um processo muda de estado por conta de eventos iniciados por ele próprio ou pelo sisetema operacional. Existem quatro mudanças de estado que podem ocorrer
- Pronto -> Execução
- Após a criação do processo, o sistema o coloca em uma lista de processos no estado de pronto, onde ele aguarda para ser executado
- Execução -> Espera
- Por conta do próprio processo, ou por conta de eventos externos, ele passa do estado de execução para o estado de espera
- Espera -> Pronto
- Quando a operação solicitada é atendida, ou o recurso esperado concedido, o processo passa do estado de espera para o estado de pronto(Não existe mudança do estado de espera para o estado de execução diretamente)
- Execução -> Pronto
- Com eventos gerados pelo sistema, o processo passa do estado de execução para o estado de pronto
- Pronto -> Execução
- Um processo muda de estado por conta de eventos iniciados por ele próprio ou pelo sisetema operacional. Existem quatro mudanças de estado que podem ocorrer
Processos CPU-bound e I/O-bound
- Um processo é um CPU-bound(ligado a UCP), quando passa maior parte do tempo em estado de execução ou em estado de pronto. Estes processos realizam poucas operações de leitura e gravação
- Um processo é um I/O-bound(ligado a E/S), quando passa maior parte do tempo em espera, pois realizam muitas operações de entrada e saída de dados
Processos independentes, subprocessos e threads
- O uso de processos independentes é a maneira mais simples de implementar a concorrência em sistemas multiprogramáveis. Sua criação exige alocação de um PCB, possuindo contexto de hardware, contexo de software e espaços de endereçamento próprios
- Subprocessos são criados de forma hierárquica, sendo eles filhos de um processo-pai. Subprocessos também podem criar subprocesos, e caso o processo pai deixe de existir, seus filhos também seram eliminados. Subprocesos também possuem seu próprio PCB, e podem compartilhar suas quotas com o processo-pai
- O uso de processos e subprocessos demanda consumo de muitos recursos do sistema, e a partir disso nasceu o conceito de thread, feito para reduzir o tempo gasto em criação, eliminação e troca de contexto de processos, bem como economizar os recursos do sistema. Em um ambiente multithread, um único processo pode suportar várias threads, cada qual associada a uma parte do app
- Threads compartilham o processador do mesmo modo que um processo, e cada thread possui seu próprio contexto de hardware, mas compartilha o mesmo contexto de software e endereçamento com os outros threads do processo, e isso permite a melhor comunicação entre os threads de um mesmo processo de forma simples e rápida
- O desenvolvimento de programas que exploram os benefícios da programação multithread não é fácil, devido a problemas como a comunicação e sincronização dos threads. Existem vários modelos para implementação de threads em um sistema operacional
- Ambiente monothread
- Em ambiente monothread, um processo suporta apenas um programa em seu espaço de endereçamento. Apps criados nesse ambiente são implementados com o uso de múltiplos processos independentes ou subprocessos
- O problema nesse tipo de implementação é que o uso de processos no desenvolvimento demanda consumo de muitos recursos do sistema. Outro problema é a velocidade e dificuldade da comunicação entre os processos, fora que o compartilhamento de recursos não é tão simples
- Ambiente multithread
- Processos neste tipo de ambiente possuem ao menos um thread, mas pode compartilhar seu espaço de endereçamento com vários outros threads, e cada processo pode responder a várias solicitações concorrentemente
- O uso de multithreads proporciona uma série de benefícios
- Programas concorrentes com múltiplos threads são mais rápidos do que implementados com muitos processos
- Como os threads de um processamento possuem o mesmo espaço de endereçamento, a comunicação entre eles pode ser feito de uma forma rápida e eficiente
- Threads em um mesmo processo podem compartilhar facilmente outros recursos
- A utilização do processador, discos e outros periféricos pode ser feita de forma concorrente pelos diversos threads, fazendo melhor utilização dos recursos computacionais disponíveis
- Em algumas aplicações, a utilização de threads pode melhorar o desempenho da aplicação apenas executando tarefas em background enquanto espera operações E/S serem processadas
- Ambiente monothread
- O desenvolvimento de programas que exploram os benefícios da programação multithread não é fácil, devido a problemas como a comunicação e sincronização dos threads. Existem vários modelos para implementação de threads em um sistema operacional
- Threads compartilham o processador do mesmo modo que um processo, e cada thread possui seu próprio contexto de hardware, mas compartilha o mesmo contexto de software e endereçamento com os outros threads do processo, e isso permite a melhor comunicação entre os threads de um mesmo processo de forma simples e rápida
Informações
- Descrição
- Mapa Mental sobre Processos e Threads, criado por JOSÉ ALUISIO DOS SANTOS NETTO em 07-12-2021.
- Criado por
- JOSÉ ALUISIO DOS SANTOS NETTO
- Visualizações
- 0
- Avaliação
Mais sobre Processos e threads