DCA-108 Sistemas Operacionais Capítulo 2 Luiz Affonso Guedes www.dca.ufrn.br/~affonso affonso@dca.ufrn.br Multiprogramação Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de um SO Moderno Necessidade de Multiprogramação Conceito de Processo Objetivo Apresentar de forma sistemática os principais conceitos associados com multiprogramação. Ciclo de vida de processo Estados de processo Thread Luiz Affonso Guedes 3 Luiz Affonso Guedes 4 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. Recordando Os 4 componentes de sistema computacional Nosso objetivo de estudo Luiz Affonso Guedes 5 Luiz Affonso Guedes 6
Recordando 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. Conclusão da Revisão Para se construir SO eficientes, há a necessidade Multiprogramação! Luiz Affonso Guedes 7 Luiz Affonso Guedes 8 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! 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 9 Luiz Affonso Guedes 10 Conceitos Fundamentais Processos Interrupção Sincronização, comunicação, controle e proteção entre processos 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. Luiz Affonso Guedes 11 Luiz Affonso Guedes 12
Estrutura de Processo na Memória 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 13 Luiz Affonso Guedes 14 Multiprocessos Necessidade de mudança de contexto entre processos 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 15 Luiz Affonso Guedes 16 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 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) Luiz Affonso Guedes 17 Luiz Affonso Guedes 18
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 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 19 Luiz Affonso Guedes 20 Término de Processo Relacionamento entre Processos 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 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 21 Luiz Affonso Guedes 22 Hierarquia entre Processos Hierarquia entre Processos Por exemplo, no Unix cria-se um processo via a primitiva fork(); O criador é o Pai O processo criado é o Filho Árvore de processos típica do Solares Pai fork() Filho Luiz Affonso Guedes 23 Luiz Affonso Guedes 24
Hierarquia entre Processos Criação de Processo em POSIX 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? Luiz Affonso Guedes 25 Luiz Affonso Guedes 26 Criação de Processo em POSIX 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 27 Luiz Affonso Guedes 28 Estados de um Processo Estados de um Processo Modelo de máquina de estados 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 Luiz Affonso Guedes 29 Luiz Affonso Guedes 30
Filas Associadas ao Estados Mecanismo de Escalonamento de Processos Fila de Prontos Fila de Bloqueados por cada dispositivo Luiz Affonso Guedes 31 Luiz Affonso Guedes 32 Máquina de Estado Ampliada Controle de Alocação da Memória admissão pronto suspenso evento bloqueado suspenso criação ativo suspenso admissão evento ativo seleção fim pronto executando destruído bloqueado suspenso timeover/ voluntário evento fim Todos processos estão na memória principal? E se não houver espaço para todos, o que fazer? Disco Suspensão/swap recuperação Memória Principal ativação timeout/ bloqueio/ CPU Luiz Affonso Guedes 33 Luiz Affonso Guedes 34 Mecanismo de Escalonamento de Processos Melhorado Tabela de Processos Luiz Affonso Guedes 35 Luiz Affonso Guedes 36
Comunicação entre Processos Memória Compartilhada Troca de Mensagens Pipes e Sockets 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 37 Luiz Affonso Guedes 38 Processos com Fluxos Simples Processos com Múltiplos Fluxos Luiz Affonso Guedes 39 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 40 Idéia Básica 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 Luiz Affonso Guedes 41 Luiz Affonso Guedes 42
Implementação de Threads Implementação no nível do usuário Implementação no núcleo 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 43 Luiz Affonso Guedes 44 Thread no Nível do Usuário Modelo N:1 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 45 Luiz Affonso Guedes 46 Thread no Nível do Sistema 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 47 Luiz Affonso Guedes 48
Thread no Nível do Sistema 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. Implementações Híbridas de Thread 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. Luiz Affonso Guedes 49 Luiz Affonso Guedes 50 Implementações Híbridas de Thread 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. Luiz Affonso Guedes 51 Luiz Affonso Guedes 52