sistemas operacionais cap2 - dca.ufrn.braffonso/dca0108/pdf/so_cap2_6f.pdf3 luiz affonso guedes 13...
TRANSCRIPT
1
Luiz Affonso Guedes 1
DCA-108 Sistemas Operacionais
Luiz Affonso Guedeswww.dca.ufrn.br/~affonso
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
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.
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)
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
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
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
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
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
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.