sistemas operacionais cap2 - dca.ufrn.braffonso/dca0108/pdf/so_cap2_6f.pdf3 luiz affonso guedes 13...

9
Luiz Affonso Guedes 1 DCA-108 Sistemas Operacionais Luiz Affonso Guedes www.dca.ufrn.br/~affonso [email protected] Luiz Affonso Guedes 2 Capítulo 2 Multiprogramação Luiz Affonso Guedes 3 Caracterização de um SO Moderno Necessidade de Multiprogramação Conceito de Processo Ciclo de vida de processo Estados de processo Thread Conteúdo Luiz Affonso Guedes 4 Objetivo Apresentar de forma sistemática os principais conceitos associados com multiprogramação. Luiz Affonso Guedes 5 Recordando Cenário Atual Uma ou mais CPUs, controladores de devices conectedos via uma barramento comum, acessando memórias compartilhadas. Execução concorrente de CPUs e devices competindo por recursos. Luiz Affonso Guedes 6 Os 4 componentes de sistema computacional Recordando Nosso objetivo de estudo

Upload: phamxuyen

Post on 10-Dec-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

1

Luiz Affonso Guedes 1

DCA-108 Sistemas Operacionais

Luiz Affonso Guedeswww.dca.ufrn.br/~affonso

[email protected]

Luiz Affonso Guedes 2

Capítulo 2

Multiprogramação

Luiz Affonso Guedes 3

❒ Caracterização de um SO Moderno❒ Necessidade de Multiprogramação❒ Conceito de Processo❒ Ciclo de vida de processo❒ Estados de processo❒ Thread

Conteúdo

Luiz Affonso Guedes 4

Objetivo

❒ Apresentar de forma sistemática os principais conceitos associados com multiprogramação.

Luiz Affonso Guedes 5

Recordando❒ Cenário Atual

❍ Uma ou mais CPUs, controladores de devices conectedos via uma barramento comum, acessando memórias compartilhadas.

❍ Execução concorrente de CPUs e devices competindo por recursos.

Luiz Affonso Guedes 6

Os 4 componentes de sistema computacional

Recordando

Nosso objetivode estudo

Page 2: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

2

Luiz Affonso Guedes 7

Objetivos de sistema operacional❒ Executar programas de forma conveniente

para o usuário.❒ Gerenciar os recursos de software e

hardware como um todo.❒ Utilizar os recursos de hardware de forma

eficiente e segura.

Recordando

Luiz Affonso Guedes 8

Conclusão da Revisão

❒ Para se construir SO eficientes, há a necessidade Multiprogramação!

Luiz Affonso Guedes 9

Objetivos da Multiprogramação❒ Tornar mais eficiente o aproveitamento dos recursos

do computador.❒ Execução “simultânea” de vários programas.

❍ Diversos programas são mantidos na memória.❒ O próprio SO é um programa!

Luiz Affonso Guedes 10

Conseqüências da Multiprogramação

❒ Necessidade de controle e sincronização dos diversos programas.

❒ Necessidade de se criar conceitos e abstração novas❍ Modelagem ❍ Implementação

Luiz Affonso Guedes 11

Conceitos Fundamentais

❒ Processos❒ Interrupção❒ Sincronização, comunicação, controle e

proteção entre processos

Luiz Affonso Guedes 12

Definição de Processo❒ Processo é o mesmo de Programa?❒ Programa

❍ Estrutura estática• Instruções + Dados

❒ Processo❍ Entidade Ativa❍ Instância de um Programa em execução.❍ Processos = Programa + Identificador + Entrada

+ Saída + Estado❍ Dois Processos podem executar instâncias

diferentes do mesmo Programa.

Page 3: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

3

Luiz Affonso Guedes 13

Estrutura de Processo na Memória

Luiz Affonso Guedes 14

Definição de Processo❒ Processo é então um programa em

execução!❒ O SO trata com processos e não com

programas.❒ Tipos de Processos

❍ Do usuário ❍ Do SO, deamons

Luiz Affonso Guedes 15

Multiprocessos

❒ Necessidade de mudança de contexto entre processos

Luiz Affonso Guedes 16

Ciclo de Vida de Processos

❒ Como são programas em execução, eles têm começo, meio e fim.❍ Início (criação)❍ Executando❍ Término

Luiz Affonso Guedes 17

Criação de Processo

❒ Momento do início da sua execução❒ Associar recursos ao processo

❍ Identificador único (PID) caracterizado por um número inteiro

❍ Associar com um programa.❍ Registrar o processo no SO (tabela de

Processos)• Essa tabela contém todos os dados necessários para

se gerência um processos❍ Exemplo de criação

• fork( ); (unix)• CreateProcess ( ); windows32

Luiz Affonso Guedes 18

Criação de Processo

❒ Ao se iniciar o computador, o SO cria vários processo.

❒ Em unix, ao se iniciar uma seção, o SO cria o processo init (PID=1)

Page 4: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

4

Luiz Affonso Guedes 19

Processo em Execução❒ Quando em execução,

há basicamente dois modos de operação:

❍ Ciclo de processador quando está utilizando a cpu

❍ Ciclo de E/S quando está esperando por algum dado de E/S

Luiz Affonso Guedes 20

Processo em Execução

❒ Característica de Processos

❍ CPU-Bound• Ciclo de CPU >> Ciclo de

E/S• Aplicações científicas.

❍ I/O-Bound• Ciclo de E/S >> Ciclo de

CPU• Acesso a banco de

dados.❍ Processos mistos

Luiz Affonso Guedes 21

Término de Processo

❒ Final de Execução❍ Normal❍ Por erro

• Overflow, divisão por zero, falta de memória

❒ Necessidade de liberar os recursos alocados ao processo.

❒ Como matar processos❍ Por outro processo

• Comando kill no Unix❍ Log-off do usuário

Luiz Affonso Guedes 22

Relacionamento entre Processos

❒ Processos independentes❍ Não há nenhum vínculo entre eles.❍ Não compartilham arquivo, dados, etc.

❒ Grupo de Processos❍ Há alguma relacionamento.

• Filiação• Compartilhamento de recursos• Dependência

Luiz Affonso Guedes 23

Hierarquia entre Processos

❒ Por exemplo, no Unix cria-se um processo via a primitiva fork();❍ O criador é o Pai❍ O processo criado é o Filho

Pai

Filho

fork()

Luiz Affonso Guedes 24

Hierarquia entre Processos

❒ Árvore de processos típica do Solares

Page 5: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

5

Luiz Affonso Guedes 25

❒ O que ocorre quando um processo morre?❒ A árvore de processos é alterada?❒ É destruída toda a árvore?❒ O processo Avó herda os netos?

❍ E se o Avó já estiver morto?

❒ Como gerenciar a árvore de processos?

Hierarquia entre Processos

Luiz Affonso Guedes 26

Criação de Processo em POSIX

Luiz Affonso Guedes 27

Criação de Processo em POSIX

Luiz Affonso Guedes 28

Estados de um Processo

❒ Após ser criado, o processo necessita entrar em ciclo de processador.❍ Mas, se o processador já estiver ocupado com

outro processo?❒ Se um processo necessitar fazer uma

operação de E/S, ele ainda vai ficar ocupando a CPU?

❒ Um processo pode ficar ocupando a CPU indefinidamente?

❒ Como modelar essas questões?

Luiz Affonso Guedes 29

Estados de um Processo

❒ Modelo de máquina de estados

Luiz Affonso Guedes 30

Estados de um Processo

❒ Quem controla a execução dos processos?

❒ No nível mais baixo do SO estão a manipulação de interrupção e o mecanismo de escalonamento de processos

Page 6: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

6

Luiz Affonso Guedes 31

Filas Associadas ao Estados

❒ Fila de Prontos❒ Fila de Bloqueados por cada dispositivo

Luiz Affonso Guedes 32

Mecanismo de Escalonamento de Processos

Luiz Affonso Guedes 33

Máquina de Estado Ampliadacriação

prontosuspenso pronto executando destruído

bloqueadosuspenso bloqueado

admissão admissão

ativo

suspenso

seleção

timeover/voluntário

evento

ativo

eventoevento

suspenso

fim

fim

Luiz Affonso Guedes 34

Controle de Alocação da Memória

❒ Todos processos estão na memória principal?❍ E se não houver espaço para todos, o que fazer?

Disco

MemóriaPrincipal

CPUSuspensão/swap

recuperação

ativação

timeout/bloqueio/

Luiz Affonso Guedes 35

Mecanismo de Escalonamento de Processos Melhorado

Luiz Affonso Guedes 36

Tabela de Processos

Page 7: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

7

Luiz Affonso Guedes 37

Comunicação entre Processos❒ Memória Compartilhada❒ Troca de Mensagens

❍ Pipes e Sockets

Luiz Affonso Guedes 38

Eficiência no Uso de Processos❒ Overhead de criação de processos❒ Overhead de mudança de contexto❒ Comunicação entre processos (IPC) mais complexa

Luiz Affonso Guedes 39

Processos com Fluxos Simples

Luiz Affonso Guedes 40

Processos com Múltiplos Fluxos

❒ Utilizar vários fluxos (threads) num mesmo processo.

❒ Manter a abstração de Processo❒ Diminuir overhead de gerência e mudança

de contexto

Luiz Affonso Guedes 41

Idéia Básica

Luiz Affonso Guedes 42

Processos Leves❒ Utilizar vários fluxos (threads) num mesmo

processo.❒ Aliviar a carga de criação, gerência e

mudança de contexto.❒ Conceito de Thread

❍ Pilha + PC + Registradores de uso geral❍ Abstração similar a Processos❍ Unidade de execução passa ser uma função❍ Comunicação via variáveis globais

Page 8: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

8

Luiz Affonso Guedes 43

Implementação de Threads❒ Implementação no nível do usuário❒ Implementação no núcleo

Luiz Affonso Guedes 44

Thread no Nível do Usuário❒ Modelo N:1❒ Todo gerenciamento é feito no nível de

aplicação❍ Implementada como biblioteca❍ O SO gerencia os Processos apenas, as threads

são gerenciadas pela aplicação• A mudança de contexto é gerenciada no nível de

usuário.• O algoritmo de escalonamento é implementado nonível

de aplicação.

Luiz Affonso Guedes 45

Thread no Nível do Usuário❒ Modelo N:1

Luiz Affonso Guedes 46

Thread no Nível do Usuário❒ Vantagens

❍ Criação e gerência mais leve, pois não há a necessidade de se acessar o núcleo.

❍ O SO cuida dos Processos e a Biblioteca das Threads

❍ Possibilita multithreading em SO sem este suporte

❒ Desvantagens❍ Uma Thread pode bloquea todo o seu Processo.❍ Não explora paralelismo em máquinas com vários

processadores.

Luiz Affonso Guedes 47

Thread no Nível do Sistema❒ Modelo 1:1

❍ Implementação no núcleo do SO❒ O SO gerencia os Processos e as Threads

❍ Troca de contexto entre Threads é efetuado pelo SO.

❍ O SO é quem faz o escalonamento de Processos e Threads

❒ O conceito de threads é incorporado no projeto e implementação do SO

Luiz Affonso Guedes 48

Thread no Nível do Sistema

Page 9: sistemas operacionais cap2 - dca.ufrn.braffonso/DCA0108/pdf/so_cap2_6f.pdf3 Luiz Affonso Guedes 13 Estrutura de Processo na Memória Luiz Affonso Guedes 14 Definição de Processo

9

Luiz Affonso Guedes 49

❒ Vantagens❍ Permite paralelismo real.❍ Evita possíveis bloqueios desnecessários de

threads.• Pois o controle é do núcleo e não da aplicação

❍ Aplicações menos dependentes de implementações específicas de bibliotecas.

❒ Desvantagens❍ Maior overhead na criação e gerência de

threads, pois essas operações requerem acesso ao núcleo do SO.

Thread no Nível do Sistema

Luiz Affonso Guedes 50

❒ Modelo M:N❍ Combina características vantajosas das duas

abordagens anteriores.❒ Há dois níveis de escalonamento

❍ Nível do Usuário e Nível do Sistema.❍ Há M threads do usuário e N threads do

sistema.• Geralmente M > N

❒ A dificuldade reside em como mapear as threads do usuário na threads do sistema.

Implementações Híbridas de Thread

Luiz Affonso Guedes 51

Implementações Híbridas de Thread

Luiz Affonso Guedes 52

Por que Utilizar Threads?

❒ Uso mais eficiente dos recursos do sistema❍ Menores overheads de criação, destruição e

mudança de contexto do que os processos.❍ Mecanismos de comunicação mais simples.

• Threads em geral implementam funções.• Threads compartilhas as variáveis globais do seu

processo• Por outro lado, há a necessidade de se ter mais

cuidado ao acesso dessas variáveis, para manter a consistência da aplicação.