You are on page 1of 50

Sistemas Operacionais 1 - Resumo

Prof. Ricardo Pinheiro 23/04/2010

Sumrio
1 Introduo 1.1 O que um Sistema Operacional (SO)? . . . . . . . . . . . . . . . . . . 1.1.1 Funes: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Mquina de Nveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Tipos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Sistemas Monotarefa . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Sistemas Multitarefa . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2.1 Lote ou Batch . . . . . . . . . . . . . . . . . . . . . . 1.3.2.2 Tempo Compartilhado (Time-Share) . . . . . . . . . . 1.3.2.3 Tempo Real (Real-Time) . . . . . . . . . . . . . . . . 1.3.3 Multiplas UCPs . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3.1 Multiprocessadores, ou sistemas fortemente acoplados 1.3.3.2 Multicomputadores, ou sistemas fracamente acoplados. Concorrncia 2.1 Introduo . . . . . . . . . . . . . . . 2.2 Interrupes . . . . . . . . . . . . . . 2.3 Excees . . . . . . . . . . . . . . . . 2.4 Controladoras de E/S . . . . . . . . . . 2.4.1 No incio... . . . . . . . . . . . 2.4.2 E/S Controlada por Programa . 2.4.3 Polling . . . . . . . . . . . . . 2.4.4 E/S Controlada por Interrupo 2.4.5 DMA . . . . . . . . . . . . . . 2.4.5.1 Canal DMA . . . . . 2.5 Buffering . . . . . . . . . . . . . . . . 2.6 Spooling . . . . . . . . . . . . . . . . . 2.7 Reentrncia . . . . . . . . . . . . . . . 2.8 Proteo do Sistema . . . . . . . . . . . Estrutura do sistema operacional 3.1 Kernel . . . . . . . . . . . . 3.2 Bibliotecas . . . . . . . . . 3.2.1 Chamadas do sistema 3.3 Utilitrios . . . . . . . . . . 3.4 Modos de acesso . . . . . . 4 4 4 4 4 5 5 6 6 6 6 7 7 8 9 9 9 10 11 11 11 11 11 11 12 12 12 12 13 14 14 15 15 15 15

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . 1

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

SUMRIO 3.5 Tipos de kernel . . . . . 3.5.1 Monoltico . . . 3.5.2 Camadas . . . . 3.5.3 Mquina Virtual 3.5.4 Microkernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 16 16 16 16 17 19 19 19 20 20 20 21 21 21 21 22 22 22 22 23 23 23 23 24 24 25 25 25 25 25 26 26 26 26 28 28 28 28 29 29 29 31 31 31 31

Processos e threads 4.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 4.2 Partes do processo . . . . . . . . . . . . . . . . . . . 4.3 Bloco de controle do processo (PCB) . . . . . . . . . 4.4 Estados do processo e mudanas de estado . . . . . . 4.4.1 Mudanas de estado . . . . . . . . . . . . . 4.5 Criao e eliminao de processos . . . . . . . . . . 4.6 Concorrncia dentro de uma aplicao . . . . . . . . 4.7 Tipos de processo . . . . . . . . . . . . . . . . . . . 4.8 Sinais . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 Threads . . . . . . . . . . . . . . . . . . . . . . . . 4.9.1 Introduo . . . . . . . . . . . . . . . . . . 4.9.2 Ambientes monothread e multithread . . . . 4.9.2.1 Monothread . . . . . . . . . . . . 4.9.2.2 Multithread . . . . . . . . . . . . 4.9.3 Formas de implementao . . . . . . . . . . 4.9.3.1 Threads em Modo Usurio (TMU) 4.9.3.2 Threads em Modo Kernel (TMK) . 4.9.3.3 Threads em Modo Hbrido (TMH) 4.9.3.4 Scheduler activations . . . . . . . Sincronizao entre processos 5.1 Introduo . . . . . . . . . . . . . . . . . . . . 5.2 Concorrncia no cdigo fonte: . . . . . . . . . 5.2.1 Comandos FORK e JOIN . . . . . . . 5.2.1.1 Como funciona . . . . . . . 5.2.2 ParBegin e ParEnd (CoBegin e CoEnd) 5.2.2.1 Como funciona . . . . . . . 5.3 Exemplos de problemas de sincronizao . . . 5.3.1 Sistema de conta corrente . . . . . . . 5.3.2 2 processos e 1 varivel . . . . . . . . 5.4 Excluso Mtua . . . . . . . . . . . . . . . . . 5.4.1 Condio de disputa . . . . . . . . . . 5.4.2 Regio Crtica . . . . . . . . . . . . . 5.4.3 Excluso Mtua . . . . . . . . . . . . 5.4.4 Situaes indesejveis . . . . . . . . . 5.5 Sincronizao condicional . . . . . . . . . . . 5.6 Solues para a excluso mtua . . . . . . . . 5.6.1 Solues por hardware . . . . . . . . . 5.6.1.1 Desligar as interrupes . . . 5.6.1.2 Instrues test-and-set . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

SUMRIO Solues por software . . . . . . . . . . 5.6.2.1 Algoritmo 1 . . . . . . . . . . 5.6.2.2 Algoritmo 2 . . . . . . . . . . 5.6.2.3 Algoritmo 3 . . . . . . . . . . 5.6.2.4 Algoritmo 4 . . . . . . . . . . 5.6.2.5 Algoritmo de Dekker . . . . . 5.6.2.6 Algoritmo de Peterson . . . . . 5.7 Semforos . . . . . . . . . . . . . . . . . . . . . 5.7.1 Excluso mtua com semforos . . . . . 5.7.2 Sincronizao condicional com semforos 5.7.3 Jantar dos lsofos . . . . . . . . . . . . 5.8 Monitores . . . . . . . . . . . . . . . . . . . . . 5.9 Troca de mensagens . . . . . . . . . . . . . . . . 5.10 Deadlock . . . . . . . . . . . . . . . . . . . . . 5.10.1 Preveno de deadlocks . . . . . . . . . 5.10.2 Deteco de deadlocks . . . . . . . . . . 5.10.3 Correo de deadlocks . . . . . . . . . . 6 5.6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 32 32 33 34 34 36 36 36 37 39 39 40 41 42 42 43 43 44 44 44 44 44 45 45 45 45 46 46 46 47 47 48 48 49 49 49 49

Gerncia da UCP 6.1 Escalonamento . . . . . . . . . . . . . . . . . . . 6.1.1 Funes bsicas . . . . . . . . . . . . . . . 6.1.2 Partes . . . . . . . . . . . . . . . . . . . . 6.1.3 Critrios . . . . . . . . . . . . . . . . . . 6.1.4 Objetivos . . . . . . . . . . . . . . . . . . 6.2 Tipos de Escalonamento . . . . . . . . . . . . . . 6.2.1 No-preemptivos . . . . . . . . . . . . . . 6.2.1.1 FIFO (First In First Out) . . . . . 6.2.1.2 SJF (Shortest Job First) . . . . . 6.2.1.3 Cooperativo . . . . . . . . . . . 6.2.2 Preemptivos . . . . . . . . . . . . . . . . . 6.2.2.1 Circular . . . . . . . . . . . . . 6.2.2.2 Prioridades . . . . . . . . . . . . 6.2.2.3 Circular com Prioridades . . . . 6.2.2.4 Mltiplas las . . . . . . . . . . 6.2.2.5 Mltiplas las com realimentao 6.3 Politicas de Escalonamento . . . . . . . . . . . . . 6.3.1 Tempo Compartilhado . . . . . . . . . . . 6.3.2 Tempo Real . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

Captulo 1 Introduo
1.1 O que um Sistema Operacional (SO)?

Programa. Conjunto de rotinas. Executado de forma no-seqencial.

1.1.1

Funes:

1. Interao homem-mquina. 2. Gerncia de recursos. 3. Administrao de usurios da mquina (usurios = programas, pessoas).

1.1.2

Objetivos

1. Compartilhar os recursos de forma organizada e protegida. 2. Facilitar o acesso aos recursos. OBS: Recursos UCP, memria, HD ....

1.2

Mquina de Nveis

Computador hardware e software como uma coisa s para o usurio. 6 nveis: 1. So independentes entre si. 2. A passagem por cada uma obrigatria. 3. H uma interface entre as camadas.

CAPTULO 1. INTRODUO So eles: Aplicaes Linguagem de Montagem Sistema Operacional Linguagem de mquina Microprogramao Hardware (Lgica Digital)

1.3

Tipos de Sistemas Operacionais

Tipos de SO Subtipos Monotarefa ou Monoprogramvel Multitarefa ou Multiprogramvel Batch, ou em lote; Tempo Compartilhado; Tempo Real Mltiplas UCPs Sistemas fortemente e fracamente acoplados Diferem quanto : 1. Aplicao 2. Hardware empregado 3. Estrutura interna complexidade Desejvel: 1. Escalvel 2. Rpido 3. Flexvel 4. Seguro 5. Tolerante a Falhas 6. Robusto

1.3.1

Sistemas Monotarefa

Um nico programa em execuo. Todos os recursos dedicados a esse programa - desperdcio Estrutura simples Ex: MS-DOS, PALM OS

CAPTULO 1. INTRODUO

1.3.2

Sistemas Multitarefa

Vrios programas em execuo. Compartilhamento e gerncia dos recursos. Melhor aproveitamento. Estrutura complexa. Alguns so multiusurio. 1.3.2.1 Lote ou Batch

1 SO multitarefa la de submisso de tarefas tarefas no interativas Sada em impressora ou disco Podem ser ecientes, como tambm podem ter tempos de resposta longos No so mais usados 1.3.2.2 Tempo Compartilhado (Time-Share)

Tipo mais comum. Conceito de fatia de tempo Cada tarefa ca em execuo at o tempo acabar, dando lugar a outra Tarefas interativas Ex: UNIX, WINDOWS 1.3.2.3 Tempo Real (Real-Time)

Semelhante ao sistema time-share, mas no so iguais. Tempo de resposta dentro de intervalos rgidos. Conceito de prioridade tarefa em execuo enquanto no houver outro de mais prioridade do que ele Prioridade denida pela aplicao. Uso em sistemas de misso critica e controle de processos: renarias, siderrgicas, trafego areo.

CAPTULO 1. INTRODUO

1.3.3

Multiplas UCPs

Processamento paralelo Conceitos: 1. escalabilidade 2. disponibilidade 3. balanceamento de carga tendncia atual Problemas: 1. Necessidade de desempenho 2. Problemas mais caros computacionalmente. 3. Lei de Moore limite fsico. Soluo: 1. uso de arquiteturas com mais de uma UCP 2. software que tire proveito e escalone entre as UCPs presentes Caracteristicas desejveis: 1. escalabilidade alta 2. disponibilidade alta 3. balanceamento de carga justo 4. transparncia 5. imagem nica do sistema 1.3.3.1 Multiprocessadores, ou sistemas fortemente acoplados

Memria nica. Tudo gernciado por um nico SO. Subdividido em SMP - Arquitetura simtrica. NUMA - Acesso No-Uniforme a Memria. Custo de produo mais elevado.

CAPTULO 1. INTRODUO 1.3.3.2 Multicomputadores, ou sistemas fracamente acoplados.

Memria espalhada Um nico SO ou vrios Cada membro do sistema esta conectado aos outros por um link de dados Custo de produo mais baixo. Tendncia atual

Captulo 2 Concorrncia
2.1 Introduo

Computador - seu uso caro computacionalmente Objetivo: minimizar o desperdcio (tempo que a UCP ca parada) Momentos de desperdcio: Frequncia da UCP maior do que a frequncia da memria Velocidade da UCP muito maior do que a velocidade de E/S. Baixo uso da UCP em si. Soluo: Manter a UCP o mais ocupada possvel, executando instrues de forma concorrente. Exemplo: Programa pega 100 registros, ordena e grava o resultado: Operao Uso Ler 100 registros: E/S Ordenar: UCP Gravar o resultado: E/S Total: 0,10 s. Total de uso da UCP: 0,01 0,10 Tempo 0,04 s 0,01 s 0,05 s s = 0, 1 = 10%.

Concorrncia - conjunto de tcnicas que permite a UCP passar mais tempo ocupada desempenhando mais tarefas por instante de tempo (throughput). Abaixo, algumas tcnicas de concorrncia.

2.2

Interrupes

Durante a execuo, eventos inesperados podem ocorrer Desvio forado na execuo - interrupo. Caractersticas: Evento assncrono. 9

CAPTULO 2. CONCORRNCIA Evento externo ao programa. Evento gerado por software ou hardware.

10

A interrupo o fundamento bsico de concorrncia, usado para a sincronizao das rotinas do S. O., programas, etc. Arquitetura IBM-PC: 16 interrupes de hardware, divididas entre 2 controladoras de interrupo (interligadas em cascata): Exemplo: IRQ1 - relgio (timer); IRQ3 - porta serial 1; IRQ7 - porta paralela; IRQ13 - IDE 1; etc. H a necessidade de termos mecanismos apropriados para cada tipo de interrupo. Como so tratadas: Rotina de tratamento de interrupo Vetor de interrupo Como so assncronos, podem ocorrer vrias vezes, o que atrapalha a execuo do programa. Por isso, temos 2 tipos de interrupes: Mascarveis podem ser ignoradas. No-mascarveis no podem ser ignoradas. Controlador de pedidos de interrupo - Hardware que gerencia as interrupes.

2.3

Excees
Evento interno ao programa. Evento sncrono. Tratamento todo via software.

Parecidos com as interrupes, mas diferem nos quesitos:

Exemplo: Diviso por zero, buffer overow, stack overow, etc. Tratamento feito pelo desenvolvedor, ou pelo hardware (em alguns casos). Segurana: Falhas em programas geram excees. Programao segura.

CAPTULO 2. CONCORRNCIA

11

2.4
2.4.1

Controladoras de E/S
No incio...

UCP fala diretamente com os dispositivos de E/S. Problema: E/S muito mais lento do que a memria ou a UCP. Introduo do controlador (ou controladora) de E/S: Gerncia do acesso aos dispositivos de E/S. Tira da UCP o trabalho de cuidar dos dispositivos. Mais eciente do que a UCP fazer o controle. Problema ainda existe a transferncia de dados entre a memria e dispositivo de E/S feita pela UCP. Interferncia da UCP. Abaixo, algumas tcnicas empregadas.

2.4.2

E/S Controlada por Programa

UCP envia a requisio e move os dados entre a memria e a controladora, aguardando o trmino da operao. UCP ca presa, aguardando o trmino da operao - nada eciente.

2.4.3

Polling

UCP envia a requisio, move os dados e liberada. De tempos em tempos, testa para ver se a operao foi concluda.

2.4.4

E/S Controlada por Interrupo

UCP envia a requisio, move os dados, e liberada. Quando a operao for concluda, a controladora gera uma interrupo, avisando UCP o trmino da operao. Muito eciente, mas ainda requer a interferncia direta da UCP, fazendo a transferncia de dados.

2.4.5

DMA

Acesso direto a memria Controladora fala direto com a memria, sem passar pela UCP - apenas no incio e no m da transferncia. A UCP repassa controladora a posio inicial da memria a ser lida/escrita, e liberada.

CAPTULO 2. CONCORRNCIA 2.4.5.1 Canal DMA

12

Extenso do conceito. Diversas vias ligando as controladoras da mquina memria. Na arquitetura PC h 8 canais Chance de uso de buffers para aumentar ainda mais o desempenho.

2.5

Buffering

Uso de uma rea na memria principal, o buffer. Velocidade da UCP muito maior do que a velocidade de E/S. Objetivo: acelerar o acesso aos dispositivos de E/S (leitura e gravao). Manter UCP e E/S ocupados na maior parte do tempo. Registro como unidade de transferncia.

2.6

Spooling

Fila de submisso de tarefas - inicialmente em tas magnticas. Arquivo de spool - usado inicialmente em SOs do tipo batch. Fila: 1 a entrar , 1 a sair (FIFO). Seqencial - uso de discos com acesso direto spooling mais eciente. No-sequencial - arquivo no disco. Uso no gerenciamento de impresso hoje em dia.

2.7

Reentrncia

Mais comum em sistemas multiusurio. Vrios usurios usando os mesmos programas. Problema: Vrias cpias do mesmo programa na memria desperdcio. Reentrncia: capacidade do cdigo-fonte do programa ser executado e compartilhado entre os usurios do sistema. Cdigo executvel = cdigo reentrante. O cdigo deve ter compilado com essa opo. Uso mais eciente da memria e aumento do desempenho do sistema.

CAPTULO 2. CONCORRNCIA

13

2.8

Proteo do Sistema

Sistemas mais novos - mais complexos. Necessidade de aumentar a segurana preciso garantir a conabilidade e integridade de programas e dados Situaes em que mecanismos de proteo so necessrios: 1. reas reservadas para cada programa e seus dados - evitar a sobreposio dessas reas. 2. comunicao entre programas de forma sincronizada. 3. Compartilhamento de arquivos no disco 4. Evitar monoplios da UCP. 5. Contornar excees. O sistema operacional deve evitar esses problemas com mecanismos de controle.

Captulo 3 Estrutura do sistema operacional


Um sistema operacional composto de trs partes: 1. Kernel. 2. Bibliotecas. 3. Utilitrios.

3.1

Kernel

ncleo do sistema. Parte central do sistema operacional. oferecem servios aos usurios. execuo no-sequencial. Principais funes: 1. gerncia de processos e threads. 2. gerncia de memria. 3. gerncia de UCP. 4. gerncia de dispositivos de E/S. 5. tratamento de interrupes. 6. tratamento de excees. 7. suporte a redes. 8. segurana. 9. contabilidade e auditoria do sistema. Tipos de kernel: como ele fala com o hardware e software, sua organizao interna varia de projeto para projeto. Ideal que seja pequeno, rpido, estvel e seguro. 14

CAPTULO 3. ESTRUTURA DO SISTEMA OPERACIONAL

15

3.2

Bibliotecas

Conjunto de rotinas usadas por programas. Fornecem servios para os programas. Contm as chamadaa ao sistema.

3.2.1

Chamadas do sistema

Partes integrantes das bibliotecas. Meio organizado e padronizado para acesso ao kernel. Forma como o kernel pode ser acessado. Esconde a complexidade do acesso para o programador. ProgramaSystem CallsKernelHardware Nomes diferentes para a mesma coisa: 1. Windows: APIs 2. Open VMS: System Services 3. UNIX: System Calls OBS: No Unix, o que determina se um sistema padro UNIX ou no se ele segue a especicao das System Calls, criada pelo comit POSIX.

3.3

Utilitrios

Programas que auxiliam o funcionamento do sistema operacional. Exemplos: Compiladores, compactadores, ferramentas de acesso ao disco, etc.

3.4

Modos de acesso
1. privilegiadas - tem acesso a todos os recursos, e mal-usadas, podem comprometer o funcionamento do sistema, gerando instabilidade. 2. no-privilegiadas - no comprometem a estabilidade do sistema operacional.

A UCP tem instrues:

Modos de acesso - o que so: 1. Soluo implementada em hardware, pela UCP. 2. Acesso ou no instrues privilegiadas. 3. Informao de qual modo de acesso est salvo em um registrador de estado PSW.

CAPTULO 3. ESTRUTURA DO SISTEMA OPERACIONAL

16

4. Hoje em dia, os sistemas so montados de forma que o kernel o nico programa que pode estar sendo executado no modo privilegiado. Chaveamento de modos, ou mudana de contexto: 1. Mudana entre os estados do processador, do modo privilegiado para o no-privilegiado, e viceversa. 2. Custa (pouco) tempo UCP, mas desejvel que esse tempo seja ainda mais minimizado.

3.5

Tipos de kernel

Antes, dividiremos entre modo usurio (no-privilegiado) e modo kernel (privilegiado).

3.5.1

Monoltico

Um grande bloco de cdigo, ou dividido em mdulos, todos sendo executados no modo kernel. Estrutura mais simples. Desenvolvimento mais simples. A manuteno pode ser complexa, se no for um projeto bem-feito e bem amarrado. Simples na estrutura. Rpido. Ex: MS-DOS, Linux.

3.5.2

Camadas

Nveis sobrepostos. H necessidade de passar por todos os nveis para chegar ao kernel. Como as camadas so isoladas, facilita a manuteno e a depurao. Desempenho prejudicado pela estrutura - muito burocrtico. Ex: Open VMS, MULTICS, Windows 2000

3.5.3

Mquina Virtual

Sistema computacional composto por nveis, onde o nvel mais baixo o hardware. Modelo de mquina virtual - nvel intermedirio entre o hardware e o sistema operacional - gerncia de mquinas virtuais. Cada mquina virtual oferece uma cpia virtual do hardware, incluindo os modos de acesso, interrupes, dispositivos de E/S, etc.

CAPTULO 3. ESTRUTURA DO SISTEMA OPERACIONAL

17

Cada mquina virtual independente das demais, contendo seu prprio sistema operacional, seus prprios usurios e suas prprias aplicaes. Conceito iniciado no VM/370, baseado no OS/370, da IBM (anos 1960). Conceito usado tambm com a linguagem Java - JVM. Vantagens: 1. Segurana - Isolamento total das mquinas virtuais. 2. Economia de recursos - mais barato um servidor grande do que vrios servidores pequenos. 3. Portabilidade - se o hardware hospedeiro tiver um defeito, basta transferir os arquivos das mquinas virtuais para outro hardware. Desvantagens: 1. Complexidade. 2. Sobrecarga - um hipervisor complexo e consome muitos recursos do hardware hospedeiro.

3.5.4

Microkernel

Constatao - sistemas atuais ainda so lentos e pesados. Microkernel - tornar o ncleo do sistema operacional o menor e mais simples possvel. Disponibilizar os servios atravs de processos a serem executados no nvel usurio. Cada um desses processos servidores fornecem um recurso especco para o sistema: Gerncia de processos, gerncia de arquivos, escalonamento de processos, etc. A principal funo do kernel ento fazer o dilogo entre os diferentes processos servidores. Conceito surgido nos anos 1980, com o sistema operacional Mach, desenvolvido na Universidade CarnegieMellon. O ncleo do Mach fornece 4 servios, apenas: Gerncia de processos, gerncia de memria, comunicao por troca de mensagens e operaes de E/S, todas em modo usurio. Vantagens: 1. Mais seguro: Se um servio sair do ar, recolocado facilmente. 2. Apropriado para computao distribuda: Os servios podem ser remanejados entre as UCPs. 3. Mais exvel. 4. Mais rpido: com o kernel enxuto, menos cdigo a ser executado. 5. Mais facilmente portado para outras arquiteturas: Menos cdigo no kernel, menos diculdades para reescrever o kernel para outras plataformas.

CAPTULO 3. ESTRUTURA DO SISTEMA OPERACIONAL

18

H controvrsias quanto armao de ser mais rpido (ponto no. 4), pois apesar do kernel ser menor, o sistema far muito mais chamadas e mudanas de modo de acesso, ao acessar os servios que rodam no modo usurio. Na prtica, os sistemas microkernel so interessantes, mas ainda no podem estar disponveis comercialmente. Existem alguns sistemas que agregam caractersticas do microkernel, mas no so completamente nesse estado. Exemplos: L4, Amoeba, Exokernel, Minix.

Captulo 4 Processos e threads


4.1 Introduo

Conceito - base para a implementao de um sistema multiprogramvel. Um programa deve estar sempre associado a um processo. Processo - ambiente no qual um programa executado. O processo colocado em execuo e tirado caso o sistema operacional necessite faz-lo.

4.2

Partes do processo
1. Espao de endereamento: rea de memria usada pelo processo, onde as instrues e os dados do programa so armaenados para execuo. 2. Contexto de hardware: Registradores gerais e especcos da UCP. Quando um processo est em execuo, o contexto de hardware guarda os registradores do processador. Quando ele tirado de execuo (mudana de contexto), todos os registradores so salvos no contexto de hardware, para que o processo seja novamente colocado em execuo, a partir do ponto onde parou. 3. Contexto de software: Caractersticas e limites dos recursos que podem ser alocados pelo processo. Muitas dessas caractersticas so determinadas no momento da criao do processo, enquanto outras podem ser alteradas durante a sua existncia. So trs grupos de informaes: Identicao: * Nmero de identicao do processo (PID). * Nome do usurio que criou o processo (UID). * Grupo do usurio que criou o processo (GID). Quotas: Limites de cada recurso do sistema que um prcoesso pode alocar. Exemplos: * Nmero mximo de arquivos abertos simultaneamente; * Nmero mximo de operaes de E/S pendentes; * Tamanho mximo do buffer para operaes de E/S; 19

Trs partes:

CAPTULO 4. PROCESSOS E THREADS

20

* Nmero mximo de processos, subprocessos e threads que podem ser criados. Privilgios: Aes que um processo pode fazer em relao a ele mesmo, aos demais processos e ao sistema operacional. Exemplos: * * * * * * * Alterar a prioridade de execuo; Limites alocados na memria principal e secundria; Alterar as prioridades de outros processos; Desativar o sistema; Alterar regras de segurana; Criar outros processos privilegiados; Mudar a congurao do sistema.

4.3

Bloco de controle do processo (PCB)

O bloco de controle do processo uma estrutura de dados, mantida pelo sistema operacional, em rea reservada, onde todas as informaes necessrias para manter o processo em funcionamento so arquivadas. A gerncia de processos feita por chamadas do sistema.

4.4

Estados do processo e mudanas de estado


1. Execuo: Sendo executado pela UCP. 2. Prontido (ou pronto): Aguarda a sua vez para ser executado. 3. Espera: Aguarda pelo m de um evento externo ou por um recurso para continuar o processamento.

Trs estados:

Escalonamento: Conjunto de critrios que denem qual processo ser colocado em execuo primeiro.

4.4.1

Mudanas de estado

Eventos voluntrios ou involuntrios podem mudar o estado de um processo: 1. Eventos voluntrios: O processo muda por causa de eventos originrios de si mesmo. 2. Eventos involuntrios: O processos muda por ao do sistema operacional. Mudanas: 1. Pronto execuo: Colocado em execuo. 2. Execuo espera: Evento externo, como uma operao de E/S, faz o processo ter seu estado mudado. 3. Espera pronto: O evento externo foi concludo. Note que no h como passar direto, de espera para execuo.

CAPTULO 4. PROCESSOS E THREADS

21

4. Execuo pronto: O trmino da fatia de tempo que o processo tem o coloca de volta na la de prontido. Processos no estado de espera ou pronto podem estar na memria virtual, por falta de espao. Logo, a tcnica de swapping consiste em mover processos entre as memrias principal e virtual.

4.5

Criao e eliminao de processos


1. Criao Criou-se a entrada no PCB, mas o processo ainda no foi colocado na lista de prontido. criado por outros processos. 2. Trmino O programa foi nalizado, mas o PCB ainda existe. eliminado por outros processos ou pelo trmino nortmal da sua execuo.

Dois estados adicionais:

4.6

Concorrncia dentro de uma aplicao


1. Processos independentes: Um processo cria outros, sem vnculos. a maneira mais simples. 2. Subprocessos: Um processo cria outros, de forma que esto vinculados hierarquicamente: Se o processo-pai eliminado, os processos-lho tambm sero. Compartilham quotas. 3. Threads: Ramicaes dentro do processo, compartilhando o contexto de software e o espao de endereamento. um modo de gastar menos tempo com criao, escalonamento e eliminao de processos.

Trs maneiras:

4.7

Tipos de processo

1. Foreground: Execuo em primeiro plano, interage diretamente com o usurio, com entrada-padro (teclado) e sada-padro (monitor). 2. Background: Execuo em segundo plano, onde no preciso interagir diretamente com o usurio. Nesse caso, entrada e sada podem ser arquivos, por exemplo. 3. CPU-Bound: Passa a maior parte da fatia de tempo em estado de execuo, ou seja, usando a UCP intensamente. 4. I/O-Bound: Passa a maior parte da fatia de tempo em estado de espera, com muitas operaes de E/S.

4.8

Sinais

Mecanismo que permite avisar processos de eventos gerados pelo sistema operacional ou por outros processos. Tambm so usados para comunicao e sincronizao entre processos.

CAPTULO 4. PROCESSOS E THREADS Podem ser associados a temporizadores (eventos associados ao tempo). Exemplos: Noticao de interrupes e excees, alarmes de tempo, limites de quotas excedidos, etc. Eventos que geram sinais - sncronos ou assncronos. Tratamento do sinal - semelhante ao mecanismo de interupes. O sinal est para o processo assim como interrupes e excees esto para o sistema operacional.

22

4.9
4.9.1

Threads
Introduo

No incio, eram apenas processos. Conceito de processo leve (lightweight) compartilha o espao de endereamento. Thread - surge primeiro no sistema operacional Mach, da Universidade de Carnegie-Mellon (1980). Ganho de desempenho e exibilidade, apesar da complexa implementao. Aplicaes mais complexas - vrios trechos de cdigo em execuo paralela - para termos comunicao e sincronizao de threads deve-se avaliar desempenho, exibilidade e custo. Apesar da diculdade em desenvolver, compensa devido aos ganhos obtidos. Exemplos: Windows 2000 e superiores, Linux, Solaris, etc.

4.9.2
4.9.2.1

Ambientes monothread e multithread


Monothread

Cada processo tem apenas um thread. Concorrncia se d apenas com processos independentes ou subprocessos. Problema - criar, gerenciar e eliminar processos computacionalmente caro. Compartilhar o espao de endereamento complexo, por conta dos mecanismos empregados. Processo Unidade de alocao e de escalonamento.

CAPTULO 4. PROCESSOS E THREADS 4.9.2.2 Multithread

23

Permite que tenhamos aplicaes concorrentes de forma mais eciente: Aumenta o desempenho, por dispensar mecanismos de comunicao dentrod o processo. Aumenta a ecincia, por termos menos sobrecarga do sistema como um tyodo - menos processos e mais threads. Programas associados a threads. Os threads sofrem mudana de estado (pronto, espera e execuo), e tem seu prprio bloco de controle (o TCB). Processo Unidade de alocao. Thread Unidade de escalonamento. O S. O. v e escalona os threads de cada processo.

4.9.3

Formas de implementao

Pacote de threads - Conjunto de rotinas da biblioteca do sistema operacional par aa implementao de threads. Falta de padro em sistemas Unix, at o comit POSIX liberar uma norma para termos threads, os PThreads. 4.9.3.1 Threads em Modo Usurio (TMU)

Implementados pela aplicao. O sistema operacional no v os threads, apenas o proceso como um todo. Podemos ter aplicaes multithread em ambientes monothread. So rpidos e ecientes, por no fazerem acessos ao kernel, e as mudanas de modo de acesso da UCP (usurio-kernel-usurio). Uma chamada a um dispositivo de E/S, feita por um thread, coloca todo o processo em estado de espera. O tratamento dos sinais tambm complexo, pois o processo ter que tratar o sinal e direcion-lo ao thread certo. 4.9.3.2 Threads em Modo Kernel (TMK)

Implementados pelo kernel. O sistema operacional gerencia diretamente os threads de um processo. Requer mudanas de modo de acesso, logo tem desempenho degradado - bem mais lentos. Chamadas bloqueantes colocam apenas o thread em estado de espera, no todo o processo. Podemos ter vrios threads de um mesmo processo em execuo simultnea, em UCPs diferentes.

CAPTULO 4. PROCESSOS E THREADS 4.9.3.3 Threads em Modo Hbrido (TMH)

24

Combina as vantagens dos threads em modo usurio (TMU) e em modo kernel (TMK), mas tambm as desvantagens. Um processo tem vrios TMKs, e cada TMK tem vrios TMUs. O sistema operacional escalona os TMKs, e eles escalonam os TMUs. O objetivo aumentar a exibilidade, j que apenas os TMKs so escalonados (diminuindo o nmero de mudanas de modo de acesso), mas tambm traz os problemas das chamadas bloqueantes, entre outras. 4.9.3.4 Scheduler activations

Os Threads em Modo Hbrido (TMH) tem problemas devido falta de comunicao entre os threads. desejvel unir o melhor das implementaes, fugindo dos problemas de cada uma. O scheduler activations foi implementado inicialmente na Universidade de Washington, e nessa forma, h uma estrutura de dados que facilita a troca de informaes entre o kernel e a biblioteca de threads. Essa estrutura o scheduler activations. O escalonamento feito pela prpria biblioteca, evitando as mudanas de modo de acesso, como por exemplo a ocorrncia de uma chamada bloqueante. Ambas as partes se comunicam, e trabalham cooperativamente.

Captulo 5 Sincronizao entre processos


5.1 Introduo

Anos 1960: sistemas operacionais multitarefa surgem as primeiras aplicaes que podem funcionar de maneira concorrente, ou seja: diferentes partes do cdigo do programa podem funcionar simultaneamente. Uso de subprocessos ou threads. Escalonamento organizado pelo SO. Objetivo: Aumentar o desempenho. Esses processos que compem a aplicao concorrente precisam compartilhar recursos: Exemplos: Arquivos, registros, dispositivos de E/S, regies de memria. Podem ocorrer situaes indesejveis, que podem at comprometer a execuo da aplicao. Importante garantir a integridade e a conabilidade. Necessidade das execues serem sincronizadas, a partir de mecanismos fornecidos pelo sistema operacional, para garantir o processamento correto A comunicao entre processos pode ser estabelecida usando mecanismos. necessrio que os processos estejam com sua execuo sincronizada Exemplos: (mecanismos de comunicao) Variveis compartilhadas da memria principal ou trocas de mensagens.

5.2
5.2.1
5.2.1.1

Concorrncia no cdigo fonte:


Comandos FORK e JOIN
Como funciona

FORK cria um subprocesso B a partir do processo A. 25

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

26

Figura 5.1: Sincronizao entre processos. Eles so concorrentes. JOIN sincroniza A com B A para e espera o m da execuo de B.

5.2.2
5.2.2.1

ParBegin e ParEnd (CoBegin e CoEnd)


Como funciona

Implementado de formas diferentes em vrias linguagens de programao. Ao invs de usar BEGIN e END como delimitadores de bloco, usa-se PARBEGIN e PAREND. Todos os comandos que estiverem no bloco sero executados de forma concorrente. * PARBEGIN: Ramica o cdigo, criando 1 processo para cada comando. * PAREND: Cria um ponto de sincronizao, reunindo todos os processos e seus resultados num processo principal.

5.3
5.3.1

Exemplos de problemas de sincronizao


Sistema de conta corrente

Atualizao do saldo, realizando entradas e sadas. 2 processos fazem lanamentos na concta corrente de um cliente. Um faz dbitos, e outro realiza crditos: Suponhamos ento, 2 processos (Caixa 1 e Caixa 2) realizando operaes na conta desse cliente.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

27

Figura 5.2: PARBEGIN e PAREND. Algorithm 5.1 Programa de Conta Corrente. Programa Conta Corrente; . . Leia (arquivo de contas, registro do cliente); Leia (valor a ser depositado ou retirado); Registro do cliente.Saldo Registro do cliente.Saldo + valor a ser depositado ou retirado; Grava (arquivo de contas, registro do cliente); . . . Caixa Comando Saldo no arquivo Valor Saldo na memria 1 Leia (arquivo de contas, ...) 1000 1000 1 Leia (valor a ser depositado ou retirado) 1000 -200 1000 1 Registro do cliente.Saldo 1000 -200 800 2 Leia (arquivo de contas, ...) 1000 1000 2 Leia (valor a ser depositado ou retirado) 1000 +300 1000 2 Registro do cliente.Saldo 1000 +300 1300 1 Grava (arquivo de contas, ...) 1000 -200 800 2 Grava (arquivo de contas, ...) 1000 +300 1300 Logo, temos uma incoerncia, j que um caixa quer salvar o valor de 1300, e o outro quer salvar o valor de 800. Qual deles est certo?

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

28

5.3.2

2 processos e 1 varivel

Processo A: Incrementa uma varivel. Processo B: Decrementa uma varivel. Algorithm 5.2 Exemplos de cdigo. Processo A: Coloca X em Ra. Soma 1 a Ra. Salva Ra em X. Processo B: Coloca X em Rb. Subtrai 1 a Rb. Salva Rb em X. Processo Comando X Ra Rb A Carrega 2 2 A Soma 2 3 B Carrega 2 2 B Subtrai 2 1 A Salva 3 3 B Salva 3 1 Mais uma incoerncia, pois X no poder ter 2 valores, 3 e 1.

5.4
5.4.1

Excluso Mtua
Condio de disputa

O problema de inconsistncia nos dados, devido falta de sincronizao.

5.4.2

Regio Crtica

A parte do cdigo-fonte onde feito o acesso aos recursos compartilhados. Objetivo: Obter a excluso mtua. Logo, s um programa pode acessar a sua regio crtica por vez.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

29

5.4.3

Excluso Mtua

A soluo mais simples para evitar os problemas de compartilhamento impedir que 2 ou mais processos acessem um mesmo recurso simultaneamente. Enquanto um processo estiver acessando determinado recurso, todos os demais processos que queiram acess-lo devero esperar pelo trmino da utilizao do recurso. Acesso de forma ordenada, organizada e individual ao recurso. Exclusividade de acesso. Exemplo: No problema do banco (subseo 5.3.1), basta garantir que o acesso conta (a regio crtica do cdigo) seja exclusivo: um espera equanto o outro acessa.

5.4.4

Situaes indesejveis

1. Starvation Tambm conhecida como espera indenida. Um dos processos nunca sai da sua regio crtica, e o outro "passa fome". Pode ocorrer em escalonamentos onde a escolha aleatria ou com base em prioridades. Uma soluo usar las de pedidos de alocao para cada recurso, e cada uma dessas las usando o escalonamento em la (FIFO). 2. Espera ocupada; Toda vez que um processo no consegue entrar na sua regio crtica, ele permanece repetidamente testando uma condio, tentando acessar o recurso. Isso continua at o processo persistente conseguir o acesso. Problema: Isso consome tempo do processador de forma desnecessria. 3. Um processo sai da regio crtica e no deixa que outros entrem. Recurso livre, mas ainda ligado a um processo.

5.5

Sincronizao condicional

Situao onde o acesso ao recurso compartilhado exige a sincronizao de processos vinculada a uma condio de acesso. Essa condio bloqueante para os processos. Exemplo: Modelo produtor-consumidor: O recurso compartilhado um buffer de espao limitado. Dois ou mais processos acessam o recurso:

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS Produtores - gravam no buffer Consumidores - leem o buffer Condies: Buffer vazio - consumidor espera Buffer cheio - produtor espera

30

Algorithm 5.3 Modelo produtor-consumidor. Programa PA1; Constante Tamanho do buffer = X; Variveis Buffer: vetor de dado (1 a X); D1, D2: dado; Conta: 0..X; Procedimento Produtor; Incio Repita Produz Dado (D1); Enquanto conta for igual a X no faa nada; Grava o buffer (Buffer, D1); Incrementa Conta; At que seja falso; Fim; Procedimento Consumidor; Procedimento Produtor; Incio Repita Enquanto conta for igual a 0 no faa nada; L o buffer (Buffer, D2); Consome Dado (D2); Decrementa Conta; At que seja falso; Fim; Incio Conta 0; Incio (em paralelo) Produtor; Consumidor; Fim (em paralelo); Fim. Nesse caso, teremos a espera ocupada.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

31

5.6
5.6.1
5.6.1.1

Solues para a excluso mtua


Solues por hardware
Desligar as interrupes

Algorithm 5.4 Desligamento das interrupes do sistema. Incio . . . Desliga as interrupes do sistema; Entra na Regio Crtica; Sai da Regio Crtica; Liga as interrupes do sistema; . . . Fim;

Dessa forma nenhum outro programa interrompe o primeiro. Maneira simples. Atrapalha a multiprogramao. Se o programa no religar as interrupes, trava tudo. Clock usa interrupes. Mltiplas UCPs - Essa informao (de desligamento e religamento) deve propagar para todas as UCPs. Usado s vezes com partes do kernel. 5.6.1.2 Instrues test-and-set

Instruo especial da UCP. L a variavel. Salva seu contedo em outra rea da memria. Grava um novo valor na mesma varivel. Dessa forma, 1 varivel compartilhada pode ser manipulada por 2 processos simultaneamente. Uso: Usa-se uma variavel booleana.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS * Falso = Qualquer processo pode acessar * Verdadeiro = Processo acessando o recurso. Manuseio simples Funciona bem com mltiplas UCP . Depende dessa instruo existir na UCP. Possibilidade de starvation.

32

5.6.2

Solues por software

Diversos algoritimos foram pensados ao longo do tempo. Uso de uma varivel de bloqueio. Testa se a regio crtica est liberada ao ler essa varivel. 5.6.2.1 Algoritmo 1

Algorithm 5.5 Algoritmo 1 para excluso mtua. Programa Algoritmo 1; Varivel Vez: caracter; Procedimento A; Incio Repita Enquanto Vez for igual a B no faa nada; Entre na Regio Crtica do procedimento A; Vez B; Realize o processamento do procedimento A; At que seja falso; Fim; Procedimento B; Incio Repita Enquanto Vez for igual a A no faa nada; Entre na Regio Crtica do procedimento B; Vez A; Realize o processamento do procedimento B; At que seja falso; Fim; Incio (em paralelo) Procedimento A; Procedimento B; Fim (em paralelo).

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS S funciona com dois processos. Acesso alternado. Se no alterar a varivel de bloqueio, o recurso ca sempre inacessvel, que gera starvation. 5.6.2.2 Algoritmo 2

33

Algorithm 5.6 Algoritmo 2 para excluso mtua. Programa Algoritmo 2; Variveis CA, CB: Booleano; Procedimento A; Incio Repita Enquanto CB for Verdadeiro no faa nada; CA Verdadeiro; Entre na Regio Crtica do procedimento A; CA Falso; Realize o processamento do procedimento A; At que seja falso; Fim; Procedimento B; Incio Repita Enquanto CA for Verdadeiro no faa nada; CB Verdadeiro; Entre na Regio Crtica do procedimento B; CB Falso; Realize o processamento do procedimento B; At que seja falso; Fim; Incio CAFalso; CBFalso; Incio (em paralelo) Procedimento A; Procedimento B; Fim (em paralelo). Fim.

Substituio da varivel de bloqueio por duas variveis, uma para cada processo. No h necessidade de acessar alternadamente. Se houver um problema, o recurso no ca bloqueado, a no ser que a falha seja dentro da regio crtica.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS 5.6.2.3 Algoritmo 3

34

Algorithm 5.7 Algoritmo 3 para excluso mtua. Programa Algoritmo 3; Variveis CA, CB: Booleano; Procedimento A; Incio Repita CAVerdadeiro; Enquanto CB for Verdadeiro no faa nada; Entre na Regio Crtica do procedimento A; CA Falso; Realize o processamento do procedimento A; At que seja falso; Fim; Procedimento B; Incio Repita CB Verdadeiro; Enquanto CA for Verdadeiro no faa nada; Entre na Regio Crtica do procedimento B; CB Falso; Realize o processamento do procedimento B; At que seja falso; Fim; Incio CAFalso; CBFalso; Incio (em paralelo) Procedimento A; Procedimento B; Fim (em paralelo). Fim. O problema do algoritmo anterior consiste em o processo ter algum problema quando est na sua regio crtica, e com isso o acesso ao recurso ca travado. Uma maneira de resolver o problema do algoritmo anterior mudar as variveis CA e CB antes de testar se o recurso est disponvel. S que temos um novo problema: ambos os processos podem car bloqueados. Se ambos mudarem os valores das variveis CA e CB, ningum entra na sua regio crtica e ningum usa o recurso. 5.6.2.4 Algoritmo 4

O processo entra na regio crtica sem saber se o outro est acessando o recurso.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS Algorithm 5.8 Algoritmo 4 para excluso mtua. Programa Algoritmo 4; Variveis CA, CB: Booleano; Procedimento A; Incio Repita CAVerdadeiro; Enquanto CB for Verdadeiro no faa nada; Incio CAFalso; { pequeno intervalo de tempo } CAVerdadeiro; Fim; Entre na Regio Crtica do procedimento A; CA Falso; Realize o processamento do procedimento A; At que seja falso; Fim; Procedimento B; Incio Repita CBVerdadeiro; Enquanto CA for Verdadeiro no faa nada; Incio CBFalso; { pequeno intervalo de tempo } CBVerdadeiro; Fim; Entre na Regio Crtica do procedimento B; CB Falso; Realize o processamento do procedimento B; At que seja falso; Fim; Incio CAFalso; CBFalso; Incio (em paralelo) Procedimento A; Procedimento B; Fim (em paralelo). Fim.

35

Uma maneira de evitar o bloqueio de ambos dando a chance de reverter o processo, e alterar novamente o valor das variveis CA e CB. Pode acontecer que ambos os processos alterem seu estado (varivel que marca a entrada na regio

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS critica) para falso, simultaneamente. Ou seja, teremos bloqueio para ambos. 5.6.2.5 Algoritmo de Dekker

36

A primeira soluo completa para o problema da excluso mtua. Baseada nos algoritmos 5.5 e 5.8 para obter a excluso mtua entre 2 processos. Lgica bastante complexa. 5.6.2.6 Algoritmo de Peterson

Soluo baseada no algoritmo de Dekker. Facilmente generalizado para n processos. Parecido com o algoritmo 5.7. Como funciona: Cada processo tem uma varivel de estado que sinaliza o desejo de entrar na regio crtica. Uma varivel usada para arbitrar conitos: a varivel cede o uso para outro processo. O algoritmo de Dekker e a verso inicial do algoritmo de Peterson garantem a excluso mtua de 2 processos. O algoritmo de Peterson foi estendido para o caso de N processos por Hofri (1990). Lamport props um algoritmo para garantir a excluso mtua, que o algoritmo do padeiro. Todos ainda sofrem de espera ocupada (seo 2). Uma maneira de resolver usando semforos (ou monitores) como mecanismos de sincronizao.

5.7

Semforos

Ideia simples para sincronizao. Conceito proposto pro Dijkstra em 1965 Semforo: Varivel inteira e no negativa. So vinculados ao recurso compartilhado. S pode ser manipulada por 2 instrues. 1. UP - incremento. 2. DOWN - decremento. 2 tipos: binrios, ou mutexes (mutual exclusion semaphores): 2 estados. contadores: n estados.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS Algorithm 5.9 Algoritmo de Peterson para excluso mtua. Programa Algoritmo Peterson; Variveis CA, CB: Booleano; Vez: Caractere; Procedimento A; Incio Repita CAVerdadeiro; Vez B; Enquanto CB for Verdadeiro e Vez for igual a B, no faa nada; Entre na Regio Crtica do procedimento A; CA Falso; Realize o processamento do procedimento A; At que seja falso; Fim; Procedimento B; Incio Repita CB Verdadeiro; Vez A; Enquanto CA for Verdadeiro e Vez for igual a A, no faa nada; Entre na Regio Crtica do procedimento B; CB Falso; Realize o processamento do procedimento B; At que seja falso; Fim; Incio CAFalso; CBFalso; Incio (em paralelo) Procedimento A; Procedimento B; Fim (em paralelo). Fim.

37

5.7.1

Excluso mtua com semforos

Semforo ligado ao recurso compartilhado: Semforo est com 1, sofre um DOWN, e muda para o estado 0. o processo entra na regio crtica. Semforo est com 0, sofre um DOWN (no temos o estado -1) o processo mantido em estado de espera. Semforo est com 0, sofre um UP, e muda para o estado 1 o processo sai da regio crtica.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

38

Algorithm 5.10 Cdigo fonte comum para exemplos com semforos. tipo semaforo = registro valor = inteiro la de espera {lista de processos em espera} m; Procedimento DOWN (s: inteiro); Incio Se s=0 ento coloca o processo na la de espera; s; Fim; Procedimento UP (s:inteiro); Incio s++; Se tem processo esperando, ento coloca em execuo; Fim;

Algorithm 5.11 Excluso mtua usando semforos. Programa Semforo 1; Varivel A: Semforo 1; Procedimento processo A; Incio Repita DOWN(s); Entra na regio crtica de A; UP(s); at que seja falso; Fim; Procedimento processo B; Incio Repita DOWN(s); Entra na regio crtica de B; UP(s); at que seja falso; Fim; Incio (em paralelo) Procedimento A; Procedimento A; Fim (em paralelo);

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

39

5.7.2

Sincronizao condicional com semforos

Podemos usar semforos para lidar com a sincronizao condicional. Quando um processo solicita uma operao de E/S, ele executa um DOWN no semforo associado ao recurso, e colocado em estado de espera at que a operao seja completada. Quando a operao termina, a rotina de tratamento da interrupo executa um UP no semforo, liberando o processo do estado de espera.

5.7.3

Jantar dos lsofos

Problema: 5 lsofos, que so os processos. 5 pratos, que so as regies crticas. 5 garfos, que so os recursos compartilhados. Limitaes: 1. O lsofo ou pensa (estado de espera), ou come (entra na regio crtica). 2. Para comer, o lsofo precisa de 2 garfos. Deadlock Ocorre se cada um dos lsofos pegar um garfo. Algumas solues 1. O nmero de lsofos mesa menor do que o nmero de garfos (neste caso, no mximo 4). 2. Um lsofo s pode pegar um garfo se o outro estiver disponvel. 3. O lsofo mpar pega o garfo da direita e depois da esquerda, e o lsofo par pega o grafo da esquerda e depois da direita. Ainda temos o risco de um deadlock. Para evitar, podemos acrescentar um novo semforo contador, para marcar os lugares comeando em 4 (menor do que nmero de talheres), e dessa forma garantir que teremos sempre mais talhetes do que lsofos mesa. e fazendo down e up tambem. Dessa forma, teremos sempre mais talheres do que lsofos a mesa.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS Algorithm 5.12 Algoritmo de sincronizao condicional usando semforos. Programa Semaforo2; Constante Tamanho do buffer = 2; Tipo Tipo de dado = {um tipo qualquer}; Variveis Vazio: semforo = Tamanho do buffer; Cheio, evento: semforo = 0; Mutex: semforo = 1; Buffer = vetor de tipo de dado (1 a Tamanho do buffer); Dado 1, Dado 2: Tipo de dado; Procedimento Produtor; Incio Repita Produz Dado (Dado 1); Down (Vazio); Down (Mutex); Grava no buffer (Dado 1, Buffer); Up (Mutex); Up (Cheio); At que seja falso; Fim; Procedimento Consumidor; Incio Repita Down (Cheio); Down (Mutex); L o buffer (Dado 2, Buffer); Up (Mutex); Up (Vazio); Consome Dado (Dado 2); At que seja falso; Fim; Incio (em paralelo) Produtor; Consumidor; Fim (em paralelo).

40

5.8

Monitores
Por qu? Os semforos so no-estruturados, e qualquer engano por parte do programador pode levar a problemas de sincronizao.

Mecanismos de sincronizao semelhantes aos semforos, mas de alto nvel e estruturados.

Os monitores so hoje em dia estruturas criadas dentro dos programas, que agregam procedimentos e

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS Algorithm 5.13 Jantar dos lsofos. Programa lsofo 1; Variveis Garfos: vetor(1 a 4) de semaforo =1; i: inteiro; Procedimento lsofo (i:inteiro); Incio repita pensando; down(garfos(i)); down(garfos((i+1) mod 5)); comendo; up(garfos(i); up(garfos(i+1) mod 5)); at que seja falso; Fim; Incio (em paralelo) Para ide 1 ate 5 faa lsofo(i) Fim (em paralelo).

41

variveis, e quem garante a excluso mtua o compilador: O programa no tem acesso s variveis que seriam os semforos, no caso do monitor. As variveis globais, denidas dentro dos monitores, s so visveis dentro dessas estruturas. Os procedimentos criados dentro dos monitores s so acessveis atravs dos mesmos. O programa verica com o S. O. se existe outro processo, gerando uma possvel condio de disputa. Se existe, o programa aguarda a sua vez, cando numa la de espera. Se no existe, o programa entra na sua regio crtica. Vrias linguagens j tem estruturas implementadas para lidar com monitores, como Modula-2, Modula-3, Concurrent Pascal, etc.

5.9

Troca de mensagens

Mecanismo de comunicao e sincronizao entre processos. O uso desse mecanismo dispensa o uso de variveis compartilhadas, mas exige um canal de comunicao, que pode ser um buffer ou um link de dados. As execues entre os rpocessos comunicantes devem estsr sincronizadas, para manter a relao causaefeito da comunicao (a mensagem deve chegar ao destino com um tempo maior do que saiu). Dois tipos: 1. Comunicao direta

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

42

Mensagem endereada diretamente ao receptor. S h a troca de mensagens, apenas. preciso declarar claramente quem envia e quem recebe. Se mudar, tem que mudar dentro do cdigo. 2. Comunicao indireta Uso de uma rea compartilhada que faz o papel de "caixa de correio" (mailbox, ou port). Essa rea compartilhada pode ser associada a vrios processos. Os procedimentos passam a enderear a rea compartilhada, e no os processos. Logo, caso mude o processo, no preciso fazer alteraes no cdigo.

5.10

Deadlock

Processo aguarda um recurso que nunca vir, ou um evento que nunca ocorrer. Devido a isso, ele no libera o recurso que est sob seu uso, e outros processos acabam tendo o mesmo problema, gerando uma reao em cadeia que cria o que chamamos de espera circular: 1. O Processo A retm o recurso 1 e pede o recurso 2, que est com o Processo B. 2. O Processo B retm o recurso 2 e pede o recurso 3, que est com o Processo C. 3. O Processo C retm o recurso 3 e pede o recurso 3, que est com o Processo A. Quatro condies para termos um deadlock: 1. Excluso mtua - O processo est associado a um recurso. 2. Espera por recurso - Processo no aguardo. 3. No-preempo - Recurso no pode ser liberado para outros processos fazerem uso. 4. Espera circular - Processo aguarda por um recurso que est associado a outro processo, e por a vai.

5.10.1

Preveno de deadlocks

Objetivo: Garantir que uma das quatro condies acima no acontea: 1. Se tirarmos a condio 1, gera inconsistncias. 2. Se tirarmos a condio 2, quem tem recursos, tem que liberar para poder pegar novos recursos. (a) Desperdcio, na utilizao dos recursos. (b) No d para alocar previamente tudo o que o processo vai usar. 3. Se tirarmos a condio 3, ento permitiremos que um recurso seja tirado de um processo caso outro processo tambm precise do recurso. S que isto pode gerar problemas, como por exemplo o processo ter a sua execuo interrompida. Tambm poderemos ter starvation. 4. Se tirarmos a condio 4, cada processo s pode alocar um recurso de cada vez, e para alocar um novo, preciso liberar o primeiro. Isto restringe severamente o compartilhamento de programas.

CAPTULO 5. SINCRONIZAO ENTRE PROCESSOS

43

Logo, prevenir o deadlock possvel, mas todas as solues apresentadas no so nada prticas, e consequentemente, no so usadas. A maneira mais adotada usar o algoritmo do Banqueiro (Dikjstra, 1965), onde cada processo informa ao sistema operacional qual recurso est usando, qual o estado, entre outras informaes. Assim, o algorimo dene qual o estado de alocao de um recurso, e com base nisso, previne possveis deadlocks.

5.10.2

Deteco de deadlocks

Os sistemas operacionais mantm estruturaa de dados capazes de armazenar informaes do sistema, e identicar cada recurso do sistema, quem os est alocando, entre outras infromaes. A estrutura atualizada com recursos alocados ou liberados, e observando-a, o sistema pode detectar a espera circular que porventura ocorra.

5.10.3

Correo de deadlocks

Depois da deteco, a correo. Quebra da espera circular. Elimina-se processos para liberar recursos. S que isto pode gerar instabilidades no sistema - Qual processo deve ser eliminado? Rollback - Liberar alguns recursos temporariamente, para depois realoc-los aos processos congelados, continuando de onde parou. Na prtica difcil, pois depende do processos a ser congelado, se d para par-lo, por exemplo.

Captulo 6 Gerncia da UCP


6.1 Escalonamento

Processo de seleo de um processo a ser executado, e o conjunto de critrios que denem a la de execuo do sistema operacional.

6.1.1

Funes bsicas

Manter a UCP o mximo ocupada. Balancear o uso da UCP entre os processos. Maximizar o throughput. Dar tempos de resposta razoveis.

6.1.2

Partes

escalonador (scheduler) decide. dispatcher executa.

6.1.3

Critrios

uso da UCP em porcentagem. throughput n de processos / tempo. tempo de UCP. tempo de espera. tempo de turnaround. tempo de resposta.

44

CAPTULO 6. GERNCIA DA UCP

45

6.1.4

Objetivos

Maximizar uso e throughput. Minimizar tempos.

6.2
6.2.1

Tipos de Escalonamento
No-preemptivos

O processo executado enquanto quiser 6.2.1.1 FIFO (First In First Out)

O 1 a entrar na la o 1 a ser executado. Foi usado em sistemas batch. Simples, mas no d para prever quando o processo termina ou vai para estado de espera. Exemplo: Temos 3 processos a serem executados, com seus respectivos tempos de processador e ordem de execuo: Processo Tempo de UCP (em unidades de tempo) Ordem A 10 1 B 4 2 C 3 3

Figura 6.1: Escalonamento FIFO. O tempo mdio de resposta ento, Tm =


0+10+14 3

24 3

= 8 u.t.

CAPTULO 6. GERNCIA DA UCP 6.2.1.2 SJF (Shortest Job First)

46

A la de execuo rearranjada de forma que a ordem de execuo seja do processo que gasta menos tempo para o processo que usa mais tempo de UCP. O tempo mdio de resposta baixo. muito complicado prever quem o menor de todos. Em sistemas interativos, imprevisvel. Exemplo: Temos os mesmos 3 processos a serem executados, s que agora, a ordem de execuo est de acordo com o processo mais rpido para o processo mais lento: Processo Tempo de UCP (em unidades de tempo) Ordem A 10 3 B 4 2 C 3 1

Figura 6.2: Escalonamento SJF. O tempo mdio de resposta ento, Tm = 6.2.1.3 Cooperativo
0+3+7 3

10 3

= 3, 3 u.t.

Um processo pode car em execuo o tempo que quiser. Ele voluntariamente volta la de prontido ou interrompe a sua execuo, liberando a UCP. Foi usado em ambientes operacionais, com o Windows (das verses 1.0 3.11. Situaes indesejadas podem ocorrer, como a no liberao da UCP.

6.2.2

Preemptivos

O sistema operacional interrompe o processo e coloca outro em execuo.

CAPTULO 6. GERNCIA DA UCP 6.2.2.1 Circular

47

Mais conhecido de todos. Muitas variaes. Conceito de fatia de tempo. No h monoplio de UCP. Processos CPU-Bound so privilegiados em detrimento de processos I/O-Bound. Problema da escolha de fatia de tempo: Se for muito pequena, muitas preempes, e o sistema operacional passa mais tempo escalonando do que executando. Se for muito grande, torna-se um escalonamento FIFO, na prtica. Uso de uma 2 la, de prontido, para o processo I/O-Bound, que tem preferncia para entrar em execuo do que os processos CPU-Bound torna o balanceamento mais equilibrado (fatia de tempo menor). Exemplo: Temos os mesmos 3 processos a serem executados, com uma fatia de tempo de 2 u.t.: Processo Tempo de UCP (em unidades de tempo) Ordem A 10 1 B 4 2 C 3 3

Figura 6.3: Escalonamento Circular. O tempo mdio de resposta ento, : Tm = 6.2.2.2 Prioridades
0+2+4+6+8+10+11 7

41 7

= 5, 8 u.t.

Baseado num valor associado, a prioridade: maior prioridade, melhor lugar na la de execuo. No h preempo por tempo, a mudana voluntria, ou um processo de prioridade maior vai para o estado de prontido, e toma o lugar do outro na execuo. Pode tambm ser no-preemptivo

CAPTULO 6. GERNCIA DA UCP A prioridade pode ser: Esttica no muda. Dinmica muda ao longo do tempo. Risco de starvation, o que pode ser evitado com prioridade dinmica. Exemplo: Temos os mesmos 3 processos a serem executados: Processo Tempo de UCP (em unidades de tempo) Prioridade A 10 2 B 4 1 C 3 3

48

Figura 6.4: Escalonamento por prioridades. O tempo mdio de resposta ento, : Tm = 6.2.2.3 Circular com Prioridades
0+3+13 3

16 3

= 5, 3 u.t.

Aqui, une-se conceitos de prioridade associada ao processo e fatia de tempo, logo o processo ca em execuo at que: 1. Ocorra uma preempo por : (a) Tempo (b) Prioridade 2. Ou o processo encerre a sua execuo. Este escalonamento amplamente usado, permitindo melhor balanceamento no uso da UCP. 6.2.2.4 Mltiplas las

Vrias las de execuo, cada uma com uma prioridade. Os processos so associados as las em funo de suas caractersticas. Cada la pode ter um mecanismo prprio de escalonamento Se o processo mudar de comportamento, ele no pode mudar de la

CAPTULO 6. GERNCIA DA UCP 6.2.2.5 Mltiplas las com realimentao

49

Aqui, os processos podem trocar de la durante o processamento. Mecanismo de ajuste dinmico, ou adaptativo. Exemplo: vrias las: Escalonamento com fatias de tempo diferentes para cada la 1. Processos I/O Bound - cam nas las com maior prioridade. 2. Processos CPU-Bound - comeam na la de alta prioridade, executado e desce para uma la de menor prioridade. Quanto mais tempo o processo usa da UCP, mais ele cai para las de menor prioridade. Problemas: 1. Se o comportamento do processo mudar (CPU-Bound para I/O-Bound, por exemplo), isso compromete o tempo de resposta. 2. Algoritmo muito complexo, e consequentemente, lento.

6.3
6.3.1

Politicas de Escalonamento
Tempo Compartilhado

Processamento interativo, na maioria dos casos. Compartilhamento dos recursos de forma equilibrada. Exemplos: FIFO Processo CPU-Bound leva clara vantagem. Circular Mais equilibrado depende do tamanho da fatia. Muito grande vira FIFO. Muito pequeno ca mais tempo trocando de contexto do que executando o processo. Circular com prioridades Para compensar, associa-se prioridades maiores para os processos I/O-Bound. Fica mais renado se as prioridades forem dinmicas mais adotado hoje em dia. Deve-se levar em conta que algumas operaes de E/S so mais lentos do que outras

6.3.2

Tempo Real

Algumas aplicaes exigem respostas imediatas, ou em intervalo de tempo rgidos. Uso de escalonamento por prioridades prioridade esttica. Alguns sistemas tem uma taxa de prioridade onde neles ocorre exclusivamente a preempo por prioridade.

You might also like