sistemas operacionais - amazon simple storage service operacionais processos e threads . sumário 1....

37
Sistemas Operacionais Processos e Threads

Upload: lamxuyen

Post on 10-Dec-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Sistemas

Operacionais Processos e Threads

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

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.

4.2. Classificação Foreground e Background

1. Processo Foreground

2. Processo Background

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.

7. Subprocessos

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

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