sistemas operacionais - amazon simple storage service operacionais processos e threads . sumário 1....
Post on 10-Dec-2018
213 Views
Preview:
TRANSCRIPT
Sumário
1. Introdução
2. Estrutura do Processo
1. Contexto de Hardware
2. Contexto de Software
3. Espaço de Endereçamento
3. Estados
1. Mudanças de Estado
2. Criação e Eliminação
4. Classificação
1. CPU-Bound e I/O-Bound
2. Foreground e Background
5. Formas de Criação
6. Processos Independentes
7. Subprocessos
8. Threads
1. Ambiente Monothread
2. Ambiente Multithread
3. Threads em Modo Usuário
4. Threads em Modo Kernel
9. Sinais
1. Introdução
Um processo pode ser simplificadamente entendido como um programa em execução.
A gerência de processos é uma das principais funções de um sistema operacional.
Possibilita aos programas:
Alocar recursos; compartilhar dados; trocar informações e sincronizar execuções.
Nos sistemas multiprogramáveis os processos são executados concorrentemente e compartilham recursos: uso do processador, memória principal e dispositivos de E/S, entre outros.
1. Introdução
Nos sistemas com múltiplos processadores é possível a execução simultânea de processos?
Sim, nesses sistemas não só existe a concorrência de processos pelo uso do processador como também a possibilidade de execução simultânea de processos nos diferentes processadores.
2. Estrutura do Processo
Um processo é formado por três partes que juntas mantêm todas as informações necessárias à execução de um programa.
2.1. Contexto de Hardware
O contexto de hardware de um processo armazena o conteúdo dos registradores gerais do processador, além dos registradores de uso específico.
Registradores de uso específico: Program Counter (PC), Instruction Register (IR), Stack Pointer (SP) e Registrador de Status.
O que ocorre no momento em que um processo perde a utilização do processador?
O sistema operacional salva as informações do contexto de hardware do processo para que elas possam posteriormente ser restauradas quando esse processo novamente puder utilizar o processador.
2.1. Contexto de Hardware
Mudança de Contexto
1. Processo A em execução
2. Processo B solicita execução.
3. SO salva registradores do processo A
4. SO Carrega registradores do Processo B
5. Processo B em execução
6. Processo A solicita execução.
7. SO salva registradores do processo B.
8. SO carrega registradores do processo A.
9. Processo A em execução.
2.2. Contexto de Software
No contexto de software de um processo são especificados limites e características dos recursos que podem ser alocados pelo processo.
Muitas dessas características são determinadas no momento da criação do processo. Elas podem ser alteradas durante sua existência.
A maior parte das informações do contexto de software do processo provém do arquivo de usuário.
O contexto de software é composto por três grupos de informações:
Identificação
Quotas
Privilégios.
2.3. Espaço de Endereçamento
O espaço de endereçamento é a área de memória pertencente ao processo onde instruções e dados do programa são armazenados para execução.
Cada processo possui seu próprio espaço de endereçamento, que deve ser devidamente protegido do acesso dos demais processos.
Em aula posteriores, detalharemos o assunto:
Gerência de Memória.
2. Estrutura do Processo
Como o sistema operacional implementa e controla um processo?
O processo é implementado por meio de uma estrutura de dados chamada bloco de controle do processo (Process Control Block - PCB).
Figura: PCB de um processo
O PCB de um processo mantém todas as informações sobre: Contexto do hardware. Contexto do software. Espaço de endereçamento.
Os PCBs de todos os processos ativos residem na memória principal em uma área exclusiva do sistema operacional (SO).
3. Estados
Um processo muda de estado durante seu processamento em função de eventos originados por ele próprio (voluntários) ou pelo sistema operacional (involuntários).
Figura: Mudança de estado entre processos
3.1. Mudança de Estados
a) Pronto para Execução: Cada SO tem seus próprios critérios e algoritmos para a escolha da ordem em que os processos serão executados (política de escalonamento).
b) Execução para Espera: devido a eventos gerados pelo próprio processo, como uma operação de E/S.
c) Espera para Pronto: quando a operação solicitada é atendida.
d) Execução para Pronto: devido a eventos gerados pelo sistema, como o término de fatia de tempo para sua execução (política de escalonamento).
Figura: Mudança de estado entre processos
3.1. Mudança de Estados
Um processo em estado de pronto ou espera pode não se encontrar na memória principal devido a inexistência de espaço suficiente, como resolver esse problema?
Figura: Swapping de memória
3.2. Criação e Eliminação
Diagrama de estados resultante da inclusão de dois novos estados: término e criação.
4.1. Classificação CPU-bound e I/O-bound
Os processos podem ser classificados como CPU-bound ou I/O-bound:
CPU-bound: o processo passa a maior parte do tempo no estado de execução, utilizando o processador, ou pronto.
I/O-bound: o processo passa a maior parte do tempo no estado de espera, pois realiza um elevado número de operações de E/S.
5. Formas de Criação
A seguir são apresentadas as três principais formas de criação de processos.
1) Logon Interativo:
O usuário, por intermédio de um terminal, fornece ao sistema um nome de identificação (username) e uma senha (password).
2) Linguagem de comandos:
É criado por intermédio de comandos da linguagem de comandos associada ao sistema operacional.
3) Rotina dos sistema operacional:
Pode ser criado a partir de qualquer programa executável com o uso de rotinas do sistema operacional.
6. Processos Independentes
1) Processos Independentes
A maneira mais simples de implementar a concorrência em sistemas multiprogramáveis.
Não existe vínculo do processo criado com o seu criador.
A criação de um processo independente exige a alocação de um PCB.
Contextos de hardware, de software e espaço de endereçamento próprios.
8. Threads
Um processo pode ter várias threads.
Cada thread possui seu próprio contexto de hardware.
Comunicação de threads dentro de um mesmo processo é realizada de forma mais simples e rápida.
Compartilhamento do espaço de endereçamento.
8.1. Ambiente Monothread
Nesse ambiente, as aplicações concorrentes são implementadas apenas com o uso de múltiplos processos independentes ou subprocessos.
8.1. Ambiente Monothread
Um exemplo do uso de concorrência pode ser encontrado nas aplicações de gerenciamento de e-mails.
Permite dividir uma aplicação em partes que podem trabalhar de forma concorrente.
Um usuário pode estar lendo suas mensagens antigas, ao mesmo tempo que pode estar enviando mensagens e recebendo novas mensagens.
8.1. Ambiente Monothread
Ao adotar múltiplos processos para a concorrência:
Cada funcionalidade do software implicaria em um novo processo.
Isso demanda diversos recursos (na criação e término do processo).
Desvantagens de utilizar múltiplos processos para efetuar a concorrência:
Cada processo possui o seu próprio espaço de endereçamento.
A comunicação se torna difícil e lenta.
Compartilhar recursos, como arquivos abertos, não é simples.
8.2. Ambiente Multithread
Em uma ambiente com múltiplos threads:
Os programas não são associados a processos.
Os programas são associados a threads.
Cada processo pode ter múltiplos threads em execução compartilhando o mesmo espaço de endereçamento.
8.2. Ambiente Multithread
Um processo com três threads em execução compartilhando o mesmo espaço de endereçamento.
8.2. Ambiente Multithread
De forma simplificada:
Um thread pode ser definido da seguinte forma:
Uma função de um programa que pode ser executada de forma assíncrona - executada concorrentemente ao programa que a invoca.
Um ambiente multithread possibilita a execução concorrente de funções dentro de um mesmo processo.
8.2. Ambiente Multithread
No ambiente multithread,
Cada processo pode responder a várias solicitações concorrentemente, ou mesmo simultaneamente - caso haja mais de um processador.
A grande vantagem no uso de threads é:
Possibilidade de minimizar a alocação de recursos do sistema.
Diminuição do overhead (na criação, troca e eliminação de processos).
8.2. Ambiente Multithread
Threads são implementados por meio de uma estrutura de dados denominada Thread Control Block – TCB.
O TCB armazena:
Contexto de hardware
Prioridade e estado de execução do thread.
8.2. Ambiente Multithread
O uso de multithreads proporciona uma série de benefícios.
Os programas concorrentes com múltiplos threads são mais rápidos do que com múltiplos processos.
Criação de thread, troca de contexto e eliminação geram menor overhead.
A comunicação é mais rápida e eficiente (mesmo espaço de endereçamento).
Os diversos threads podem utilizar processador de forma concorrente (melhor uso dos recursos computacionais).
8.2. Ambiente Multithread
Exemplo:
Múltiplos threads para atender várias solicitações de serviço remoto simultaneamente.
8.2. Ambiente Multithread
O conjunto de rotinas disponíveis para que uma aplicação utilize as facilidades dos threads é chamado de pacotes de threads.
Existem diferentes abordagens na implementação dos pacotes de threads em um sistema operacional.
Influência no desempenho, na concorrência e na modularidade das aplicações multithreads.
Threads podem ser oferecidos por:
1) Modo usuário: uma biblioteca de rotinas fora do núcleo do SO;
2) Modo kernel: pelo próprio núcleo do SO;
3) Modo híbrido: ou uma combinação de ambos.
8.3. Threads em modo usuário
Threads são implementados por uma biblioteca (criação de threads, troca de mensagens e escalonamento) e não pelo SO.
Threads são implementados pelo núcleo do SO e podem ser escalonados individualmente.
8.4. Threads em modo kernel
9. Sinais
O mecanismo de sinais assemelha-se ao tratamento de interrupções e exceções.
Porém com propósitos diferentes.
O sinal está para o processo.
Interrupções e exceções estão para o sistema operacional.
[Fim] Processos e Threads
“É muito melhor arriscar coisas grandiosas, alcançar triunfos e glórias, mesmo expondo-se a derrota, do que formar fila com os
pobres de espírito que nem gozam muito nem sofrem muito, porque vivem nessa penumbra cinzenta que não conhece vitória
nem derrota.”
Theodore Roosevelt
Próximo Módulo: Comunicação entre Processos
top related