Você está na página 1de 211

SISTEMAS OPERACIONAIS

APOSTILA por Luclia Ribeiro













Nada lhe posso dar que j no exista em voc mesmo. No posso abrir-lhe outro mundo de
imagens, alm daquele que h em sua prpria alma. Nada lhe posso dar a no ser a oportuni-
dade, o impulso, a chave. Eu o ajudarei a tornar visvel o seu prprio mundo, e isso tudo.
(Hermann Hesse)

Verso 3.0 ago/05

Sistemas Operacionais Lucilia Ribeiro
2

ndice

"A alma tem terrenos infranqueveis, onde retemos nossos
sonhos dourados ou um tenebroso drago. Assim fazemos
por medo de que ambos nos escapem, temendo que nos
roubem o ouro ou nos devore o drago (Ralph Emerson)

NDICE .................................................................................................................................................................. 2
VISO GERAL..................................................................................................................................................... 7
1.1 INTRODUO ................................................................................................................................... 7
1.2 O SISTEMA OPERACIONAL - FUNCIONALIDADES.................................................................... 7
1.2.2 O SISTEMA OPERACIONAL VISTO COMO UM GERENTE DE RECURSOS............................. 7
1.3 MQUINA VIRTUAL ........................................................................................................................ 8
1.4 HISTRIA DOS SISTEMAS OPERACIONAIS................................................................................. 8
1.4.1 DCADA DE 1940 (Ausncia de SOs)............................................................................................ 9
1.4.2 DCADA DE 1950 (Processamento em Batch) .............................................................................. 9
1.4.3 DCADA DE 1960 (Processamento Time-sharing)........................................................................ 9
1.4.4 DCADA DE 1970 (Multiprocessamento) ...................................................................................... 9
1.4.5 DCADA DE 1980 (Computadores Pessoais):............................................................................. 10
1.4.6 DCADA DE 1990 (Sistemas Distribudos): ................................................................................ 10
1.5 CLASSIFICAO DOS SISTEMAS OPERACIONAIS.................................................................. 10
1.5.1 SISTEMAS MONOPROGRAMVEIS OU MONOTAREFAS........................................................ 10
1.5.2 SISTEMAS MULTIPROGRAMVEIS OU MULTITAREFAS ....................................................... 11
a) Sistemas Batch.................................................................................................................................... 11
b) Sistemas de Tempo Compartilhado.................................................................................................... 11
c) Sistemas de Tempo Real ..................................................................................................................... 12
1.5.3 SISTEMAS COM MLTIPLOS PROCESSADORES .................................................................... 12
1.6 EXERCCIOS .................................................................................................................................... 14
CONCEITOS DE HARDWARE E SOFTWARE............................................................................................ 16
2.1 INTRODUO ................................................................................................................................. 16
2.2 UNIDADES MTRICAS................................................................................................................... 16
2.3 HARDWARE..................................................................................................................................... 16
2.3.1 PROCESSADOR............................................................................................................................ 17
2.3.2 MEMRIA PRINCIPAL................................................................................................................ 17
2.3.3 MEMRIA CACHE....................................................................................................................... 18
2.3.4 MEMRIA SECUNDRIA............................................................................................................ 19
2.3.5 DISPOSITIVOS DE ENTRADA/SADA......................................................................................... 19
2.3.6 BARRAMENTO ............................................................................................................................. 20
2.3.7 PIPELINING ................................................................................................................................. 21
2.3.8 ARQUITETURAS RISC e CISC..................................................................................................... 22
2.3.9 ANLISE DE DESEMPENHO...................................................................................................... 22
2.4 SOFTWARE ...................................................................................................................................... 23
2.4.1 TRADUTOR................................................................................................................................... 23
2.4.2 INTERPRETADOR........................................................................................................................ 24
2.4.3 LINKEDITOR................................................................................................................................ 24
2.4.4 INTERPRETADOR DE COMANDOS e LINGUAGEM DE CONTROLE..................................... 24
2.4.5 ATIVAO / DESATIVAO DO SISTEMA................................................................................ 24
2.5 EXERCCIOS .................................................................................................................................... 25
CONCORRNCIA ............................................................................................................................................. 27
3.1 INTRODUO ................................................................................................................................. 27
3.2 INTERRUPO E EXCEO.......................................................................................................... 28
3.3 OPERAES DE ENTRADA/SADA ............................................................................................. 29
3.4 BUFERIZAO................................................................................................................................ 30
3.5 SPOOLING........................................................................................................................................ 30
3.6 REENTRNCIA................................................................................................................................ 31
3.7 EXERCCIOS .................................................................................................................................... 31

Sistemas Operacionais Lucilia Ribeiro
3
ESTRUTURA DO SISTEMA OPERACIONAL.............................................................................................. 32
4.1 INTRODUO ................................................................................................................................. 32
4.2 CHAMADAS DE SISTEMA (SYSTEM CALLS) ................................................................................. 32
4.3 MODOS DE ACESSO....................................................................................................................... 33
4.4 ARQUITETURA MONOLTICA...................................................................................................... 34
4.5 ARQUITETURA DE CAMADAS..................................................................................................... 34
4.6 MQUINA VIRTUAL ...................................................................................................................... 35
4.7 EXERCCIOS .................................................................................................................................... 35
PROCESSOS....................................................................................................................................................... 36
5.1 INTRODUO ................................................................................................................................. 36
5.2 ESTRUTURA DO PROCESSO......................................................................................................... 36
5.2.1 CONTEXTO DE HARDWARE...................................................................................................... 37
5.2.2 CONTEXTO DE SOFTWARE ....................................................................................................... 37
5.2.3 ESPAO DE ENDEREAMENTO............................................................................................... 38
5.2.4 BLOCO DE CONTROLE DE PROCESSO ................................................................................... 39
5.3 ESTADOS DO PROCESSO .............................................................................................................. 39
5.4 MUDANA DE ESTADO DO PROCESSO..................................................................................... 39
5.5 CRIAO E ELIMINAO DE PROCESSOS................................................................................ 40
5.6 PROCESSOS INDEPENDENTES, SUBPROCESSOS E THREADS .............................................. 41
5.7 PROCESSOS PRIMEIRO (FOREGROUND) E SEGUNDO PLANO (BACKGROUND) ................ 42
5.8 PROCESSOS LIMITADOS POR CPU (CPU-BOUND) E POR E/S (I/O-BOUND).......................... 43
5.9 SELEO DE PROCESSOS............................................................................................................. 43
5.9.1 FILAS PARA SELEO DE PROCESSOS................................................................................... 43
5.9.2 ESCALONADORES....................................................................................................................... 43
5.10 EXERCCIOS .................................................................................................................................... 44
THREADS............................................................................................................................................................ 46
6.1 INTRODUO ................................................................................................................................. 46
6.2 THREADS ......................................................................................................................................... 46
6.3 AMBIENTE MONOTHREAD.......................................................................................................... 47
6.4 AMBIENTE MULTITHREAD.......................................................................................................... 47
6.5 ARQUITETURA E IMPLEMENTAO......................................................................................... 49
6.5.1 THREADS EM MODO USURIO ................................................................................................ 49
6.5.2 THREADS EM MODO KERNEL .................................................................................................. 50
6.5.3 THREADS EM MODO HBRIDO................................................................................................. 50
6.6 MODELOS DE PROGRAMAO................................................................................................... 51
6.7 EXERCCIOS .................................................................................................................................... 51
SINCRONIZAO E COMUNICAO ENTRE PROCESSOS................................................................. 52
7.1 INTRODUO ................................................................................................................................. 52
7.2 SINCRONIZAO........................................................................................................................... 52
7.3 ESPECIFICAO DE CONCORRNCIA EM PROGRAMAS....................................................... 54
7.4 PROBLEMAS DE COMPARTILHAMENTO DE RECURSOS....................................................... 54
7.5 EXCLUSO MTUA....................................................................................................................... 56
7.6 SOLUES DE HARDWARE ......................................................................................................... 56
7.6.1 DESABILITAO DAS INTERRUPES.................................................................................... 56
7.6.2 INSTRUO TEST-AND-SET....................................................................................................... 57
7.7 SOLUES DE SOFTWARE........................................................................................................... 58
7.7.1 PRIMEIRO ALGORITMO: ESTRITA ALTERNNCIA................................................................. 58
7.7.2 SEGUNDO ALGORITMO:............................................................................................................ 58
7.7.3 TERCEIRO ALGORITMO: ........................................................................................................... 59
7.7.4 QUARTO ALGORITMO: .............................................................................................................. 60
7.7.5 ALGORITMO DE PETERSON...................................................................................................... 60
7.8 PROBLEMA DO PRODUTOR-CONSUMIDOR OU SINCRONIZAO CONDICIONAL .......... 61
7.9 SEMFOROS.................................................................................................................................... 63
7.9.1 EXCLUSO MTUA UTILIZANDO SEMFOROS..................................................................... 63
7.9.2 SINCRONIZAO CONDICIONAL UTILIZANDO SEMFOROS ............................................. 64
7.10 MONITORES..................................................................................................................................... 65
7.10.1 EXCLUSO MTUA UTILIZANDO MONITORES................................................................. 65
7.10.2 SINCRONIZAO CONDICIONAL UTILIZANDO MONITORES ......................................... 66
7.11 TROCA DE MENSAGENS............................................................................................................... 68

Sistemas Operacionais Lucilia Ribeiro
4
7.12 PROBLEMAS CLSSICOS DE SINCRONIZAO ...................................................................... 68
7.12.1 PROBLEMA DOS FILSOFOS GLUTES............................................................................. 68
7.12.2 PROBLEMA DO BARBEIRO DORMINHOCO........................................................................ 69
7.13 EXERCCIOS .................................................................................................................................... 69
DEADLOCK........................................................................................................................................................ 72
8.1 INTRODUO ................................................................................................................................. 72
8.2 EXEMPLOS DE DEADLOCKS........................................................................................................ 72
8.2.1 DEADLOCK DE TRFEGO......................................................................................................... 72
8.2.2 DEADLOCK SIMPLES DE RECURSOS ...................................................................................... 72
8.2.3 DEADLOCK EM SISTEMAS DE SPOOLING.............................................................................. 72
8.2.4 ADIAMENTO INDEFINIDO......................................................................................................... 73
8.3 RECURSOS ....................................................................................................................................... 73
8.4 QUATRO CONDIES NECESSRIAS PARA DEADLOCKS.................................................... 74
8.5 O MODELO DO DEADLOCK.......................................................................................................... 74
8.6 MTODOS PARA LIDAR COM DEADLOCKS.............................................................................. 76
8.7 O ALGORITMO DO AVESTRUZ.................................................................................................... 76
8.8 DETECO DE DEADLOCKS........................................................................................................ 76
8.8.1 DETECO DO DEADLOCK COM UM RECURSO DE CADA TIPO....................................... 76
8.8.2 DETECO DO DEADLOCK COM VRIOS RECURSOS DE CADA TIPO............................. 77
8.9 RECUPERAO DE DEADLOCKS................................................................................................ 78
8.9.1 RECUPERAO ATRAVS DA PREEMPO........................................................................... 78
8.9.2 RECUPERAO ATRAVS DE VOLTA AO PASSADO.............................................................. 78
8.9.3 RECUPERAO ATRAVS DE ELIMINAO DE PROCESSOS.............................................. 78
8.10 TENTATIVAS DE EVITAR O DEADLOCK................................................................................... 79
8.10.1 ESTADOS SEGUROS E INSEGUROS ..................................................................................... 79
8.10.2 ALGORITMO DO BANQUEIRO PARA UM NICO TIPO DE RECURSO............................ 79
8.11 PREVENO DE DEADLOCKS..................................................................................................... 80
8.11.1 ATACANDO O PROBLEMA DA EXCLUSO MTUA........................................................... 80
8.11.2 ATACANDO O PROBLEMA DA POSSE E DA ESPERA......................................................... 80
8.11.3 ATACANDO O PROBLEMA DA CONDIO DE NO-PREEMPO................................. 80
8.11.4 ATACANDO O PROBLEMA DA ESPERA CIRCULAR........................................................... 80
8.12 EXERCCIOS .................................................................................................................................... 81
GERNCIA DO PROCESSADOR ................................................................................................................... 83
9.1 INTRODUO ................................................................................................................................. 83
9.2 FUNES BSICAS........................................................................................................................ 83
9.3 CRITRIOS DE ESCALONAMENTO............................................................................................. 83
9.4 ESTRATGIAS DE ESCALONAMENTO....................................................................................... 84
9.5 ESCALONAMENTO FIRST COME FIRST SERVED (FCFS) OU FIFO......................................... 84
9.6 ESCALONAMENTO MENOR JOB PRIMEIRO OU SJF (SHORTEST JOB FIRST) ............................. 85
9.7 ESCALONAMENTO CIRCULAR OU ROUND ROBIN.................................................................. 86
9.8 ESCALONAMENTO POR PRIORIDADES..................................................................................... 87
9.9 ESCALONAMENTO POR MLTIPLAS FILAS............................................................................. 88
9.10 EXERCCIOS .................................................................................................................................... 89
GERNCIA DE MEMRIA............................................................................................................................. 93
10.1 INTRODUO ................................................................................................................................. 93
10.2 FUNES BSICAS........................................................................................................................ 93
10.3 ALOCAO CONTGUA SIMPLES............................................................................................... 93
10.4 TCNICA DE OVERLAY................................................................................................................... 93
10.5 ALOCAO PARTICIONADA....................................................................................................... 94
10.5.1 ALOCAO PARTICIONADA ESTTICA.............................................................................. 94
10.5.2 ALOCAO PARTICIONADA DINMICA............................................................................. 95
10.5.3 ESTRATGIAS DE ALOCAO DE PARTIO.................................................................... 97
10.6 SWAPPING ....................................................................................................................................... 99
10.7 EXERCCIOS .................................................................................................................................. 100
MEMRIA VIRTUAL..................................................................................................................................... 103
11.1 INTRODUO ............................................................................................................................... 103
11.2 ESPAO DE ENDEREAMENTO VIRTUAL.............................................................................. 103
11.3 MAPEAMENTO.............................................................................................................................. 104
11.4 PAGINAO.................................................................................................................................. 104

Sistemas Operacionais Lucilia Ribeiro
5
11.4.1 PAGINAO MULTINVEL .................................................................................................. 107
11.4.2 POLTICAS DE BUSCA DE PGINAS.................................................................................. 108
11.4.3 POLTICAS DE ALOCAO DE PGINAS.......................................................................... 109
11.4.4 POLTICAS DE SUBSTITUIO DE PGINAS................................................................... 109
11.4.5 WORKING SET ...................................................................................................................... 110
11.4.6 ALGORITMOS DE SUBSTITUIO DE PGINAS.............................................................. 111
11.5 SEGMENTAO............................................................................................................................ 114
11.6 SEGMENTAO PAGINADA...................................................................................................... 115
11.7 EXERCCIOS .................................................................................................................................. 116
SISTEMA DE ARQUIVOS.............................................................................................................................. 122
12.1 INTRODUO ............................................................................................................................... 122
12.2 ARQUIVOS ..................................................................................................................................... 122
12.2.1 MTODO DE ACESSO.......................................................................................................... 122
12.2.2 IMPLEMENTAO DE ARQUIVOS..................................................................................... 123
12.3 MTODOS DE ALOCAO.......................................................................................................... 124
12.3.1 ALOCAO CONTGUA....................................................................................................... 124
12.3.2 ALOCAO COM LISTA LIGADA........................................................................................ 125
12.3.3 ALOCAO COM LISTA LIGADA USANDO UM NDICE.................................................. 125
12.4 GERNCIA DE ESPAO EM DISCO............................................................................................ 126
12.5 CONTROLE DE BLOCOS LIVRES ............................................................................................... 126
12.5.1 MAPA DE BITS ...................................................................................................................... 126
12.5.2 LISTA ENCADEADA.............................................................................................................. 126
12.5.3 AGRUPAMENTO................................................................................................................... 126
12.5.4 CONTADORES....................................................................................................................... 126
12.6 CONSISTNCIA DO SISTEMA DE ARQUIVOS ......................................................................... 127
12.6.1 CONSISTNCIA EM BLOCOS .............................................................................................. 127
12.7 PERFORMANCE DO SISTEMA DE ARQUIVOS......................................................................... 127
12.7.1 CACHE................................................................................................................................... 127
12.7.2 LEITURA ANTECIPADA DE BLOCOS ................................................................................. 127
12.7.3 REDUO DO MOVIMENTO DO BRAO DO DISCO....................................................... 128
12.8 EXERCCIOS .................................................................................................................................. 128
GERNCIA DE DISPOSITIVOS.................................................................................................................... 129
13.1 INTRODUO ............................................................................................................................... 129
13.2 ACESSO AO SUBSISTEMA DE ENTRADA E SADA................................................................. 129
13.3 SUBSISTEMA DE ENTRADA E SADA....................................................................................... 130
13.4 DEVICE DRIVERS ......................................................................................................................... 131
13.5 CONTROLADORES....................................................................................................................... 131
13.6 DISPOSITIVOS DE ENTRADA E SADA..................................................................................... 132
13.7 DISCOS RGIDOS........................................................................................................................... 132
13.7.1 TEMPO DE ACESSO ............................................................................................................. 133
13.7.2 ENTRELAAMENTO (interleaving) ...................................................................................... 133
13.7.3 ESCALONAMENTO DO BRAO DO DISCO....................................................................... 134
13.8 EXERCCIOS .................................................................................................................................. 136
MULTIMDIA................................................................................................................................................... 137
14.1 INTRODUO ............................................................................................................................... 137
14.2 ARQUIVOS MULTIMDIA .................................................................................................................. 138
14.2.1 CODIFICAO DE UDIO.................................................................................................. 139
14.2.2 CODIFICAO DE VDEO................................................................................................... 139
14.3 COMPRESSO DE VDEO................................................................................................................... 140
14.3.1 O PADRO JPEG .................................................................................................................. 140
14.3.2 O PADRO MPEG................................................................................................................. 142
14.4 ESCALONAMENTO DE PROCESSOS MULTIMDIA....................................................................... 143
14.4.1 ESCALONAMENTO DE PROCESSOS HOMOGNEOS ...................................................... 143
14.4.2 ESCALONAMENTO GERAL DE TEMPO REAL................................................................... 144
14.4.3 ESCALONAMENTO POR TAXA MONOTNICA................................................................. 145
14.4.4 ESCALONAMENTO PRAZO MAIS CURTO PRIMEIRO...................................................... 146
14.5 PARADIGMAS DE SISTEMAS DE ARQUIVOS MULTIMDIA....................................................... 147
14.5.1 FUNES DE CONTROLE VCR .......................................................................................... 147
14.5.2 VDEO QUASE SOB DEMANDA........................................................................................... 148
14.6 ALOCAO DE ARQUIVOS EM DISCOS......................................................................................... 149

Sistemas Operacionais Lucilia Ribeiro
6
14.6.1 ALOCAO DE UM ARQUIVO EM UM NICO DISCO.................................................... 149
14.6.2 DUAS ESTRATGIAS ALTERNATIVAS DE ORGANIZAO DE ARQUIVOS ................... 150
14.6.3 ALOCAO DE ARQUIVOS PARA VDEO QUASE SOB DEMANDA................................ 151
14.7 EXERCCIOS .................................................................................................................................. 151
SEGURANA.................................................................................................................................................... 153
15.1 INTRODUO ............................................................................................................................... 153
15.2 CRIPTOGRAFIA............................................................................................................................. 153
15.2.1 CRIPTOGRAFIA POR CHAVE SECRETA ............................................................................ 154
15.2.2 CRIPTOGRAFIA POR CHAVE PBLICA............................................................................. 156
15.3 AUTENTICAO........................................................................................................................... 157
15.3.1 AUTENTICAO BSICA..................................................................................................... 158
15.3.2 BIOMETRIA E CARTES INTELIGENTES .......................................................................... 159
15.3.3 KERBEROS............................................................................................................................. 160
15.3.4 ASSINATURA NICA............................................................................................................. 160
15.4 CONTROLE DE ACESSO .............................................................................................................. 161
15.4.1 DIREITO DE ACESSO E DOMNIOS DE PROTEO........................................................ 161
15.4.2 MODELOS E POLTICAS DE CONTROLE DE ACESSO..................................................... 162
15.4.3 MECANISMOS DE CONTROLE DE ACESSO...................................................................... 163
15.5 ATAQUES SEGURANA .......................................................................................................... 165
15.5.1 CRIPTOANLISE................................................................................................................... 165
15.5.2 VRUS E VERMES.................................................................................................................. 165
15.5.3 ATAQUES DE RECUSA DE SERVIO (DoS) ....................................................................... 167
15.5.4 EXPLORAO DE SOFTWARE............................................................................................ 168
15.5.5 INVASO DE SISTEMA......................................................................................................... 168
15.6 PREVENO DE ATAQUES E SOLUES DE SEGURANA................................................. 169
15.6.1 FIREWALLS ........................................................................................................................... 169
15.6.2 SISTEMAS DE DETECO DE INTRUSOS (IDSs).............................................................. 170
15.6.3 SOFTWARE ANTIVRUS........................................................................................................ 170
15.6.4 CORREES DE SEGURANA............................................................................................ 172
15.6.5 SISTEMA DE ARQUIVOS SEGUROS.................................................................................... 172
15.6.6 O LIVRO LARANJA DA SEGURANA.................................................................................. 173
15.7 COMUNICAO SEGURA........................................................................................................... 173
15.8 ESTEGANOGRAFIA...................................................................................................................... 174
15.9 ESTUDO DE CASO: SEGURANA DE SISTEMAS UNIX.......................................................... 174
15.10 EXERCCIOS .................................................................................................................................. 176
MULTIPROCESSAMENTO........................................................................................................................... 179
16.1 INTRODUO ............................................................................................................................... 179
16.2 ARQUITETURA DE MULTIPROCESSADOR.............................................................................. 179
16.2.1 CLASSIFICAO DE ARQUITETURAS SEQUENCIAIS E PARALELAS............................ 179
16.2.2 ESQUEMA DE INTERCONEXO DE PROCESSADORES .................................................. 180
16.2.3 SISTEMAS FRACAMENTE x FRACAMENTE ACOPLADOS ............................................... 184
16.3 ORGANIZAO DE SISTEMAS OPERACIONAIS MULTIPROCESSADORES ...................... 185
16.3.1 MESTRE/ESCRAVO............................................................................................................... 186
16.3.2 NCLEOS SEPARADOS........................................................................................................ 186
16.3.3 ORGANIZAO SIMTRICA................................................................................................ 187
16.4 ARQUITETURAS DE ACESSO MEMRIA.............................................................................. 187
16.4.1 ACESSO UNIFORME MEMRIA...................................................................................... 188
16.4.2 ACESSO NO UNIFORME MEMRIA............................................................................. 188
16.4.3 ARQUITETURA DE MEMRIA SOMENTE DE CACHE..................................................... 189
16.4.4 SEM ACESSO MEMRIA REMOTA.................................................................................. 190
16.5 COMPARTILHAMENTO DE MEMRIA EM MULTIPROCESSADORES................................ 191
16.5.1 COERNCIA DE CACHE...................................................................................................... 191
16.5.2 REPLICAO E MIGRAO DE PGINAS ........................................................................ 192
16.5.3 MEMRIA VIRTUAL COMPARTILHADA............................................................................ 193
16.6 ESCALONAMENTO DE MULTIPROCESSADORES.................................................................. 194
16.6.1 ESCALONAMENTO DE MULTIPROCESSADORES CEGOS AO JOB................................ 195
16.6.2 ESCALONAMENTO DE MULTIPROCESSADORES CIENTES AO JOB............................. 196
16.7 MIGRAO DE PROCESSOS....................................................................................................... 198
16.7.1 FLUXO DE MIGRAO DE PROCESSOS........................................................................... 198
16.7.2 CONCEITOS DE MIGRAO DE PROCESSOS .................................................................. 199
16.7.3 ESTRATGIAS DE MIGRAO DE PROCESSOS............................................................... 200

Sistemas Operacionais Lucilia Ribeiro
7
16.8 BALANCEAMENTO DE CARGA................................................................................................. 201
16.8.1 BALANCEAMENTO ESTTICO DE CARGA........................................................................ 201
16.8.2 BALANCEAMENTO DINMICO DE CARGA....................................................................... 202
16.9 EXCLUSO MTUA EM MULTIPROCESSADORES................................................................ 204
16.9.1 TRAVAS GIRATRIAS........................................................................................................... 205
16.9.2 TRAVAS DORMIR/ACORDAR............................................................................................... 205
16.9.3 TRAVAS DE LEITURA/ESCRITA........................................................................................... 206
16.10 EXERCCIOS .................................................................................................................................. 206
BIBLIOGRAFIA............................................................................................................................................... 210














01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
7

Viso Geral



As coisas so sempre melhores no comeo (Blaise Pascal)

1.1 INTRODUO
Um computador sem software nada seria. O software pode ser dividido, a grosso mo-
do, em duas categorias: os programas do sistema, que gerenciam a operao do prprio
computador, e os programas de aplicao, que resolvem problemas para seus usurios.
O mais importante dos programas de sistema o sistema operacional, que controla
todos os recursos do computador, e fornece a base sobre a qual os programas aplicativos
so escritos.
Um sistema operacional, por mais complexo que possa parecer, apenas um conjun-
to de rotinas executado pelo processador, de forma semelhante aos programas dos usu-
rios. Sua principal funo controlar o funcionamento de um computador, gerenciando a
utilizao e o compartilhamento dos seus diversos recursos, como processadores, mem-
rias e dispositivos de entrada e sada.
Sem o sistema operacional, um usurio para interagir com o computador deveria co-
nhecer profundamente diversos detalhes sobre hardware do equipamento, o que tornaria
seu trabalho lento e com grandes possibilidades de erros.
A grande diferena entre um sistema operacional e aplicaes convencionais, a ma-
neira como suas rotinas so executadas em funo do tempo. Um sistema operacional
no executado de forma linear como na maioria das aplicaes, com incio, meio e fim.
Suas rotinas so executadas concorrentemente em funo de eventos assncronos, ou
seja, eventos que podem ocorrer a qualquer momento.
1.2 O SISTEMA OPERACIONAL - FUNCIONALIDADES
O Sistema Operacional o software que controla todos os recursos do computador e
fornece a base sobre a qual os programas aplicativos so escritos e suas principais fun-
cionalidades so: Mquina Virtual ou Estendida e Gerente de Recursos.
1.2.1 O SISTEMA OPERACIONAL VISTO COMO UMA MQUINA ESTENDIDA
Programar em nvel de arquitetura uma tarefa ingrata para qualquer usurio de um
sistema de computador. Para tratar da entrada/sada numa unidade de disco flexvel, por
exemplo, o usurio deveria trabalhar com comandos relativos a: leitura/escrita de dados,
movimento da cabea, formatao de trilhas e inicializao, sensoriamento, reinicializa-
o e calibrao do controlador e do driver de disquete.
bvio dizer que o programador no vai querer lidar com esse tipo de detalhes, de-
sejando portanto uma abstrao de alto nvel. Assim, deve haver um programa que es-
conda do usurio o verdadeiro hardware e apresente-lhe um esquema simples de arqui-
vos identificados que possam ser lidos ou escritos. Tal programa o sistema operacional.
Do ponto de vista de mquina estendida, o sistema operacional trata ainda de outras
questes incmodas como: interrupes, temporizadores, gerncia de memria etc.
A funo do sistema operacional, nesse ponto de vista, apresentar ao usurio uma
mquina virtual equivalente ao hardware, porm muito mais fcil de programar.
1.2.2 O SISTEMA OPERACIONAL VISTO COMO UM GERENTE DE RECURSOS
Em sistemas onde diversos usurios compartilham recursos do sistema computacio-
nal, necessrio controlar o uso concorrente desses recursos. Se imaginarmos uma im-
pressora sendo compartilhada, dever existir algum tipo de controle para que a impres-
so de um usurio no interfira nas dos demais. Novamente o sistema operacional que
1
01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
8
tem a responsabilidade de permitir o acesso concorrente a esse e a outros recursos de
forma organizada e protegida.
No apenas em sistemas multiusurio que o sistema operacional importante. Se
pensarmos que um computador pessoal nos permite executar diversas tarefas ao mesmo
tempo, como imprimir um documento, copiar um arquivo pela Internet ou processar uma
planilha, o sistema operacional deve ser capaz de controlar a execuo concorrente de
todas essas atividades.
Assim, o sistema operacional deve gerenciar o uso dos recursos, contabilizando o uso
de cada um e garantindo acesso ordenado de usurios a recursos atravs da mediao
de conflitos entre as diversas requisies existentes.
1.3 MQUINA VIRTUAL
Um sistema computacional visto somente sob a tica do hardware, ou seja, como um
conjunto de circuitos eletrnicos, placas, cabos e fontes de alimentao, tem pouca utili-
dade. atravs do software que servios so oferecidos ao usurio, como armazenamen-
to de dados em discos, impresso de relatrios, gerao de grficos, entre outras fun-
es.
Uma operao efetuada pelo software pode ser implementada em hardware, enquan-
to uma instruo executada pelo hardware pode ser simulada via software. Esta deciso
fica a carga do projetista do sistema computacional em funo de aspectos como custo,
confiabilidade e desempenho. Tanto o hardware quanto o software so logicamente equi-
valentes, interagindo de uma forma nica para o usurio.
Nos primeiros computadores, a programao era realizada em painis atravs de fios,
exigindo, consequentemente, um grande conhecimento da arquitetura do hardware e da
sua linguagem de mquina. Isso era uma grande dificuldade para os programadores da
poca.
Para afastar o usurio da complexidade do hardware, foi encontrada uma forma: co-
locar uma camada de software em cima do hardware para gerenciar todos os componen-
tes do sistema, aparecendo ao usurio como uma interface muito simples de entender e
programar. Tal interface a mquina virtual, e a camada de software o Sistema
Operacional.

Sistema
Bancrio
Controle
Imobilirio
Jogos
Compiladores
Editores
de Texto
Interpretadores
Sistema Operacional
Linguagem de Mquina
Microcdigo
Dispositivos Bsicos

Num sistema computacional podem atuar diferentes usurios, cada qual tentando so-
lucionar seus problemas. Assim, h uma diversidade enorme de programas aplicativos. O
sistema operacional controla e coordena o uso do hardware entre os vrios programas
aplicativos, para os vrios usurios.
1.4 HISTRIA DOS SISTEMAS OPERACIONAIS
A evoluo dos Sistemas Operacionais est intimamente relacionada com o desenvol-
vimento dos computadores. Objetivando permitir um conhecimento geral, o histrico dos
Sistemas Operacionais aqui apresentados ser dividido em dcadas. Em cada uma das
Hardware
Programas do
Sistema
Programas de
Aplicao
01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
9
dcadas sero discutidas as principais caractersticas do hardware e do Sistema Opera-
cional da poca.
1.4.1 DCADA DE 1940 (Ausncia de SOs)
A Segunda Guerra Mundial acelerou as pesquisas para o desenvolvimento dos primei-
ros computadores (Mark I, ENIAC etc.), objetivando dinamizar o processo de realizao
de clculos. Os computadores, ento desenvolvidos, eram baseados em vlvulas. Eles
ocupavam salas inteiras e no possuam um SO. Com isso, programar, por exemplo, o
ENIAC para realizar um determinado clculo poderia levar dias, pois era necessrio co-
nhecer profundamente o funcionamento de seu hardware e utilizar linguagem de mqui-
na;
1.4.2 DCADA DE 1950 (Processamento em Batch)
O desenvolvimento do transistor permitiu um grande avano da informtica. Assim,
os computadores tornaram-se menores, mais confiveis e mais rpidos. Nesta dcada
observa-se o surgimento dos primeiros SOs e a programao das mquinas se dava a-
travs de cartes perfurados.
Os processos a serem executados entravam seqencialmente no processador e roda-
vam at terminar. Este tipo de processamento ficou conhecido como processamento em
batch ou lote, o qual ilustrado pela figura abaixo:



Pode no parecer um avano, mas anteriormente os programas eram submetidos pe-
lo operador, um a um, fazendo com que o processador ficasse ocioso entre a execuo
de um job e outro. Com o processamento batch, um conjunto de programas era subme-
tido de uma vez s, o que diminua o tempo de espera entre a execuo dos programas,
permitindo, assim, melhor aproveitamento do processador.
1.4.3 DCADA DE 1960 (Processamento Time-sharing)
Nesta dcada entram em cena os circuitos inte-
grados (CIs), o que permitiu que os computadores se
tornassem mais baratos e, portanto, mais acessveis
s organizaes empresariais. Na poca em questo
os processos no mais monopolizavam o uso do pro-
cessador mas sim compartilhavam o mesmo. Dessa
forma, o tempo de processamento passou a ser i-
gualmente dividido entre os processos existentes. Es-
ta tcnica de processamento acabou ficando conheci-
da como processamento time-sharing ou processa-
mento de tempo compartilhado.



1.4.4 DCADA DE 1970 (Multiprocessamento)
Nesta dcada a integrao em larga escala (Large Scale Integration LSI) e a inte-
grao em muito grande escala (Very Large Scale Integration - VLSI) permitiram uma
01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
10
reduo significativa no tamanho e no custo dos computadores. Com isso, os computado-
res com mltiplos processadores tornaram-se acessveis e os processos passaram a ser
executados em paralelo. Este tipo de processamento ficou conhecido como multiproces-
samento, o qual ilustrado pela Figura abaixo:

1.4.5 DCADA DE 1980 (Computadores Pessoais):
Os computadores pessoais tornam-se mais acessveis comercialmente e a microcom-
putao se consolidou. Assim, surgiram os SOs voltados especificamente para os ento
chamados microcomputadores (ex.: CP/M6, MS-DOS7, OS/28 etc.). interessante des-
tacar que neste perodo a rpida evoluo dos processadores dos computadores pessoais
permitiu que seus SOs incorporassem importantes recursos como interface grfica e mul-
timdia. O baixo custo dos equipamentos permitiu, tambm, o surgimento das redes lo-
cais e com isso desenvolveram-se os Sistemas Operacionais de Rede (ex.: Novell Netwa-
re, LAN Manager etc.);
1.4.6 DCADA DE 1990 (Sistemas Distribudos):
Durante a dcada de 1990 o crescimento das redes de computadores, especialmente
a Internet, propiciou o surgimento de sistemas computacionais novos que se caracteri-
zam por possurem uma coleo de processadores que no compartilham memria ou
barramento e que se comunicam via rede. Estes sistemas acabaram sendo chamados de
sistemas fracamente acoplados que possibilitaram o surgimento dos sistemas distribu-
dos, onde diversos SOs presentes nos computadores de uma rede interagem o suficiente
para dar a impresso de que existe um nico Sistema Operacional controlando toda a
rede e os recursos computacionais ligados a ela. Atualmente, os pesquisadores da rea
de Sistemas Operacionais concentram boa parte de seus esforos nos estudos sobre os
Sistemas Operacionais Distribudos.

1.5 CLASSIFICAO DOS SISTEMAS OPERACIONAIS
A evoluo dos sistemas operacionais acompanhou a evoluo do hardware e das a-
plicaes por ele suportadas. Muitos termos inicialmente introduzidos para definir concei-
tos e tcnicas foram substitudos por outros. Isto fica muito claro quando tratamos da
unidade de execuo do processador. Inicialmente, eram utilizados os termos programas
ou job, depois surgiu o conceito de processo, e agora, o conceito de thread.






1.5.1 SISTEMAS MONOPROGRAMVEIS OU MONOTAREFAS
Os primeiros Sistemas Operacionais eram tipicamente voltados para a execuo de
um nico programa. Qualquer outra aplicao, para ser executada, deveria aguardar o
01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
11
trmino do programa corrente. Os sistemas monoprogramveis se caracterizam por per-
mitir que o processador, a memria e os perifricos permaneam exclusivamente dedica-
dos execuo de um nico programa.
Neste tipo de sistema, enquanto um programa aguarda por um evento, como a digi-
tao de um dado, o processador permanece ocioso, sem realizar qualquer tipo de pro-
cessamento. A memria subutilizada caso o programa no a preencha totalmente, e os
perifricos, como discos e impressoras, esto dedicados a um nico usurio, nem sempre
utilizados de forma integral.
Comparados a outros sistemas, os sistemas monoprogramveis ou monotarefas so
de simples implementao, no existindo muita preocupao com problemas decorrentes
do compartilhamento de recursos.
1.5.2 SISTEMAS MULTIPROGRAMVEIS OU MULTITAREFAS
Neste tipo de sistema, os recursos computacionais so compartilhados entre os diver-
sos usurios e aplicaes.
Neste caso, enquanto um programa espera por uma operao de leitura ou gravao
em disco, outros programas podem estar sendo processados neste mesmo intervalo de
tempo. Nesse caso, podemos observar o compartilhamento da memria e do processa-
dor. O Sistema Operacional se preocupa em gerenciar o acesso concorrente aos seus
diversos recursos.
As vantagens do uso de tais sistemas so a reduo do tempo de resposta das aplica-
es processadas no ambiente e de custos, a partir do compartilhamento dos diversos
recursos do sistema entre as diferentes aplicaes.
A partir do nmero de usurios que interagem com o sistema, podemos classificar os
sistemas multiprogramveis como monousurio ou multiusurio.
Os sistemas multiprogramveis podem tambm ser classificados pela forma com que
suas aplicaes so gerenciadas, podendo ser divididos em sistemas batch, de tempo
compartilhado ou de tempo real. Um Sistema Operacional pode suportar um ou mais
desses tipos de processamento, dependendo de sua implementao.









a) Sistemas Batch
Foram os primeiros tipos de Sistemas Operacionais multiprogramveis a serem
implementados. O processamento em batch tem a caracterstica de no exigir a interao
do usurio com a aplicao. Todas as entradas e sadas de dados so implementadas por
algum tipo de memria secundria, geralmente arquivos em disco.
Esses sistemas, quando bem projetados, podem ser bastante eficientes, devido
melhor utilizao do processador; entretanto, podem oferecer tempos de resposta lon-
gos. Atualmente, os Sistemas Operacionais implementam ou simulam o processamento
batch, no existindo sistemas exclusivamente dedicados a este tipo de processamento.
b) Sistemas de Tempo Compartilhado
Tais sistemas, tambm conhecidos como time-sharing, permitem que diversos
programas sejam executados a partir da diviso do tempo do processador em pequenos
01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
12
intervalos, denominados fatia de tempo (time-slice). Caso a fatia de tempo no seja sufi-
ciente para a concluso do programa, esse interrompido pelo Sistema Operacional e
submetido por um outro, enquanto fica aguardando por uma nova fatia de tempo. O sis-
tema cria um ambiente de trabalho prprio, dando a impresso de que todo o sistema
est dedicado, exclusivamente, para cada usurio.
Geralmente, sistemas de tempo compartilhado permitem a interao dos usurios
com o sistema atravs de terminais que incluem vdeo, teclado e mouse. Esses sistemas
possuem uma linguagem de controle que permite ao usurio comunicar-se diretamente
com o Sistema Operacional atravs de comandos.
A maioria das aplicaes comerciais atualmente so processadas em sistemas de
tempo compartilhado, que oferecem tempos baixos de respostas a seus usurios e meno-
res custos, em funo da utilizao compartilhada dos diversos recursos do sistema.
c) Sistemas de Tempo Real
Os sistemas de tempo real (real-time) diferem dos de tempo compartilhado no
tempo exigido no processamento das aplicaes.
Enquanto em sistemas de tempo compartilhado o tempo de processamento pode
variar sem comprometer as aplicaes em execuo, nos sistemas de tempo real os
tempos de processamento devem estar dentro de limites rgidos, que devem ser obede-
cidos, caso contrrio podero ocorrer problemas irreparveis.
No existe a idia de fatia de tempo. Um programa utiliza o processador o tempo
que for necessrio ou at que aparea outro mais prioritrio. Essa prioridade definida
pela prpria aplicao. Esto presentes em aplicaes de controle de usinas termoeltri-
cas e nucleares, controle de trfego areo, ou em qualquer outra aplicao onde o tempo
de processamento fator fundamental.
1.5.3 SISTEMAS COM MLTIPLOS PROCESSADORES
Um sistema com mltiplos processadores possui duas ou mais CPUs interligadas tra-
balhando em conjunto. A vantagem desse tipo de sistema permitir que vrios progra-
mas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido
em partes para serem executadas simultaneamente em mais de um processador.
Os conceitos aplicados ao projeto de sistemas com mltiplos processadores incorpo-
ram os mesmos princpios bsicos e benefcios apresentados na multiprogramao, alm
de outras vantagens especficas como escalabilidade, disponibilidade e balanceamento de
carga.
Escalabilidade a capacidade de ampliar o poder computacional do sistema apenas
adicionando outros processadores. Em ambientes com um nico processador, caso haja
problemas de desempenho, seria necessrio substituir todo o sistema por uma outra con-
figurao com maior poder de processamento. Com a possibilidade de mltiplos proces-
sadores, basta acrescentar novos processadores configurao.
Disponibilidade a capacidade de manter o sistema em operao mesmo em casos
de falhas. Neste caso, se um dos processadores falhar, os demais podem assumir suas
funes de maneira transparente aos usurios e suas aplicaes, embora com menor
capacidade de computao.
Balanceamento de Carga a possibilidade de distribuir o processamento entre os
diversos processadores da configurao a partir da carga de trabalho de cada processa-
dor, melhorando assim, o desempenho do sistema como um todo.
01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
13

Esses sistemas podem ser classificados quanto forma de comunicao entre as
CPUs e quanto ao grau de compartilhamento da memria e dos dispositivos de E/S. As-
sim, podemos classific-los em fortemente acoplados e fracamente acoplados.
a) Sistemas Fortemente Acoplados
Num sistema fortemente acoplado dois ou mais processadores compartilham uma
nica memria e so controlados por um nico sistema operacional. Um sistema forte-
mente acoplado utilizado geralmente em aplicaes que fazem uso intensivo da CPU e
cujo processamento dedicado soluo de um nico problema.









Os sistemas fortemente acoplados podem ser divididos em simtricos ou assim-
tricos. Os simtricos caracterizam-se pelo tempo uniforme de acesso memria principal
pelos diversos processadores.
Inicialmente, tais sistemas estavam limitados aos sistemas de grande porte, res-
tritos ao ambiente universitrio e s grandes corporaes. Com a evoluo dos computa-
dores pessoais e das estaes de trabalho, os sistemas multitarefa evoluram para permi-
tir a existncia de vrios processadores no modelo simtrico. Atualmente, a grande
maioria dos Sistemas Operacionais, como o Unix e o Windows 2000, implementa esta
funcionalidade.
b) Sistemas Fracamente Acoplados
Num sistema fracamente acoplado dois ou mais sistemas de computao so co-
nectados atravs do uso de linhas de comunicao. Nesses sistemas, ocorre o processa-
mento distribudo entre os diversos computadores. Cada sistema funciona de forma inde-
pendente, possuindo seu(s) prprio(s) processador(es). Em funo destas caractersticas,
tambm so conhecidos como multicomputadores.
Com a evoluo dos computadores pessoais e das estaes de trabalho, junta-
mente com o avano das telecomunicaes e da tecnologia de redes, surgiu um novo
modelo de computao, chamado modelo de rede de computadores. Em uma rede exis-
tem dois ou mais sistemas independentes (hosts), interligados atravs de linhas de co-
municao, que oferecem algum tipo de servio aos demais. Neste modelo, a informao
deixa de ser centralizada em poucos sistemas de grande porte e passa ser distribuda
pelos diversos sistemas da rede.
01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
14

C










Com base no grau de integrao dos hosts da rede, podemos dividir os sistemas
fracamente acoplados em Sistemas Operacionais de Rede e Sistemas Distribudos. A
grande diferena entre os dois modelos a capacidade do Sistema Operacional em criar
uma imagem nica dos servios disponibilizados pela rede.
Os Sistemas Operacionais de Rede permitem que um host compartilhe seus
recursos, como impressora ou diretrio, com os demais hosts da rede. Um exemplo deste
tipo de sistema so as redes locais, onde uma estao pode oferecer servios de arquivos
e impresso para as demais estaes da rede, dentre outros servios.
Enquanto nos Sistemas Operacionais de Rede os usurios tm conhecimento dos
hosts e seus servios, nos Sistemas Distribudos o Sistema Operacional esconde os
detalhes dos hosts individuais e passa a trat-los como um conjunto nico, como se fos-
se um sistema fortemente acoplado. Os sistemas distribudos permitem, por exemplo,
que uma aplicao seja dividida em partes e que cada parte seja executada por hosts
diferentes da rede de computadores. Para o usurio e suas aplicaes como se no
existisse a rede de computadores, mas sim um nico sistema centralizado.

1.6 EXERCCIOS

1) Como seria utilizar um computador sem um Sistema Operacional?

2) O que um Sistema Operacional? Fale sobre suas principais funes.

3) Defina o conceito de uma mquina de nveis ou camadas.

4) Quais os tipos de Sistemas Operacionais existentes?

5) Por que dizemos que existe uma subutilizao de recursos em sistemas monopro-
gramveis?

6) Qual a grande diferena entre sistemas monoprogramveis e multiprogramveis?

7) Quais as vantagens dos sistemas multiprogramveis?

8) Um sistema monousurio pode ser um sistema multiprogramvel? D um exem-
plo.

9) Quais so os tipos de sistemas multiprogramveis?

01 Viso Geral
Sistemas Operacionais Lucilia Ribeiro
15
10) O que caracteriza um sistema batch? Quais aplicaes podem ser processadas
neste tipo de ambiente?

11) Como os processos so executados em um sistema time-sharing? Quais as vanta-
gens em utiliz-los?

12) Qual a grande diferena entre sistemas de tempo compartilhado e tempo real?
Quais aplicaes so indicadas para sistemas de tempo real?

13) O que so sistemas com mltiplos processadores e quais as vantagens em utiliz-
los?

14) Qual a grande diferena entre sistemas fortemente e fracamente acoplados?

15) O que um sistema fracamente acoplado? Qual a diferena entre Sistemas Ope-
racionais de rede e Sistemas Operacionais distribudos?

16) Cite dois exemplos de Sistemas Operacionais de rede.






-x-
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
16

Conceitos de Hardware e Software



Nossa vida desperdiada em detalhes... Simplifique, simplifique. (Henry Thoreau)

2.1 INTRODUO
O Sistema Operacional est intimamente ligado ao hardware do computador no qual
ele executado. Ele estende o conjunto de instrues do computador e gerencia seus
recursos. Para funcionar, ele deve ter um grande conhecimento do hardware, pelo menos
do ponto de vista do programador.
Neste captulo sero apresentados conceitos bsicos de hardware e de software rela-
tivos arquitetura de computadores e necessrios para a compreenso dos demais tpi-
cos.
2.2 UNIDADES MTRICAS
Para evitar maior confuso, melhor deixar claro, como na cincia da computao
em geral, so usadas unidades mtricas. Os prefixos mtricos esto relacionados na ta-
bela abaixo. Normalmente esses prefixos so abreviados por suas primeiras letras, com
as unidades maiores que 1 em letras maisculas. Assim, um banco de dados de 1 TB
ocupa 10
12
bytes de memria e um tique de relgio de 100 ps ocorre a cada 10
-10
segun-
dos. Como ambos os prefixos, mili e micro, comeam com a letra m, foi necessrio fa-
zer-se uma escolha. Normalmente m para mili e (a letra grega my) para micro.
Convm tambm recordar que para medir tamanhos de memria, as unidades tm
significados um pouco diferentes. O quilo corresponde a 2
10
(1024) e no a 10
3
(1000),
pois as memrias so sempre expressas em potncias de 2. Assim, uma memria de 1
KB contm 1024 bytes, e no 1000 bytes. De maneira similar, uma memria de 1 MB
contm 2
20
(1.048.576) bytes e uma memria de 1 GB contm 2
30
(1.073.741.824) by-
tes. Contudo, uma linha de comunicao de 1 Kbps transmite a 1000 bits por segundo,
uma rede local (LAN) de 10 Mbps transmite a 10.000.000 bits por segundo e um proces-
sador de 233 MHz executa 233.000 ciclos de clock por segundo, pois essas velocidades
no so potncias de 2.

Exp. Explcito Prefixo Exp. Explcito Prefixo
10
-3
0,001 mili 10
3
1.000 quilo
10
-6
0,000001 micro 10
6
1.000.000 mega
10
-9
0,000000001 nano 10
9
1.000.000.000 giga
10
-12
0,000000000001 pico 10
12
1.000.000.000.000 tera
10
-15
0,000000000000001 femto 10
15
1.000.000.000.000.000 peta
10
-18
0,000000000000000001 atto 10
18
1.000.000.000.000.000.000 exa
10
-21
0,000000000000000000001 zepto 10
21
1.000.000.000.000.000.000.000 zetta
10
-24
0,000000000000000000000001 yocto 10
24
1.000.000.000.000.000.000.000.000 yotta

2.3 HARDWARE
Conceitualmente, um computador pessoal simples pode ser abstrado para um mode-
lo semelhante ao da figura ao lado. A CPU, a memria e os dispositivos de E/S esto to-
dos conectados por um barramento, o qual proporciona a comunicao de uns com os
outros.

2
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
17
2.3.1 PROCESSADOR
A CPU o crebro do computador.
Ela busca instrues na memria e as
executa: busca a primeira instruo da
memria, decodifica para determinar
seus operandos e qual operao executar
com os mesmos, executa e busca, deco-
difica e executa as prximas operaes.
Cada processador composto por
uma unidade de controle, unidade lgica e aritmtica, e registradores. A unidade de
controle responsvel por gerenciar as atividades de todos os componentes do compu-
tador, como a gravao de dados em discos ou a busca de instrues na memria. A u-
nidade lgica e aritmtica, como o nome indica, responsvel pela realizao de ope-
raes lgicas (testes e comparaes) e aritmticas (somas e subtraes).
A sincronizao de todas as funes do processador realizada atravs de um sinal
de clock. Este sinal um pulso gerado ciclicamente que altera variveis de estado do
processador. O sinal de clock gerado a partir de um cristal de quartzo que, devidamen-
te polarizado, oscila em uma determinada freqncia estvel e bem determinada.
Cada CPU tem um conjunto especfico de instrues que pode executar. Assim, um
Pentium no executa programas SPARC e vice-versa. Como o tempo de acesso mem-
ria muito menor que o tempo para execut-la, todas as CPUs tm registradores inter-
nos para armazenar variveis e resultados temporrios. Por isso, o conjunto de instru-
es geralmente contm instrues para carregar uma palavra da memria em um regis-
trador e armazenar uma palavra de um registrador na memria.
Os registradores so dispositivos com a funo principal de armazenar dados tem-
porariamente. O conjunto de registradores funciona como uma memria de alta veloci-
dade interna do processador, porm com uma capacidade de armazenamento reduzida e
custo maior ao da memria principal. O nmero de registradores e sua capacidade de
armazenamento variam em funo da arquitetura de cada processador.
Alm dos registradores de propsito geral, a maioria dos computadores tem vrios
registradores especiais visveis ao programador. Um deles o contador de programa,
que contm o endereo de memria da prxima instruo a ser buscada.
Outro registrador especial o ponteiro de pilha, que aponta para o topo da pilha atual
na memria. A pilha contm uma estrutura para cada procedimento chamado, mas que
ainda no encerrou. Uma estrutura de pilha do procedimento contm os parmetros de
entrada, as variveis temporrias que no so mantidas nos registradores.
Existe ainda o Registrador de Status, ou PSW (program status word palavra de es-
tado do programa). Esse registrador contm os bits do cdigo de condies, os quais so
alterados pelas instrues de comparao, pelo nvel de prioridade da CPU, pelo modo de
execuo (usurio ou ncleo) e por vrios outros bits de controle.
A maioria das CPUs - exceto aquelas muito simples dos sistemas embarcados a-
presenta dois modos de funcionamento: o modo ncleo e o modo usurio. Tal modo de
funcionamento controlado por um bit do registrador PSW. Funcionando em modo n-
cleo, a CPU pode executar qualquer instruo do seu conjunto e usar cada atributo de
seu hardware. o caso do sistema operacional. Por outro lado, programas de usurios
so executados em modo usurio, o que permite a execuo de apenas um subconjunto
das instrues e acesso apenas a um subconjunto de atributos.
2.3.2 MEMRIA PRINCIPAL
o local onde so armazenados instrues e dados. A memria composta por uni-
dades de acesso chamadas clulas, sendo cada clula composta por um determinado
nmero de bits. A grande maioria dos computadores utiliza o byte (8 bits) como tamanho
da clula. Observe na figura ao lado, uma memria de 64KB.
O acesso ao contedo de uma clula realizado atravs da especificao de um n-
mero chamado endereo. O endereo uma referncia nica, que podemos fazer a uma
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
18
clula de memria. Quando um programa deseja ler
ou escrever um dado em uma clula, deve primeiro
especificar qual o endereo de memria desejado,
para depois realizar a operao.

A especificao do endereo realizada atravs de
um registrador denominado registrador de endere-
o de memria (memory address register MAR).
Atravs do contedo deste registrador, a unidade de
controle sabe qual clula ser acessada. Outro regis-
trador usado em operaes com a memria o regis-
trador de dados da memria (memory buffer regis-
ter MBR). Este registrador utilizado para guardar o
contedo de uma ou mais clulas de memria, aps
uma operao de gravao. Este ciclo de leitura e gra-
vao apresentado na tabela abaixo:

OPERAO DE LEITURA OPERAO DE GRAVAO
1. A UCP armazena no MAR o endereo da
clula a ser lida.
1. A UCP armazena no MAR o endereo da
clula a ser gravada.
2. A UCP gera um sinal de controle para a
memria principal, indicando que uma ope-
rao de leitura deve ser realizada.
2. A UCP armazena no MBR a informao
que dever ser gravada.
3. O contedo da(s) clula(s) identifica-
da(s) pelo endereo contido no MAR
transferido para o MBR.
3. A UCP gera um sinal de controle para a
memria principal, indicando que uma ope-
rao de gravao deve ser realizada.
4. O contedo do MBR transferido para
um registrador da UCP.
4. A informao contida no MBR transfe-
rida para a clula de memria endereada
pelo MAR.
O nmero de clulas endereadas na memria principal limitado pelo tamanho do
MAR. No caso de o registrador possuir n bits, a memria poder no mximo enderear 2
n

clulas, isto , do endereo 0 ao endereo (2
n
- 1).
A memria principal pode ser classificada em funo de sua volatilidade, que a ca-
pacidade de a memria preservar o seu contedo mesmo sem uma fonte de alimentao
ativa. Memrias do tipo RAM (Random Access Memory) so volteis, enquanto as mem-
rias ROM (Read-Only Memory) e EPROM (Erasable Programmable ROM) so do tipo no-
volteis.
2.3.3 MEMRIA CACHE
uma memria voltil de alta velocidade, porm com pequena capacidade de arma-
zenamento. O tempo de acesso a um dado nela contido muito menor do que se este
dado estivesse na memria principal. O propsito do uso da memria cache minimizar
a disparidade existente entre a velocidade com que o processador executa as instrues
e a velocidade com que dados so acessados na memria principal.
A memria cache armazena uma pequena parte do contedo da memria principal.
Toda vez que o processador faz referncia a um dado armazenado na memria, verifi-
cado, primeiramente, se ele se encontra na cache. Caso o processador encontre o dado
(cache hit), no h necessidade do acesso memria principal, diminuindo assim o tem-
po de acesso.
Se a informao desejada no estiver presente na cache, o acesso memria princi-
pal obrigatrio (cache miss). Neste caso, o processador, a partir do dado referenciado,
transfere um bloco de dados da memria principal para a cache. Apesar de existir neste
mecanismo um tempo adicional para a transferncia de dados entre as memrias, este
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
19
tempo compensado pela melhora do desempenho, justificado pelo alto percentual de
referncias a endereos que so resolvidos na cache. Isto ocorre devido ao princpio da
localidade. Ele garante que, aps a transferncia de um novo bloco da memria principal
para a cache a probabilidade de futuras referncias alta, otimizando assim, o tempo de
acesso informao.
Apesar de ser uma memria de acesso rpido, a capacidade de armazenamento das
memrias cache limitada em funo do seu alto custo.
2.3.4 MEMRIA SECUNDRIA
um meio permanente, isto , no-voltil de armazenamento de programas e dados.
Enquanto a memria principal precisa estar sempre energizada para manter as informa-
es, a memria secundria no precisa de alimentao.
O acesso memria secundria lento, se comparado memria principal, porm
seu custo baixo e sua capacidade de armazenamento bem superior. Enquanto a uni-
dade de acesso memria secundria da ordem de milissegundos, a acesso memria
principal de nanossegundos. Podemos citar como exemplos de memrias secundrias,
a fita magntica, os discos magnticos, rgidos e ticos.
A figura abaixo mostra a relao entre os diversos tipos de dispositivos de armaze-
namento apresentados:

Tempo de Acesso Capacidade Tpica
1 ns Reg < 1 KB
2 ns Cache 1 MB
10 ns Memria Principal 64512 MB
10 ms Disco Rgido (magntico) 550 GB
100 s Fita Magntica 20100 GB

O armazenamento em disco duas ordens de magnitude mais barato, por bit, que o
da RAM e, muitas vezes, duas ordens de magnitude maior tambm. O nico problema
que o tempo de acesso aleatrio aos dados perto de trs ordens de magnitude mais
lento. Essa baixa velocidade devida ao fato de o disco ser um dispositivo mecnico.
A ltima camada a fita magntica. Meio muito utilizado como cpia de segurana
para abrigar grandes quantidades de dados. A fita dever ser percorrida seqencialmente
at chegar ao bloco requisitado. No mnimo, isso levaria alguns minutos. A grande van-
tagem da fita que ela tem um custo por bit muito baixo e tambm removvel.
A hierarquia de memria que vimos o padro mais comum, mas alguns sistemas
no tm todas essas camadas ou algumas so diferentes delas (como discos pticos). No
entanto, em todas, conforme se desce na hierarquia, o tempo de acesso aleatrio cresce
muito, a capacidade, da mesma maneira, tambm aumenta bastante e o custo por bit cai
enormemente. Em vista disso, bem provvel que as hierarquias de memria ainda per-
durem por vrios anos.
2.3.5 DISPOSITIVOS DE ENTRADA/SADA
A memria no o nico recurso que o sistema operacional tem de gerenciar. Os dis-
positivos de E/S tambm interagem intensivamente com o sistema operacional. Os dis-
positivos so constitudos, geralmente, de duas partes: o controlador e o dispositivo pro-
priamente dito.
O controlador um chip ou um conjunto deles que controla fisicamente o dispositi-
vo. Ele recebe comandos do sistema operacional, por exemplo, para ler dados do disposi-
tivo e para envi-los. Cabe ao controlador apresentar uma interface mais simples para o
sistema operacional. Por exemplo, um controlador de disco, a o receber um comando
para ler o setor 11206 do disco 2, deve ento converter esse nmero linear de setor em
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
20
nmeros de cilindro, setor e cabea. Essa converso pode ser muito complexa, j que os
cilindros mais externos tm mais setores que os internos e que alguns setores danifica-
dos podem ter sido remapeados para outros. Ento, o controlador precisa determinar
sobre qual cilindro o brao do acionador est e emitir uma seqncia de pulsos, corres-
pondente distncia em nmero de cilindros, para mov-lo em direo ao centro do dis-
co ou borda.
A outra parte o dispositivo real. Eles possuem interfaces bastante simples porque
no fazem nada muito diferente, e isso ajuda a torn-los padronizados.
Visto que cada controlador diferente, diferentes programas so necessrios para
control-los. O programa que se comunica com um controlador, emitindo comandos a ele
e aceitando respostas, denominado driver do dispositivo. Cada fabricante deve for-
necer um driver especfico para cada sistema operacional suportado.
Para ser usado, o driver deve ser colocado dentro do sistema operacional para que
possa ser executado em modo ncleo. H trs maneiras de colocar o driver dentro do
ncleo. A primeira religar (linkeditar) o ncleo com o novo driver e ento reiniciar o
sistema. Muitos sistemas Unix funcionam assim. A segunda fazer uma entrada de ar-
quivo e o sistema operacional v que precisa do driver e ento reinicializa o sistema. No
momento da iniciao, o sistema operacional busca e encontra os drivers de que ele pre-
cisa e os carrega. O Windows funciona assim. A terceira maneira capacitar o sistema
operacional e aceitar novos drivers enquanto estiver em execuo e instala-los sem a
necessidade de reiniciar. O Windows XP faz assim.
2.3.6 BARRAMENTO














O barramento ou bus um meio fsico de comunicao entre as unidades funcionais
de um sistema computacional. Atravs de condutores, informaes como dados, endere-
os e sinais de controle trafegam entre processadores, memrias e dispositivos de E/S.
Em geral, um barramento possui linhas de controle e linhas de dados. Atravs das li-
nhas de controle trafegam informaes de sinalizao como, por exemplo, o tipo de ope-
rao que est sendo realizada. Pelas linhas de dados, informaes como instrues, o-
perandos e endereos so transferidos entre unidades funcionais.
Os barramentos so classificados em trs tipos: barramentos processador-memria,
barramentos de E/S e barramentos de backplane. Os barramentos processador-
memria so de curta extenso e alta velocidade para que seja otimizada a transfern-
cia de informao entre processadores e memria. Diferentemente, os barramentos de
E/S possuem maior extenso, so lentos e permitem a conexo de diferentes dispositi-
vos.
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
21
Alguns sistemas de alto desempenho utilizam uma arquitetura com um terceiro bar-
ramento, conhecido como barramento de backplane. Nesta organizao, o barramento
de E/S no se conecta diretamente ao barramento processador-memria, tendo o barra-
mento de backplane a funo de integrar os dois barramentos. A principal vantagem des-
ta arquitetura reduzir o nmero de adaptadores existentes no barramento processador-
memria e, desta forma, otimizar seu desempenho.
Os barramentos processador-memria so frequentemente utilizados em arquiteturas
proprietrias. Como exemplo, a Intel introduziu o barramento PCI (Peripheral Component
Interconnect) junto como seu processador Pentium. Os barramentos de E/S em geral
seguem padres preestabelecidos pois, desta forma, os dispositivos de E/S podem ser
conectados a sistemas computacionais de diferentes plataformas e fabricantes.
Existem trs barramentos mais utilizados: IDE, USB e SCSI. O barramento IDE (In-
tegrated Drive Electronics) serve para acoplar ao sistema dispositivos perifricos como
discos e CD-ROMs. Ele uma extenso da interface controladora de discos do PC/AT e
atualmente constitui um padro para disco rgido e muitas vezes tambm para CD-ROM
em quase todos os sistemas baseados em Pentium.
O USB (Universal Serial Bus barramento serial universal) foi inventado para conec-
tar ao computador todos os dispositivos lentos de E/S, como teclado e mouse. um bar-
ramento centralizado no qual um dispositivo-raiz interroga os dispositivos de E/S a cada
1ms para verificar se eles tm algo a ser transmitido. Ele pode tratar uma carga acumu-
lada de 1,5 MB/s. todos os dispositivos USB compartilham um nico driver de dispositivo
USB, tornando desnecessrio instalar um novo driver para cada novo dispositivo. Conse-
qentemente, os dispositivos USB podem ser adicionados ao computador sem precisar
reinici-lo.
O barramento SCSI (Small Computer System Interface interface de pequeno siste-
ma de computadores) um barramento de alto desempenho destinado a discos rpidos,
scanners e outros dispositivos que precisem de considervel largura de banda. Pode fun-
cionar em at 160 Mb/s.
2.3.7 PIPELINING
Para melhorar o desempenho, os projetistas de CPU abandonaram o modelo simples
de busca, decodificao e execuo de uma instruo por vez. Muitas CPUs modernas
tm recursos para executar mais de uma instruo ao mesmo tempo. Por exemplo, uma
CPU pode ter unidades separadas de busca, decodificao e execuo, de modo que, en-
quanto ela estiver executando a instruo n, ela pode tambm estar decodificando a ins-
truo n+1 e buscando a instruo n+2. Essa organizao chamada pipeline e est
ilustrada na figura para um pipeline de quatro estgios.













02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
22

uma tcnica que permite ao processador executar mltiplas instrues paralela-
mente em estgios diferentes. O conceito de processamento pipeline se assemelha muito
ao de uma linha de montagem, onde uma tarefa dividida em uma seqncia de subta-
refas, executadas dentro da linha de produo.
O pipeline pode ser empregado em sistemas com um ou mais processadores, em di-
versos nveis, e tem sido a tcnica de paralelismo mais utilizada para aumentar o de-
sempenho dos sistemas computacionais.
2.3.8 ARQUITETURAS RISC e CISC
A linguagem de mquina de um computador a linguagem de programao realmen-
te entendida pelo processador. Cada processador possui um conjunto definido de instru-
es de mquina, definido por seu fabricante. As instrues de mquina fazem refern-
cias a detalhes, como registradores, modos de endereamento e tipos de dados, que ca-
racterizam um processador e suas funcionalidades.
Um programa em linguagem de mquina pode ser diretamente executado pelo pro-
cessador, no requerendo qualquer tipo de traduo ou relocao. Quando escrito em
linguagem de mquina de um determinado processador, um programa no pode ser exe-
cutado em outra mquina de arquitetura diferente, visto que o conjunto de instrues de
um processador caracterstica especfica de cada arquitetura.
Um processador com arquitetura RISC (Reduced Instruction Set Computer) se carac-
teriza por possuir poucas instrues de mquina, em geral bastante simples, executadas
diretamente pelo hardware. Na sua maioria, estas instrues no acessam a memria
principal, trabalhando principalmente com registradores, que, neste tipo de processador,
se apresentam em grande nmero. Estas caractersticas, alm de permitirem que as ins-
trues sejam executadas rapidamente, facilitam a implementao do pipelining. Como
exemplos de processadores RISC podemos citar o SPARC (Sun), RS-6000 (IBM), PA-RISC
(HP), Alpha AXP (Compac) e Rx000 (MIPS).
Os processadores com arquitetura CISC (Complex Instruction Set Computer) j pos-
suem instrues complexas que so interpretadas por microprogramas. O nmero de
registradores pequeno e qualquer instruo pode referenciar a memria principal. Nes-
te tipo de arquitetura, a implementao do pipelining mais difcil. So exemplos de pro-
cessadores CISC o VAX (DEC), Pentium (Intel) e 68xxx (Motorola).
Nos processadores RISC, um programa em linguagem de mquina executado dire-
tamente pelo hardware. J na arquitetura CISC, entre os nveis da linguagem de mqui-
na e dos circuitos eletrnicos, existem um nvel intermedirio que o da microprogra-
mao.
Os microprogramas definem a linguagem de mquina de um computador CISC. Ape-
sar de cada computador possuir nveis de microprogramao diferentes, existem muitas
semelhanas nessa camada se compararmos os diferentes equipamentos. Um computa-
dor possui, aproximadamente, 25 microinstrues bsicas, que so interpretadas pelos
circuitos eletrnicos. Na realidade, o cdigo executvel de um processador CISC inter-
pretado por microprogramas durante sua execuo, gerando microinstrues, que, final-
mente, so executadas pelo hardware. Para cada instruo em linguagem de mquina,
existe um microprograma associado.
2.3.9 ANLISE DE DESEMPENHO
Para avaliar o desempenho de processadores, diversas variveis devem ser conside-
radas, entre as quais o intervalo de tempo entre os pulsos de um sinal de clock, conheci-
do como ciclo de clock. A freqncia de clock o inverso do ciclo de clock e indica o
nmero de pulsos eltricos gerados em um segundo. A medida da freqncia dada em
Hertz (hz) ou seus mltiplos como Kilohertz (Khz) ou Megahertz (Mhz).
O desempenho de um processador pode ser avaliado pela comparao dos tempos
que processadores distintos levam para executar um mesmo programa. Este tempo
denominado tempo de CPU, que leva em considerao apenas o tempo para executar
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
23
instrues pelo processador, no incluindo a espera em operaes de E/S. O tempo de
CPU para um determinado programa dado por:
TEMPO DE CPU = n de ciclos de clock X ciclo de clock para execuo do programa
Considerando que a freqncia do clock o inverso do ciclo, podemos ter:
TEMPO DE CPU = n de ciclos de clock para execuo do programa / freqncia do clock
possvel perceber, observando as frmulas anteriores, que o desempenho do pro-
cessador pode ser otimizado reduzindo o nmero de ciclos de clock utilizados para execu-
tar um programa, ou aumentando a freqncia do clock.
A tcnica conhecida como benchmark permite a anlise de desempenho comparativa
entre sistemas computacionais. Neste mtodo, um conjunto de programas executado
em cada sistema avaliado e o tempo de execuo comparado. A escolha dos programas
deve ser criteriosa para refletir os diferentes tipos de aplicao.
2.4 SOFTWARE
Para que o hardware tenha utilidade prtica, deve existir um conjunto de programas,
utilizado como interface entre as necessidades do usurio e as capacidades do hardware.
A utilizao de softwares adequados s diversas tarefas e aplicaes torna o trabalho dos
usurios muito mais simples e eficiente.
Usaremos utilitrio para fazer referncia a softwares relacionados mais diretamente
com servios complementares do sistema operacional, como compiladores, linkeditores e
depuradores. Os softwares desenvolvidos pelos usurios sero denominados aplicativos.
2.4.1 TRADUTOR
Nos primeiros sistemas computacionais, o ato de programar era bastante complicado,
j que o programador deveria possuir conhecimento da arquitetura da mquina e pro-
gramar em painis atravs de fios. Esses programas eram desenvolvidos em linguagem
de mquina e carregados diretamente na memria principal para execuo.
Com o surgimento das primeiras linguagens de montagem ou assembly e das lin-
guagens de alto nvel, o programador deixou de se preocupar com muitos aspectos
pertinentes ao hardware, como em qual regio da memria o programa deveria ser car-
regado ou quais endereos de memria seriam reservados para as variveis. A utilizao
dessas linguagens facilitou a construo, a documentao e a manuteno de programas.
Apesar das inmeras vantagens proporcionadas pelas linguagens de montagem e de
alto nvel, os programas no esto prontos para ser diretamente executados pelo proces-
sador. Para isso, eles tm de passar por uma etapa de converso, onde toda representa-
o simblica das instrues traduzida para cdigo de mquina. Esta converso reali-
zada por um utilitrio denominado tradutor.
O mdulo gerado pelo tradutor denominado mdulo-objeto, que, apesar de estar
em cdigo de mquina, na maioria das vezes no pode ser ainda executado. Isto ocorre
em funo de um programa poder chamar sub-rotinas externas, e, neste caso, o tradutor
no tem como associar o programa principal s sub-rotinas chamadas.
Dependendo do tipo do
programa-fonte, existem dois
tipos distintos de tradutores
que geram mdulos-objeto:
montador e compilador.
O montador (assembler)
o utilitrio responsvel por
traduzir um programa-fonte
em linguagem de montagem
em um programa objeto no
executvel (mdulo-objeto). A
linguagem de montagem
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
24
particular para cada processador, assim como a linguagem de mquina, o que no per-
mite que programas assembly possam ser portados entre mquinas diferentes.
O compilador o utilitrio responsvel por gerar, a partir de um programa escrito
em uma linguagem de alto nvel, um programa em linguagem de mquina no execut-
vel. As linguagens de alto nvel como Pascal, Cobol e C, no tm nenhuma relao direta
com a mquina, ficando essa preocupao exclusivamente com o compilador. Assim, os
programas-fonte podem ser portados entre computadores de diversos fabricantes, per-
mitindo o desenvolvimento de aplicaes independente do equipamento.
2.4.2 INTERPRETADOR
considerado um tradutor que no gera mdulo-objeto. A partir de um programa-
fonte escrito em linguagem de alto nvel, o interpretador, durante a execuo do pro-
grama, traduz cada instruo e a executa imediatamente. Algumas linguagens tipicamen-
te interpretadas so o Basic e Perl.
A maior desvantagem na utilizao de interpretadores o tempo gasto na traduo
das instrues de um programa toda vez que este for executado, j que no existe a ge-
rao de um cdigo executvel. A vantagem permitir a implementao de tipos de da-
dos dinmicos, ou seja, que podem mudar de tipo durante a execuo do programa, au-
mentando assim, sua flexibilidade.
2.4.3 LINKEDITOR
o utilitrio responsvel por gerar, a partir de um ou mais mdulos-objeto, um nico
programa executvel. Suas funes bsicas so resolver todas as referncias simblicas
existentes entre os mdulos e reservar memria para a execuo do programa.
Para resolver todas as referncias a smbolos, o linkeditor tambm pode pesquisar em
bibliotecas do sistema ou do prprio usurio. Bibliotecas so arquivos que contm di-
versos mdulos-objeto e/ou definies de smbolos.
2.4.4 INTERPRETADOR DE COMANDOS e LINGUAGEM DE CONTROLE
O interpretador de comandos ou Shell permite que o usurio se comunique dire-
tamente com o Sistema Operacional. Atravs de comandos simples, o usurio pode ter
acesso a diversas funes e rotinas especficas do sistema. Quando digitadas pelo usu-
rio, os comandos so interpretados pelo shell, que, ao reconhecer a linha de comando,
verifica sua sintaxe, envia mensagens de aviso ou erro e faz chamadas a rotinas do sis-
tema. Dessa forma, o usurio dispe de uma interface direta com o Sistema Operacional
para realizar tarefas como criar, ler ou eliminar arquivos, consultar diretrios ou verificar
a data e hora armazenada no sistema.
O conjunto de comandos disponveis pelo interpretador conhecido como linguagem
de controle. Algumas linguagens so poderosas a ponto de oferecer a possibilidade de
criar programas com estruturas de deciso e iterao. Esses programas nada mais so
que uma seqncia de comandos armazenados em um arquivo texto, denominados ar-
quivos de comandos ou scripts, que podem ser executados sempre que necessrio.
2.4.5 ATIVAO / DESATIVAO DO SISTEMA
Inicialmente, todo o cdigo do Sistema Operacional reside na memria secundria
como discos e fitas. Toda vez que um computador ligado, o Sistema Operacional tem
que ser carregado da memria secundria para a memria principal. Esse procedimento,
denominado ativao do sistema (boot), realizado por um programa localizado em
um bloco especfico do disco (rea de boot). O procedimento de ativao varia em funo
do equipamento, podendo ser realizado atravs do teclado, de um terminal ou no painel
do gabinete do processador.
Alm da carga do Sistema Operacional, a ativao do sistema tambm consiste na
execuo de arquivos de inicializao. Nestes arquivos so especificados procedimentos
de customizao e configurao de hardware e software especficos para cada ambiente.
Na maioria dos sistemas, tambm existe o processo de desativao (shutdown). Este
procedimento permite que as aplicaes e componentes do Sistema Operacional sejam
desativados de forma ordenada, garantindo sua integridade.
02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
25
2.5 EXERCCIOS

17) Pratique converso de unidades:
a. Quanto dura um microano em segundos?
b. Micrmetros so chamados de mcrons. Qual o tamanho de um gigamcron?
c. Quantos bytes h em 1 TB de memria?
d. A massa da Terra de 6000 yottagramas. Qual esse peso em quilogramas?

18) Quais so as unidades funcionais de um sistema computacional?

19) Quais os componentes de um processador e quais so suas funes?

20) Como a memria principal de um computador organizada?

21) Descreva os ciclos de leitura e gravao da memria principal.

22) Qual o nmero mximo de clulas endereadas em arquiteturas com MAR de 16,
32 e 64 bits?

23) O que so memrias volteis e no-volteis?

24) Conceitue memria cache e apresente as principais vantagens do seu uso.

25) Quais as diferenas entre memria principal e memria secundria?

26) Caracterize os barramentos processador-memria, E/S e backplane.

27) Como a tcnica de pipelining melhora o desempenho dos sistemas computacio-
nais?

28) Compare as arquiteturas de processadores RISC e CISC.

29) Conceitue a tcnica de benchmark e explique sua realizao.

30) Por que o cdigo-objeto gerado pelo tradutor ainda no pode ser executado?

31) Por que a execuo de programas interpretados mais lenta que a de compila-
dos?

32) Qual a funo do linkeditor?

33) Pesquise comandos disponveis em linguagens de controle de Sistemas Operacio-
nais.

34) Explique o processo de ativao (boot) do Sistema Operacional.

35) Uma razo para a demora da adoo das interfaces grficas era o custo do hard-
ware necessrio para suport-las. De quanta RAM de vdeo se precisa para supor-
tar uma tela de texto monocromtico com 25 linhas x 80 colunas de caracteres?
Quanto necessrio para suportar um mapa de bits com 1024 x 768 pixels de 24
bits? Qual o custo dessa RAM em preos de 1980 (5 dlares / Kb)? Quanto custa
agora?

36) Das instrues a seguir, quais s podem ser executadas em modo ncleo?
a. Desabilite todas as interrupes;
b. Leia o horrio do relgio;
c. Altere o horrio do relgio;
d. Altere o mapa de memria.

02 Conceitos de Hardware e Software
Sistemas Operacionais Lucilia Ribeiro
26
37) Um computador tem um pipeline de quatro estgios. Cada estgio leva o mesmo
tempo para fazer seu trabalho digamos 1 ns. Quantas instrues por segundo
essa mquina pode executar?

38) Um revisor alerta sobre um erro de ortografia no original de um livro-texto sobre
Sistemas Operacionais que est para ser impresso. O livro tem aproximadamente
700 pginas, cada uma com 50 linhas de 80 caracteres. Quanto tempo ser preci-
so para percorrer eletronicamente o texto no caso de a cpia estar em cada um
dos nveis de memria da tabela da pgina 18? Para mtodos de armazenamento
interno, considere que o tempo de acesso dado por byte (caractere); para dis-
cos, considere que o tempo por bloco de 1KB (1024 caracteres); e, para fitas,
que o tempo dado a partir do incio dos dados com acesso subseqente na
mesma velocidade que o acesso a discos.





-x-
03 Concorrncia
Sistemas Operacionais Lucilia Ribeiro
27

Concorrncia



O segredo do sucesso a perseverana em atingir o objetivo. (Benjamim Disraeli)

3.1 INTRODUO
Concorrncia a possibilidade de o processador executar instrues em paralelo
com operaes de E/S permitindo que diversas tarefas sejam executadas concorrente-
mente. Este o princpio bsico para o projeto e a implementao de sistemas multipro-
gramveis.
Os sistemas multiprogramveis surgiram a partir de limitaes existentes nos mono-
programveis. Nesse, muitos recursos computacionais de alto custo permaneciam muitas
vezes ociosos por longo perodo de tempo, pois enquanto uma leitura de disco realiza-
da, o processador fica parado. O tempo de espera longo, j que as operaes com dis-
positivos de entrada e sada so muito lentas se comparadas com a velocidade com que
o processador executa as instrues.

A tabela abaixo apresenta um exemplo de um programa que l registros de um ar-
quivo e executa, em mdia, 100 instrues por registro lido. Neste caso, o processador
gasta aproximadamente 93% do tempo esperando o dispositivo de E/S concluir a opera-
o para continuar o processamento.

Leitura de um registro 0,0015 s
Execuo de 100 instrues 0,0001 s
Total 0,0016 s
% utilizao da Cpu (0,0001 / 0,0016) = 0,066 = 6,6%
Outro aspecto a ser considerado a subutilizao da memria principal. Um progra-
ma que no ocupe totalmente a memria ocasiona a existncia de reas livres sem utili-
zao. Nos sistemas multiprogramveis, vrios programas podem estar residentes em
memria, concorrendo pela utilizao do processador.
A utilizao concorrente da CPU deve ser implementada de maneira que, quando um
programa perde o uso do processador e depois retorna para continuar sua execuo, seu
estado deve ser idntico ao do momento em que foi interrompido. O programa dever
continuar sua execuo exatamente de onde parou, aparentando ao usurio que nada
aconteceu.
As vantagens proporcionadas pela multiprogramao podem ser percebidas onde e-
xistem um sistema computacional por exemplo, com um disco, um terminal e uma im-
pressora, como mostra a tabela abaixo. Neste ambiente so executados trs programas,
que possuem caractersticas de processamento distintas.
Em um ambiente monoprogramvel, os programas so executados seqencialmente.
Sendo assim, o Prog1 processado em 5 minutos, enquanto o Prog2 espera para come-
ar sua execuo, que leva 15 minutos. Finalmente, o Prog3 inicia sua execuo aps 20
minutos e completa seu processamento em 10 minutos, totalizando 30 minutos na exe-
3
03 Concorrncia
Sistemas Operacionais Lucilia Ribeiro
28
cuo dos trs programas. No caso de os programas serem executados concorrentemen-
te, em um sistema multiprogramvel, o ganho na utilizao dos recursos e tambm no
tempo de resposta considervel.

CARACTERISTICAS PROG1 PROG2 PROG3
Utilizao da CPU alta baixa baixa
Operaes de E/S poucas muitas muitas
Tempo de processamento 5 min 15 min 10 min
Memria utilizada 50 KB 100 KB 80 KB
Utilizao do disco no no sim
Utilizao do terminal no sim no
Utilizao da impressora no no sim
3.2 INTERRUPO e EXCEO
Durante a execuo de um programa, alguns eventos inesperados podem ocorrer,
ocasionando um desvio forado no seu fluxo de execuo. Estes tipos de eventos so
conhecidos por interrupo ou exceo e podem ser conseqncia da sinalizao de
algum dispositivo de hardware externo ao processador (interrupo) ou da execuo de
instrues do prprio programa (exceo).
Uma interrupo sempre gerada por algum evento externo ao programa e, neste
caso, independe da instruo que est sendo executada. Um exemplo de interrupo
ocorre quando um dispositivo avisa ao processador que alguma operao de E/S est
completa. Neste caso, o processador deve interromper o programa para tratar o trmino
da operao.
Ao final da execuo de cada instruo, a unidade de controle verifica a ocorrncia de
algum tipo de interrupo. Neste caso, o programa em execuo interrompido e o con-
trole desviado para uma rotina responsvel por tratar o evento ocorrido, denominada
rotina de tratamento de interrupo. Para que o programa possa posteriormente vol-
tar a ser executado, necessrio que, no momento da interrupo, um conjunto de in-
formaes sobre a sua execuo seja preservado.



Para cada tipo de interrupo existe uma rotina de tratamento associada, para qual o
fluxo de execuo deve ser desviado. A identificao do tipo de evento ocorrido funda-
mental para determinar o endereo da rotina de tratamento.
Existem dois mtodos utilizados para o tratamento de interrupes. O primeiro utiliza
uma estrutura de dados chamada vetor de interrupo, que contm o endereo inicial
de todas as rotinas de tratamento existentes associadas a cada tipo de evento. O outro
03 Concorrncia
Sistemas Operacionais Lucilia Ribeiro
29
mtodo utiliza um registrador de status que armazena o tipo de evento ocorrido. Neste
mtodo s existe uma nica rotina de tratamento, que no seu incio testa o registrador
para identificar o tipo de interrupo e trat-la de maneira adequada.
As interrupes so decorrentes de eventos assncronos, ou seja, no relacionadas
instruo do programa corrente, portanto so imprevisveis e podem ocorrer mltiplas
vezes de forma simultnea. Uma maneira de evitar esta situao a rotina de tratamen-
to inibir as demais interrupes.
Porm alguns processadores no permitem que interrupes sejam desabilitadas, fa-
zendo com que exista um tratamento para a ocorrncia de mltiplas interrupes. Nor-
malmente, existe um dispositivo denominado controlador de pedidos de interrupo,
responsvel por avaliar as interrupes geradas e suas prioridades de atendimento.
Uma exceo semelhante a uma interrupo, sendo a principal diferena o motivo
pelo qual o evento gerado. A exceo resultado direto da execuo de uma instruo
do prprio programa, como a diviso de um nmero por zero ou a ocorrncia de overflow
em uma operao aritmtica.
A diferena fundamental entre exceo e interrupo que a primeira gerada por
um evento sncrono, enquanto a segunda gerada por eventos assncronos. Um evento
sncrono quando resultado direto da execuo do programa corrente. Tais eventos so
previsveis e, por definio, s pode ocorrer um nico de cada vez.
3.3 OPERAES DE ENTRADA/SADA
Nos primeiros sistemas computacionais, a comunicao entre o processador e os peri-
fricos era controlada por um conjunto de instrues especiais, denominadas instrues
de entrada/sada, executadas pelo prprio processador. Esse modelo criava uma forte
dependncia entre o processador e os dispositivos de E/S.
O surgimento do controlador ou in-
terface permitiu ao processador agir de
maneira independente dos dispositivos.
Isso simplificou as instrues de E/S, por
no ser mais necessrio especificar deta-
lhes de operaes dos perifricos, tarefa
esta realizada pelo controlador.
Com a utilizao do controlador, exis-
tiam duas maneiras bsicas pelas quais o
processador gerenciava as operaes de
E/S. Na primeira, o processador sincroni-
zava-se com o perifrico para o incio da
transferncia de dados e ficava perma-
nentemente testando o estado do perif-
rico para verificar o final da operao.
Este controle E/S controlada por pro-
grama, mantinha o processador ocupado
at o trmino da E/S (espera ocupada ou
busy wait).
A evoluo do modelo anterior foi permitir que, aps o incio da transferncia dos da-
dos, o processador ficasse livre para outras tarefas. Assim, em determinados espaos de
tempo, o Sistema Operacional deveria testar cada dispositivo para saber do trmino da
operao de E/S (Polling). O problema dessa implementao que, no caso de existir um
grande nmero de perifricos, o processamento interrompido freqentemente para
testar os diversos componentes.
Com a implementao do mecanismo de interrupo, as operaes de E/S puderam
ser realizadas de uma forma mais eficiente. Em vez de o sistema periodicamente verificar
o estado de uma operao pendente, o prprio controlador interrompia o processador
para avisar do trmino da operao. Com esse mecanismo denominado E/S controlada
por interrupo, o processador, aps a execuo do comando de leitura ou gravao,
03 Concorrncia
Sistemas Operacionais Lucilia Ribeiro
30
permanece livre para o processamento de outras tarefas. O controlador por sua vez, ao
receber, por exemplo, um sinal de leitura, fica encarregado de ler os blocos do disco e
armazen-los em registradores prprios. Em seguida, o controlador sinaliza uma inter-
rupo ao processador. Quando o processador atende tal interrupo, a rotina respons-
vel transfere os dados dos registradores do controlador para a memria principal.
A operao de E/S controlada por interrupo muito mais eficiente, porm, a trans-
ferncia de grande volume de dados exige muitas intervenes do processador, reduzin-
do sua eficincia. Para resolver esse problema, implementou-se uma tcnica de transfe-
rncia de dados denominada DMA (Direct Memory Access).
A tcnica de DMA permite que um bloco de dados seja transferido entre a memria
principal e dispositivos de E/S sem a interveno do processador, exceto no incio e no
final da transferncia. Quando o sistema deseja ler ou gravar um bloco de dados, o pro-
cessador informa ao controlador a localizao, o dispositivo de E/S, a posio inicial da
memria onde os dados sero lidos ou gravados e o tamanho do bloco. O controlador
realiza ento a transferncia entre o perifrico e a memria principal, e o processador
interrompido somente no final da operao. A rea de memria utilizada pelo controlador
na tcnica DMA chamada buffer de E/S.
3.4 BUFERIZAO
Consiste na utilizao de uma rea da memria principal, para a transferncia de da-
dos entre os dispositivos de E/S e a memria. Esta tcnica permite que em uma opera-
o de leitura o dado seja transferido primeiramente para o buffer, liberando imediata-
mente o dispositivo de entrada para realizar uma nova leitura. Neste caso, enquanto o
processador manipula o dado localizado no buffer, o dispositivo realiza outra operao de
leitura no mesmo instante. Este mesmo mecanismo pode ser aplicado nas operaes de
gravao.
A buferizao permite minimizar o problema da disparidade da velocidade de proces-
samento existente entre o processador e os dispositivos de E/S. O objetivo principal des-
ta tcnica manter, na maior parte do tempo, processador e dispositivos ocupados.








3.5 SPOOLING
A tcnica de spooling (simultaneous peripheral operation on-line) foi introduzida no
final de 1950 para aumentar o grau de concorrncia e eficincia nos Sistemas Operacio-
nais.
A tcnica de spooling, semelhante tcnica de buferizao, utiliza uma rea em disco
como se fosse um grande buffer. Neste caso, dados podem ser lidos ou gravados em
disco, enquanto programas so executados concorrentemente. Atualmente essa tcnica
est presente na maioria dos Sistemas Operacionais sendo utilizada no gerenciamento de
impresso.
O uso do spooling permite desvincular o programa do dispositivo de impresso, im-
pedindo que um programa reserve a impressora para uso exclusivo. O Sistema Operacio-
nal o responsvel por gerenciar a seqncia de impresses solicitadas pelos programas,
seguindo critrios que garantam a segurana e o uso eficiente das impressoras.
Observe a figura na pgina seguinte:
03 Concorrncia
Sistemas Operacionais Lucilia Ribeiro
31

3.6 REENTRNCIA
comum, em sistemas multiprogram-
veis, vrios usurios utilizarem os mesmos
aplicativos simultaneamente, como edito-
res de texto e compiladores. Se cada usu-
rio que utilizasse um destes aplicativos
trouxesse o cdigo executvel para a me-
mria, haveria diversas cpias de um
mesmo programa na memria principal, o
que ocasionaria um desperdcio de espao.
Reentrncia a capacidade de um
cdigo executvel (reentrante) ser com-
partilhado por diversos usurios, exigindo
que apenas uma cpia do programa esteja
na memria.

3.7 EXERCCIOS

39) O que concorrncia e como este conceito est presente nos Sistemas Operacio-
nais multiprogramveis?

40) Por que o mecanismo de interrupo fundamental para a implementao da
multiprogramao?

41) Explique o mecanismo de funcionamento das interrupes.

42) O que so eventos sncronos e assncronos? Como estes eventos esto relaciona-
dos ao mecanismo de interrupo e exceo?

43) D exemplos de eventos associados ao mecanismo de exceo.

44) Qual a vantagem da E/S por interrupo comparada com a tcnica de polling?

45) O que DMA e qual a vantagem desta tcnica?

46) Como a tcnica de buferizao permite aumentar a concorrncia em um sistema?

47) Explique o mecanismo de spooling de impresso.

48) Em um sistema multiprogramvel, seus usurios utilizam o mesmo editor de tex-
tos (200 KB), compilador (300 KB), software de correio eletrnico (200 KB) e uma
aplicao corporativa (500 KB). Caso o sistema no implemente reentrncia, qual
o espao de memria principal ocupado pelos programas quando 10 usurios esti-
verem utilizando todas as aplicaes simultaneamente? Qual o espao liberado
quando o sistema implementa reentrncia em todas as aplicaes?
-x-
04 Estrutura do Sistema Operacional
Sistemas Operacionais Lucilia Ribeiro
32

Estrutura do Sistema Operacional


Inteligncia... a faculdade de fazer objetos artificiais, especialmente
ferramentas para fazer ferramentas. (Henry Bergson)

4.1 INTRODUO
O Sistema Operacional formado por um conjunto de rotinas que oferecem servios
aos usurios, s suas aplicaes, e tambm ao prprio sistema. Esse conjunto de rotinas
denominado ncleo do sistema operacional.
importante no confundir o ncleo do sistema com aplica-
es, utilitrios ou o interpretador de comandos, que acompa-
nham o Sistema Operacional. As aplicaes so utilizadas pelos
usurios e escondem todos os detalhes da interao com o sis-
tema. Os utilitrios, como compiladores, editores de texto e in-
terpretadores de comandos permitem aos usurios uma intera-
o amigvel com o sistema para o desenvolvimento de aplicati-
vos.
A maior dificuldade em compreender a estrutura e o funcio-
namento de um Sistema Operacional est no fato que ele no
executado como uma aplicao tipicamente seqencial, com in-
cio, meio e fim. Os procedimentos do sistema so executados
concorrentemente sem uma ordem, com base em eventos assn-
cronos.
As principais funes do ncleo encontradas na maioria dos
sistemas comerciais so:

Tratamento de Interrupes
Tratamento de Processos e Threads
Gerncia de Memria
Gerncia do Sistema de Arquivos
Gerncia de Dispositivos de E/S
Suporte a Redes Locais e Distribudas
Contabilizao do Uso do Sistema
Auditoria e Segurana do Sistema
4.2 CHAMADAS DE SISTEMA (System Calls)
Uma preocupao que surge nos projetos de Sistemas Operacionais a implementa-
o de mecanismos de proteo ao ncleo do sistema e de acesso aos seus servios. Ca-
so uma aplicao que tenha acesso ao ncleo realize uma operao que altere sua inte-
gridade, todo o sistema poder ficar comprometido e inoperante.
As chamadas de sistema podem ser entendidas como uma porta de entrada para o
acesso ao ncleo do sistema operacional e a seus servios. Sempre que um usurio ou
aplicao desejar algum servio do sistema, realizada uma chamada a uma de suas
rotinas atravs de uma system call (chamada ao sistema). O termo system call tipica-
mente utilizado em sistemas Unix, porm em outros sistemas o mesmo conceito apre-
sentado com diferentes nomes, como Application Program Interface (API) no Windows.
Atravs dos parmetros fornecidos na chamada de sistema, a solicitao processa-
da e uma resposta retornada aplicao juntamente com um estado de concluso indi-
4
04 Estrutura do Sistema Operacional
Sistemas Operacionais Lucilia Ribeiro
33
cando se houve algum erro. O mecanismo de ativao e comunicao entre o programa e
o sistema operacional semelhante ao mecanismo implementado quando um programa
chama uma sub-rotina.
Para cada servio disponvel existe uma chamada de sistema associada e cada siste-
ma operacional tem seu prprio conjunto de chamadas, com nomes, parmetros e for-
mas de ativao especficos. Isto explica por que uma aplicao desenvolvida utilizando
servios de um determinado sistema operacional no pode ser portada diretamente para
outro sistema.
Uma tentativa de criar uma biblioteca de chamadas padronizadas foi proposta pelos
institutos ISO e IEEE. O padro POSIX (Portable Operating System Interface for Unix),
como foi definido, permitiu que uma aplicao desenvolvida seguindo esse conjunto de
chamadas pudesse ser executada em qualquer sistema operacional que oferecesse su-
porte ao padro.
4.3 MODOS DE ACESSO
Existem certas instrues que no podem ser colocadas diretamente disposio das
aplicaes, pois a sua utilizao indevida ocasionaria srios problemas integridade do
sistema. Suponha que uma aplicao atualize um arquivo em disco. O programa, por si
s, no pode especificar diretamente as instrues que acessam seus dados no disco.
Como o disco um recurso compartilhado, sua utilizao dever ser gerenciada unica-
mente pelo sistema operacional, evitando que a aplicao possa ter acesso a qualquer
rea do disco indiscriminadamente, o que poderia comprometer a segurana e integrida-
de do sistema de arquivos.
Portanto, fica claro que existem certas instrues que s devem ser executadas pelo
sistema operacional ou sob sua superviso. As instrues que tm o poder de comprome-
ter o sistema so conhecidas como instrues privilegiadas, enquanto as instrues
no-privilegiadas so as que no oferecem risco ao sistema.
Para que uma aplicao possa executar uma instruo privilegiada, necessrio que
no processador seja implementado o mecanismo de proteo conhecido como modos de
acesso. Existem, basicamente, dois modos de acesso implementados pelos processado-
res: modo usurio e modo kernel (ncleo) ou supervisor. Quando o processador trabalha
no modo usurio, uma aplicao s pode executar instrues no-privilegiadas, tendo
acesso a um nmero reduzido de instrues, enquanto no modo kernel ou supervisor
a aplicao pode ter acesso ao conjunto total de instrues do processador.
O modo de acesso de uma aplicao determinado por um conjunto de bits, localiza-
dos no registrador de status do processador, ou PSW (Program Status Word), que indica
o modo de acesso corrente. Atravs desse registrador, o hardware verifica se a instruo
pode ou no ser executada pela aplicao.
A melhor maneira de controlar o
acesso s instrues privilegiadas
permitir que apenas o Sistema Ope-
racional tenha acesso a elas. Sem-
pre que uma aplicao necessita
executar uma instruo privilegia-
da, a solicitao deve ser realizada
atravs de uma chamada de siste-
ma, que altera o modo de acesso
do processador do modo usurio
para o modo kernel. Ao trmino da
execuo, o modo de acesso retor-
na para o modo usurio. Caso uma
aplicao tente executar uma ins-
truo privilegiada diretamente em
modo usurio, o processador sinali-
zar um erro, uma exceo gera-
da e a execuo do programa
04 Estrutura do Sistema Operacional
Sistemas Operacionais Lucilia Ribeiro
34
interrompida.
O mecanismo de modos de acesso tambm uma boa forma de proteger o prprio
ncleo do sistema residente na memria principal. Suponha que uma aplicao tenha
acesso a reas de memria onde est o sistema operacional qualquer programador mal-
intencionado ou um erro de programao poderia gravar nesta rea, violando o sistema.
Com o mecanismo de modos de acesso, para uma aplicao escrever numa rea onde
resida o Sistema Operacional o programa deve estar sendo executado no modo kernel.
4.4 ARQUITETURA MONOLTICA
Pode ser comparada com uma aplicao
formada por vrios mdulos que so compi-
lados separadamente e depois linkados, for-
mando um grande e nico programa execu-
tvel. Os primeiros Sistemas Operacionais
foram desenvolvidos com base neste modelo,
o que tornava seu desenvolvimento e, prin-
cipalmente, sua manuteno bastante dif-
ceis. Devido a sua simplicidade e bom de-
sempenho, foi adotada no projeto do MS-
DOS e nos primeiros sistemas UNIX.







4.5 ARQUITETURA DE CAMADAS
Com o aumento da complexidade e tamanho do cdigo dos sistemas operacionais,
tcnicas de programao estruturada e modular foram incorporadas ao seu projeto. Na
arquitetura de camadas, o sistema dividido em nveis sobrepostos. Cada camada
oferece um conjunto de funes que podem ser utilizadas apenas pelas camadas superio-
res.
A vantagem da estruturao em camadas i-
solar as funes do Sistema Operacional, facili-
tando sua manuteno e depurao, alm de criar
uma hierarquia de nveis de modos de acesso,
protegendo as camadas mais internas. Uma des-
vantagem o desempenho. Cada nova camada
implica uma mudana no modo de acesso. Por
exemplo, no caso do OpenVMS, para se ter acesso
aos servios oferecidos pelo kernel preciso pas-
sar por trs camadas ou trs mudanas no modo
de acesso.
Atualmente, a maioria dos sistemas comerciais
utiliza o modelo de duas camadas, onde existem
os modos usurio (no privilegiado) e kernel (pri-
vilegiado). A maioria das verses do Unix e dos
Windows est baseada nesse modelo.



04 Estrutura do Sistema Operacional
Sistemas Operacionais Lucilia Ribeiro
35
4.6 MQUINA VIRTUAL
Um sistema computacional for-
mado por nveis, onde a camada de
nvel mais baixo o hardware. Acima
desta camada encontramos o Sistema
Operacional, que oferece suporte pa-
ra as aplicaes. O modelo de m-
quina virtual cria um nvel interme-
dirio entre o hardware e o Sistema
Operacional, denominado gerncia de
mquinas virtuais. Este nvel cria di-
versas mquinas virtuais independen-
tes, onde cada uma oferece uma c-
pia virtual do hardware, incluindo os
modos de acesso, interrupes, dis-
positivos de E/S etc.
Alm de permitir a convivncia de
Sistemas Operacionais diferentes no
mesmo computador, este modelo cria
o isolamento total entre cada VM,
oferecendo grande segurana para cada uma delas. A desvantagem dessa arquitetura
sua grande complexidade.
Outro exemplo de utilizao dessa arquitetura ocorre na linguagem Java. Para se e-
xecutar um programa em Java necessrio uma mquina virtual Java (JVM). Qualquer
sistema operacional pode suportar uma aplicao Java, desde que exista uma JVM de-
senvolvida para ele. Desta forma, a aplicao no precisa ser recompilada para cada sis-
tema, tornando-se independente do hardware e Sistema Operacional utilizados. A des-
vantagem seu menor desempenho se comparado a uma aplicao compilada e execu-
tada diretamente em uma arquitetura especfica.
4.7 EXERCCIOS

49) O que o ncleo do sistema e quais so suas principais funes?

50) O que uma chamada de sistema e qual sua importncia para a segurana do
sistema? Como as System Calls so utilizadas por um programa?

51) O que so instrues privilegiadas e no-privilegiadas? Qual a relao delas com
os modos de acesso?

52) Explique como funciona a mudana de modos de acesso e d um exemplo de co-
mo um programa faz uso desse mecanismo.

53) Como o kernel do Sistema Operacional pode ser protegido pelo mecanismo de
modo de acesso?

54) Compare as arquiteturas monoltica e de camadas. Quais as vantagens e desvan-
tagens de cada uma?

55) Quais as vantagens do modelo de mquina virtual?



-x-
05 Processos
Sistemas Operacionais Lucilia Ribeiro
36

Processos


Muito do que eu tinha, no consegui libertar;
Muito do que eu libertei voltou pra mim. (Lee Wilson Dodd)

5.1 INTRODUO
O conceito de processo a base para a implementao de um sistema multiprogra-
mvel. O processador projetado apenas para executar instrues, no sendo capaz de
distinguir qual programa se encontra em execuo.
A gerncia de processos uma das principais funes de um Sistema Operacional. A-
travs de processos, um programa pode alocar recursos, compartilhar dados, trocar in-
formaes e sincronizar sua execuo. Nos sistemas multiprogramveis, os processos
so executados concorrentemente, compartilhando, dentro outros recursos, o uso do
processador, da memria principal e dos dispositivos de E/S. Nos sistemas com mltiplos
processadores, no s existe a concorrncia de processos pelo uso do processador, como
tambm a execuo simultnea de processos nos diferentes processadores.
5.2 ESTRUTURA DO PROCESSO
Nos primeiros sistemas computacionais apenas um programa podia ser executado de
cada vez. Tal programa tinha acesso a todos os recursos do sistema. Atualmente, diver-
sos programas executam simultaneamente num sistema computacional. Entretanto, para
que isso seja possvel necessrio um controle maior na diviso de tarefas entre os v-
rios programas. Da resultou o conceito de processo.
Um processo um programa em execuo, incluindo os valores correntes de todos os
registradores do hardware, e das variveis manipuladas por ele no curso de sua execu-
o. Embora um processador execute vrios processos ao mesmo tempo, dando ao usu-
rio a impresso de paralelismo de execuo, num dado instante apenas um processo
progride em sua execuo. Em outras palavras, em cada momento o processador est
executando apenas um processo e seu uso compartilhado entre os vrios processos
existentes. Um processo que num instante est usando o processador depois de um certo
tempo interrompido e o processador cedido a outro processo. Assim, num grande
intervalo de tempo todos os processos tero progredido. O rpido chaveamento do pro-
cessador entre vrios processos chamado multiprogramao. Para que haja esse cha-
veamento necessrio o uso de algum algoritmo de escalonamento para determinar
quando o trabalho de um processo deve ser interrompido e qual o prximo processo a
ser servido.
A diferena entre um processo e um programa sutil, mas crucial. Imagine um cien-
tista de programao que tem excelentes dotes culinrios e esteja preparando um bolo
de aniversrio para a filha. Ele tem sua disposio uma receita de bolo, e uma dispensa
com os ingredientes necessrios. A receita o programa, ou seja, um algoritmo em al-
guma linguagem conhecida, o cientista de programao o processador e os ingredien-
tes os dados de entrada. J o processo vem a ser a atividade resultante da preparao
do bolo: leitura da receita, busca dos ingredientes, mistura dos ingredientes, etc. Imagi-
ne agora que a filha do nosso cientista aparea chorando, por haver sido picada por uma
abelha, enquanto o pai est fazendo o bolo. Neste caso, o cientista deve guardar em que
ponto da receita ele estava (o estado do processo corrente salvo), apanhar um livro de
primeiros socorros e seguir as instrues contidas no captulo do livro sobre picada de
abelhas. Aqui vemos o processador, mais precisamente o cientista da computao, sendo
chaveado de um processo (preparao do bolo), para outro de maior prioridade (admi-
nistrao de cuidados mdicos), cada um deles constitudo de um programa diferente
(receita versus livro de primeiros socorros). Quando o ferro da abelha tiver sido retirado
da filha do cientista, este poder voltar preparao do bolo, continuando seu trabalho a
partir do ponto onde ele foi interrompido.
5
05 Processos
Sistemas Operacionais Lucilia Ribeiro
37

A idia principal que um processo constitui uma atividade. Ele possui programa, en-
trada, sada e um estado. Um nico processador pode ser compartilhado entre os vrios
processos, com algum algoritmo de escalonamento usado para determinar quando parar
o trabalho sobre um processo e servir outro.
Um processo tambm pode ser definido como o ambiente onde um programa exe-
cutado. Este ambiente, alm das informaes sobre a execuo, possui tambm o quanto
de recursos do sistema cada programa pode utilizar, como o espao de endereamento,
tempo de processador e rea em disco.
Um processo formado por trs partes, que juntas mantm todas as informaes ne-
cessrias execuo de um programa: Contexto de Hardware, Contexto de Software e
Espao de Endereamento.
5.2.1 CONTEXTO DE HARDWARE
Armazena o contedo
dos registradores gerais da CPU,
alm dos registradores de uso
especfico, como o Contador de
Programas, o Ponteiro de Pilha e
o Registrador de Status.
A troca de um processo
por outro no processador, co-
mandada pelo Sistema Opera-
cional, denominada troca de
contexto. A troca de contexto
consiste em salvar o contedo
dos registradores do processo
que est deixando a CPU e car-
reg-los com os valores referen-
tes ao do novo processo que
ser executado. Essa operao
resume-se em substituir o con-
texto de hardware de um pro-
cesso pelo de outro.



5.2.2 CONTEXTO DE SOFTWARE
No contexto de software so especificadas caractersticas e limites dos recursos
que podem ser alocados pelo processo, como o nmero mximo de arquivos abertos si-
multaneamente, prioridade de execuo e o tamanho do buffer para operao de E/S.
Muitas destas caractersticas so determinadas no momento da criao do processo, en-
quanto outras podem ser alteradas durante sua existncia.
A maior parte das informaes do contexto de software do processo so proveni-
entes de um arquivo do Sistema Operacional, conhecido como arquivo de contas. Neste
arquivo, gerenciado pelo administrador do sistema, so especificados os limites dos re-
cursos que cada processo pode alocar.
O contexto de software composto por trs grupos de informaes sobre o pro-
cesso: identificao, quotas e privilgios.
05 Processos
Sistemas Operacionais Lucilia Ribeiro
38
Identificao: cada processo criado pelo Sistema Operacional recebe uma
identificao nica (PID Process Identification) representada por um nmero. Atravs
da PID o Sistema Operacional e outros processos podem fazer referncia a qualquer pro-
cesso existente.
Quotas: so os limites de cada recurso do sistema que um processo pode
alocar. Caso uma quota seja insuficiente, o processo ser executado lentamente, inter-
rompido durante seu processamento ou mesmo no ser executado. Exemplos:
o Nmero mximo de arquivos abertos simultaneamente;
o Tamanho mximo de memria principal e secundria que o proces-
so pode alocar;
o Nmero mximo de operaes de E/S pendentes;
o Tamanho mximo do buffer para operaes de E/S;
o Nmero mximo de processos e threads que podem ser criados.
Privilgios: os privilgios ou direitos definem as aes que um processo
pode fazer em relao a ele mesmo, aos demais processos e ao Sistema Operacional.
Privilgios que afetam o prprio processo permitem que suas caractersticas
possam ser alteradas, como prioridade de execuo, limites alocados na memria princi-
pal e secundria etc. J os privilgios que afetam os demais processos permitem, alm
da alterao de suas prprias caractersticas, alterar as de outros processos.
Privilgios que afetam o sistema so os mais amplos e poderosos, pois esto
relacionados operao e gerncia do ambiente, como a desativao do sistema, altera-
o de regras de segurana, criao de outros processos privilegiados, modificao de
parmetros de configurao do sistema, dentro outros. A maioria dos Sistemas Opera-
cionais possui uma conta de acesso com todos estes privilgios disponveis, com o prop-
sito de o administrador gerenciar o Sistema Operacional. No sistema Unix existe a conta
root, no Windows a conta administrador e no OpenVMS existe a conta system com
este perfil.
5.2.3 ESPAO DE ENDEREAMENTO
a rea de memria pertencente ao processo onde as instrues e os dados do
programa so armazenados para execuo. Cada processo possui seu prprio espao de
endereamento, que deve ser devidamente protegido do acesso dos demais processos.















05 Processos
Sistemas Operacionais Lucilia Ribeiro
39

5.2.4 BLOCO DE CONTROLE DE PROCESSO
O processo implementado pelo Sistema O-
peracional atravs de uma estrutura de dados cha-
mada Bloco de Controle de Processo (Process
Control Block PCB). A partir do PCB, o Sistema O-
peracional mantm todas as informaes sobre o
contexto de hardware, contexto de software e espao
de endereamento de cada processo.






5.3 ESTADOS DO PROCESSO
Em um sistema multiprogramvel, um processo no deve alocar a CPU com exclusivi-
dade, de formas que possa existir um compartilhamento no uso do processador. Os pro-
cessos passam por diferentes estados ao longo do seu processamento, em funo de
eventos gerados pelo Sistema Operacional ou pelo prprio processo. Um processo ativo
pode encontrar-se em trs estados diferentes:
Rodando (Execuo ou running): nesse estado, o processo est sendo
processado pela CPU. Somente um processo pode estar sendo executado em um dado
instante. Os processos se alternam na utilizao do processador.
Pronto (ready): um processo est no estado de pronto quando aguarda
apenas para ser executado. O Sistema Operacional responsvel por determinar a or-
dem e os critrios pelos quais os processos em estado de pronto devem fazer uso do
processador. Em geral existem vrios processos no sistema no estado de pronto organi-
zados em listas encadeadas.
Bloqueado (Espera ou wait): nesse estado, um processo aguarda por al-
gum evento externo ou por algum recurso para prosseguir seu processamento. Como
exemplo, podemos citar o trmino de uma operao de E/S ou a espera de uma determi-
nada entrada de dados para continuar sua execuo. O sistema organiza os vrios pro-
cessos no estado de espera tambm em listas encadeadas, separados por tipo de evento.
Neste caso, quando um evento acontece, todos os processos da lista associada ao evento
so transferidos para o estado de pronto.
5.4 MUDANA DE ESTADO DO PROCESSO
Um processo muda de estado durante seu processamento em funo de eventos ori-
ginados por ele prprio (eventos voluntrios) ou pelo Sistema Operacional (eventos invo-
luntrios). Basicamente, existem quatro mudanas de estado que podem ocorrer a um
processo:
1) Rodando Bloqueado: essa transio ocorre por eventos gerados pelo pr-
prio processo, como uma operao de E/S.
2) Rodando Pronto: um processo em execuo passa para o estado de pronto
por eventos gerados pelo sistema, como o trmino da fatia de tempo que o
processo possui para sua execuo. Nesse caso, o processo volta para a fila de
05 Processos
Sistemas Operacionais Lucilia Ribeiro
40
pronto, onde aguarda por uma nova oportunidade para continuar seu proces-
samento.
3) Pronto Rodando: o Sistema Operacional seleciona um processo da fila de
prontos para executar.
4) Bloqueado Pronto: um processo passa de bloqueado para pronto quando a
operao solicitada atendida ou o recurso esperado concedido.









Logicamente, os dois primeiros estados so similares. Em ambos os casos o processo
vai executar, s que no segundo no h, temporariamente, CPU disponvel para ele. O
terceiro estado diferente dos dois primeiros, pois o processo no pode executar, mes-
mo que a CPU no tenha nada para fazer.
Quatro transies so possveis entre esses trs estados. A transio 1 ocorre quando
um processo descobre que ele no pode prosseguir.
As transies 2 e 3 so causadas pelo escalonador de processos sem que o processo
saiba disso. A transio 2 ocorre quando o escalonador decide que o processo em execu-
o deve dar lugar a outro processo para utilizar a CPU. A transio 3 ocorre quando
hora do processo ocupar novamente a CPU. O escalonamento isto , a deciso sobre
quando e por quanto tempo cada processo deve executar um tpico muito importan-
te. Muitos algoritmos vm sendo desenvolvidos na tentativa de equilibrar essa competi-
o que exige eficincia para o sistema como um todo e igualdade para os processos in-
dividuais.
A transio 4 ocorre quando acontece um evento externo pelo qual um processo es-
tava aguardando (como a chegada de alguma entrada).
5.5 CRIAO E ELIMINAO DE PROCESSOS

A criao de um processo ocorre a partir do momento em que o Sistema Operacional
adiciona um novo PCB sua estrutura e aloca um espao de endereamento na memria
para uso. No caso da eliminao de um processo, todos os recursos associados ao pro-
cesso so desalocados e o PCB eliminado pelo Sistema Operacional.
05 Processos
Sistemas Operacionais Lucilia Ribeiro
41
A criao de processos pode ocorre por diferentes razes: 1) logon interativo: desta
forma, um processo criado atravs do estabelecimento de uma sesso interativa por
um usurio a partir de um terminal; 2) criao por um outro processo: um processo j
existente pode criar outros processos, sendo estes novos processos independentes ou
subprocessos; 3) criao pelo sistema operacional: o Sistema Operacional pode criar no-
vos processos com o intuito de oferecer algum tipo de servio.
Depois de criado, um processo comea a executar e faz seu trabalho. Contudo, nada
para sempre, nem mesmo os processos. Mais cedo ou mais tarde o novo processo ter-
minar, normalmente em razo de alguma das seguintes condies: 1) Sada normal
(voluntria); 2) Sada por erro (voluntria); 3) Erro fatal (involuntrio) e 4) Cancelamen-
to por um outro processo (involuntrio).
Na maioria das vezes, os processos terminam porque fizeram seu trabalho. Quando
acaba de compilar o programa atribudo a ele, o compilador avisa ao sistema operacional
que ele terminou. Programas baseados em tela suportam tambm o trmino voluntrio.
Processadores de texto, visualizadores da Web (browsers) e programas similares tem um
cone que o usurio pode clicar para dizer ao processo que remova quaisquer arquivos
temporrios que ele tenha aberto e ento termine.
O segundo motivo para trmino que o processo descobre um erro. Por exemplo, se
um usurio digita um comando para compilar um arquivo que no existe, o compilador
simplesmente emite uma chamada de sada ao sistema. Processos interativos com base
na tela geralmente no fecham quando parmetros errados so fornecidos. Em vez disso,
uma caixa de dilogo aparece e pergunta ao usurio se ele quer tentar novamente.
A terceira razo para o trmino um erro causado pelo processo, muitas vezes por
um erro de programa. Entre os vrios exemplos esto a execuo de uma instruo ile-
gal, a referncia memria inexistente ou a diviso por zero.
A ltima razo se d quando um processo executa uma chamada ao sistema dizendo
ao sistema operacional para cancelar algum outro processo. Em alguns sistemas, quando
um processo termina, voluntariamente ou no, todos os processos criados por ele so
imediatamente cancelados tambm. Contudo, nem o Unix nem o Windows funcionam
dessa maneira.
5.6 PROCESSOS INDEPENDENTES, SUBPROCESSOS E THREADS
Processos independentes, subprocessos e threads so maneiras diferentes de imple-
mentar a concorrncia dentro de uma aplicao. Neste caso, busca-se subdividir o cdigo
em partes para trabalharem de forma cooperativa. Considere um banco de dados com
produtos de uma grande loja onde vendedores fazem freqentes consultas. Neste caso, a
concorrncia na aplicao proporciona um tempo de espera menor entre as consultas,
melhorando o desempenho da aplicao e beneficiando os usurios.
O uso de processos independen-
tes a maneira mais simples de im-
plementar a concorrncia. Neste caso
no existe vnculo do processo criado
com seu criador. A criao de um pro-
cesso independente exige a alocao
de um PCB prprio.
Subprocessos so processos cria-
dos dentro de uma estrutura hierrqui-
ca. Neste modo, o processo criador
denominado processo pai enquanto o
novo processo chamado de subpro-
cesso ou processo filho. O subpro-
cesso, por sua vez, pode criar outras
estruturas de subprocessos. Uma ca-
racterstica desta implementao a dependncia existente entre o processo criador e o
subprocesso. Caso um processo pai deixe de existir, os subprocessos subordinados so
automaticamente eliminados.
05 Processos
Sistemas Operacionais Lucilia Ribeiro
42
Uma outra caracterstica neste tipo de implementao que subprocessos podem
compartilhar quotas com o processo pai. O uso de processos independentes e subproces-
sos no desenvolvimento de aplicaes concorrentes demanda consumo de diversos re-
cursos do sistema. Sempre que um novo processo criado, o sistema deve alocar recur-
sos (contexto de hardware, de software e espao de endereamento), consumindo tempo
de CPU. No momento do trmino dos processos, o Sistema Operacional tambm dispensa
tempo para desalocar recursos previamente alocados. Outro problema a comunicao e
sincronizao entre processos, considerada pouco eficiente, visto que cada processo pos-
sui seu prprio espao de endereamento.
O conceito de thread foi introduzido na tenta-
tiva de reduzir o tempo gasto na criao, elimi-
nao e troca de contexto de processos nas apli-
caes concorrentes, bem como economizar re-
cursos do sistema como um todo. Em um ambi-
ente multithread, um nico processo pode supor-
tar mltiplos threads, cada qual associado a uma
parte do cdigo da aplicao. Neste caso no
necessrio haver diversos processos para a im-
plementao da concorrncia. Threads comparti-
lham o processador da mesma maneira que um
processo, ou seja, enquanto um thread espera
por uma operao de E/S, outro thread pode ser
executado.
Cada thread possui seu prprio contexto de
hardware, porm compartilha o mesmo contexto de software e espao de endereamento
com os demais threads do processo. O compartilhamento do espao de endereamento
permite que a comunicao de threads dentro de um mesmo processo seja realizada de
forma simples e rpida. Este assunto melhor detalhado no prximo captulo.
5.7 PROCESSOS PRIMEIRO (FOREGROUND) E SEGUNDO PLANO (BACKGROUND)
Um processo de primeiro plano (interativo) aquele que permite a comunicao
direta do usurio com o processo durante o seu processamento. Um processo de se-
gundo plano (batch) aquele onde no existe a comunicao com o usurio durante o
seu processamento. Neste caso, os canais de E/S no esto associados a nenhum dispo-
sitivo de E/S interativo, mas em geral a arquivos de E/S.

possvel associar o canal de sada de um processo ao canal de entrada de um outro.
Neste caso dizemos que existe um pipe ligando os dois processos. Se um processo A ge-
ra uma listagem e o processo B tem como funo orden-la, basta associar o canal de
sada do processo A ao canal de entrada do processo B.
05 Processos
Sistemas Operacionais Lucilia Ribeiro
43


5.8 PROCESSOS LIMITADOS POR CPU (CPU-BOUND) E POR E/S (I/O-BOUND)
Esta classificao se d de acordo com a utilizao do processador e dos dispositivos
de E/S. Um processo definido como limitado por CPU quando passa a maior parte do
tempo no estado de execuo, ou seja, utilizando o processador. Como exemplo temos
os processos utilizados em aplicaes cientficas que efetuam muitos clculos.
Um processo limitado por E/S quando passa a maior parte do tempo no estado
bloqueado, pois realiza um elevado nmero de operaes de E/S. Esse tipo de processo
encontrado em aplicaes comerciais, que se baseiam em leitura, processamento e gra-
vao. Os processos interativos tambm so exemplos de processos limitados por E/S.

5.9 SELEO DE PROCESSOS
Uma alocao eficiente da CPU importante para a eficcia global de um sistema. Pa-
ra tal, diversos algoritmos foram desenvolvidos na tentativa de se ter uma alocao justa
do processador. A multiprogramao tem como objetivo maior maximizar a utilizao da
CPU, ou seja, evitar sempre que possvel que o processador fique ocioso.
5.9.1 FILAS PARA SELEO DE PROCESSOS
Num sistema com multiprogramao, os diversos processos existentes no estado de
pronto so colocados numa fila conhecida como fila de processos prontos. Um novo pro-
cesso criado inicialmente colocado na fila de processos prontos. Ele (assim como os
outros processos no estado de pronto) espera nessa fila at ser selecionado para execu-
o. Essa fila pode ser armazenada como uma lista ligada.
bom salientar que o uso de dispositivos como, por exemplo, uma unidade de fita,
pode implicar a necessidade de espera por parte do processo, j que o dispositivo pode
estar sendo usado por outro processo. Assim, cada dispositivo tem sua prpria fila, cha-
mada fila de dispositivo, com descries dos processos que esto esperando para usar o
dispositivo.
5.9.2 ESCALONADORES
Como foi dito anteriormente, um processo passa por vrias filas de seleo durante
sua execuo. Para realizar a alocao de recursos, o sistema operacional deve selecio-
nar os processos dessas filas de alguma maneira. Um escalonador um programa res-
ponsvel pelo trabalho de escolher processos e de escalar processos para execuo. O
05 Processos
Sistemas Operacionais Lucilia Ribeiro
44
escalonador de processos escolhe processos guardados em disco e os carrega na mem-
ria para execuo. Pode-se dizer que ele seleciona processos que passaram a poder
competir pela CPU. J o escalonador da CPU escolhe dentre os processos prontos aquele
que ser executado, alocando a CPU a ele.
A execuo do escalonador da CPU deve ser muito rpida. Se levar 10 ms para esco-
lher um processo que ser executado por 100 ms, ento 10/(100 + 10) = 9% da CPU
ser desperdiada unicamente para a alocao de recursos para realizar o trabalho.
Outra diferena marcante entre os dois tipos de escalonadores que o escalonador
de processos executado com freqncia bem inferior, j que entre a criao de dois
processos podem transcorrer vrios minutos. O escalonador de processos controla o n-
mero de processos na memria (grau de multiprogramao).
Um escalonador de processos deve manter na memria uma mistura balanceada en-
tre processos que realizam muitas E/S (processos interativos) e processos que usam bas-
tante a CPU. Se todos os processos dependerem de E/S, a fila de prontos estar sempre
vazia e o escalonador de CPU ter pouco o que fazer. Caso tenha processos que depen-
dam mais de processamento, a fila de processos em espera pela realizao de operaes
de E/S estar sempre vazia, os dispositivos de E/S ficaro inativos e o sistema ter um
desempenho ruim.

5.10 EXERCCIOS

56) O que um processo? Diferencie processo de programa.

57) Por que o conceito de processo to importante no projeto de sistemas multipro-
gramveis?

58) possvel que um programa execute no contexto de um processo e no execute
no contexto de um outro? Por qu?

59) Quais partes compem um processo?

60) O que contexto de hardware de um processo e como a implementao da tro-
ca de contexto?

61) Qual a funo do contexto de software? Exemplifique cada grupo de informao.

62) O que o espao de endereamento de um processo?

63) Como o Sistema Operacional implementa o conceito de processo? Qual a estrutura
de dados indicada para organizar os diversos processos na memria principal?

64) Cada processo descrito por um bloco de controle de processos. Quais so as in-
formaes contidas no BCP?

65) Defina os trs estados possveis de um processo.

66) Faa o diagrama de estados de um processo demonstrando e explicando as tran-
sies de um estado para outro.

67) D um exemplo que apresente todas as mudanas de estado de um processo,
juntamente com o evento associado a cada mudana.

68) Na teoria, com trs estados poderia haver seis transies, duas para cada estado.
Contudo, somente quatro transies so mostradas. Por que?

69) Diferencie processos multithreads, subprocessos e processos independentes.

05 Processos
Sistemas Operacionais Lucilia Ribeiro
45
70) Explique a diferena entre processos de primeiro plano e de segundo plano.

71) D exemplos de aplicao limitada por CPU e limitada por E/S.

72) Trace um paralelo entre o Escalonador de Processos e o Escalonador de CPU.




-x-
06 Threads
Sistemas Operacionais Lucilia Ribeiro
46

Threads


O que sabemos uma gota, o que ignoramos um oceano. (Isaac Newton)

6.1 INTRODUO
O conceito de thread surgiu em meados de 1980, com o desenvolvimento do Sistema
Operacional Mach na Universidade de Carnegie Mellon.
A partir do conceito de mltiplos threads (multithread) possvel projetar e imple-
mentar aplicaes concorrentes de forma eficiente, pois um processo pode ter partes
diferentes do seu cdigo sendo executadas em paralelo.
Atualmente, o conceito de multithread pode ser encontrado em diversos Sistemas
Operacionais, como no Sun Solaris e Windows 2000 e posteriores. A utilizao comercial
de Sistemas Operacionais multithread crescente em funo do aumento de popularida-
de dos sistemas com mltiplos processadores, do modelo cliente-servidor e dos sistemas
distribudos.
6.2 THREADS
Threads so fluxos de execuo que rodam dentro de um processo. O que os threads
acrescentam ao modelo de processo permitir que mltiplas execues ocorram no
mesmo ambiente do processo com um grande grau de independncia uma da outra. Ter
mltiplos threads executando em paralelo em um processo anlogo a mltiplos proces-
sos executando em paralelo em um nico computador. No primeiro caso, os threads
compartilham um mesmo espao de endereamento, arquivos abertos e outros recursos.
No ltimo, processos compartilham um espao fsico de memria, discos, impressoras e
recursos semelhantes.
Exemplo de uso de thread: A maioria dos processadores de texto mostra o documen-
to em criao na tela formatado exatamente como ele aparecer em uma pgina impres-
sa. Suponha que o usurio esteja escrevendo um livro em um arquivo nico. Agora, ima-
gine o que acontece quando o usurio remove, de repente, uma sentena da pgina 1 de
um documento de 800 pginas. Depois de verificar a pgina alterada para se assegurar
se est correta ou no, o usurio quer fazer outra mudana na pgina 600 e digita um
comando dizendo para o processador de textos ir at aquela pgina (possivelmente bus-
cando por uma frase que aparea somente l). O processador de textos ento forado
a reformatar todo o contedo at a pgina 600 uma situao difcil, porque ele no
sabe qual ser a primeira linha da pgina 600 enquanto no tiver processador todas as
pginas anteriores. Haver uma demora substancial antes que a pgina 600 possa ser
mostrada, deixando o usurio descontente.
Threads nesse caso, podem ajudar. Suponha que o processador de textos seja escrito
como um programa de dois threads. Um interage com o usurio e o outro faz a reforma-
tao em segundo plano. Logo que uma sentena removida da pgina 1, o thread inte-
rativo diz ao thread de reformatao para reformatar todo o livro. Enquanto isso, o thre-
ad interativo continua atendendo o teclado, o mouse e os comandos simples, como rolar
a pgina 1, enquanto o outro thread est processando a todo vapor em segundo plano.
Enquanto estamos nesse exemplo, por que no adicionar um terceiro thread? Muitos
processadores de texto so capacitados para salvar automaticamente todo o arquivo a
cada intervalo de tempo em minutos a fim de proteger o usurio contra a perda do tra-
balho de um dia, caso ocorra uma falha no programa ou no sistema ou mesmo uma que-
da de energia. O terceiro thread pode fazer os backups em disco sem interferir nos ou-
tros dois.
Se o programa tivesse apenas um thread e se um backup de disco iniciasse, os co-
mandos do teclado e do mouse seriam ignorados enquanto o backup no terminasse. O
usurio perceberia isso como uma queda de desempenho. Por outro lado, os eventos do
6
06 Threads
Sistemas Operacionais Lucilia Ribeiro
47
teclado e do mouse poderiam interromper o backup em disco, permitindo um bom de-
sempenho, mas levando a um complexo modelo de programao orientado interrup-
o. Com trs threads, o modelo de programao fica muito mais simples. O primeiro
thread apenas interage com o usurio. O segundo reformata o documento quando pedi-
do. O terceiro escreve periodicamente o contedo da RAM no disco.
Deve estar claro que trs processos separados no funcionariam no exemplo dado,
pois todos os trs threads precisam operar sobre o documento. Em vez de trs proces-
sos, so trs threads que compartilham uma memria comum e desse modo tm todo o
acesso ao documento que est sendo editado.
6.3 AMBIENTE MONOTHREAD
Um programa uma seqncia de instrues, composta por desvios, repeties e
chamadas a procedimentos e funes. Em um ambiente monothread, um processo
suporta apenas um programa no seu espao de endereamento. Neste ambiente, aplica-
es concorrentes so implementadas apenas com o uso de mltiplos processos inde-
pendentes ou subprocessos.
A utilizao de processos independentes e subprocessos permite dividir uma aplicao
em partes que podem trabalhar de forma concorrente. Um exemplo do uso de concorrn-
cia pode ser encontrado nas aplicaes com interface grfica, como em um software de
gerenciamento de e-mail. Neste ambiente, um usurio pode estar lendo suas mensagens
antigas, ao mesmo tempo em que pode estar enviando e-mails e recebendo novas men-
sagens. Como uso de mltiplos processos, cada funcionalidade do software implicaria a
criao de um novo processo para atend-la, aumentando o desempenho da aplicao.
Existem dois problemas neste tipo de implementao: 1) o alto consumo de diversos
recursos do sistema. Sempre que um novo processo criado, o sistema deve alocar re-
cursos para cada processo, consumindo tempo de processador neste trabalho e 2) com-
partilhamento do espao de endereamento. Como cada processo possui seu prprio es-
pao de endereamento, a comunicao entre processos torna-se lenta e difcil. Alm
disto, o compartilhamento de recursos comuns aos processos concorrentes, como mem-
ria e arquivos abertos, no simples.
So exemplos o MS-DOS e as primeiras verses do Windows.

6.4 AMBIENTE MULTITHREAD
Neste caso, no existe a idia de programas associados a processos, mas a threads.
O processo, neste ambiente, tem pelo menos um thread de execuo, mas pode compar-
tilhar o seu espao de endereamento com inmeros outros threads.
De forma simplificada, um thread pode ser definido como uma sub-rotina de um pro-
grama que pode ser executada de forma assncrona, ou seja, executada paralelamente
ao programa chamador. O programador deve especificar os threads, associando-os s
sub-rotinas assncronas. Desta forma, um ambiente multithread possibilita a execuo
concorrente de sub-rotinas dentro de um mesmo processo.
06 Threads
Sistemas Operacionais Lucilia Ribeiro
48

Na figura, existe um programa principal que realiza a chamada de duas sub-rotinas
(Sub1 e Sub2). Inicialmente, o processo criado apenas com o Thread1 para a execuo
do programa principal. Quando o programa principal chama as sub-rotinas Sub1 e Sub2,
so criados os Thread2 e Thread3, respectivamente, e executados independentemente
do programa principal. Neste processo, os trs threads so executados concorrentemen-
te.
No ambiente multithread, cada processo pode responder a vrias
solicitaes concorrentemente ou mesmo simultaneamente, caso haja
mais de um processador. A grande vantagem no uso de threads a
possibilidade de minimizar a alocao de recursos do sistema, alm de
diminuir o overhead na criao, troca e eliminao de processos.
Dentro de um mesmo processo, threads compartilham o mesmo
contexto de software e espao de endereamento com os demais
threads, porm cada um possui seu contexto de hardware individual.
Threads so implementados internamente atravs de uma estrutura
de dados denominada Bloco de controle do thread (TCB Thread
Control Block). O TCB armazena, alm do contexto de hardware, mais
algumas informaes relacionadas exclusivamente ao thread, como
prioridade, estado de execuo e bits de estado.
Como threads de um mesmo processo compartilham o mesmo es-
pao de endereamento, no existe qualquer proteo no acesso
memria, permitindo que um thread possa alterar facilmente dados de
outros. Para que threads trabalhem de forma cooperativa, funda-
mental que a aplicao implemente mecanismos de comunicao e
sincronizao entre threads, a fim de garantir o acesso seguro aos
dados compartilhados na memria.
A utilizao do processador, dos discos e de outros perifricos po-
de ser feita de forma concorrente pelos diversos threads, significando
melhor utilizao dos recursos computacionais disponveis. Em algu-
06 Threads
Sistemas Operacionais Lucilia Ribeiro
49
mas aplicaes, a utilizao de threads pode melhorar o desempenho da aplicao ape-
nas executando tarefas em background enquanto operaes de E/S esto sendo proces-
sadas, conforme mostra a figura. Aplicaes como editores de texto, planilhas, aplicati-
vos grficos e processadores de imagens so especialmente beneficiados quando desen-
volvidos com base em threads.
Em ambientes cliente-servidor, threads so essenciais para solicitaes de servios
remotos. Em um ambiente monothread, se uma aplicao solicita um servio remoto, ela
pode ficar esperando indefinidamente, enquanto aguarda pelo resultado. Em um ambien-
te multithread, um thread pode solicitar o servio remoto, enquanto a aplicao pode
continuar realizando outras atividades. J para o processo que atende a solicitao, ml-
tiplos threads permitem que diversos pedidos sejam atendidos simultaneamente.

















6.5 ARQUITETURA E IMPLEMENTAO
O conjunto de rotinas disponveis para que uma aplicao utilize as facilidades dos
threads chamado de pacote de threads.
Threads podem ser oferecidos por uma biblioteca de rotinas fora do ncleo do Siste-
ma Operacional (modo usurio), pelo prprio ncleo do sistema (modo kernel) ou por
uma combinao de ambos (modo hbrido).
6.5.1 THREADS EM MODO USURIO
Threads em modo usurio (TMU) so implementados pela aplicao e no pelo Siste-
ma Operacional. Para isso, deve existir uma biblioteca de rotinas que possibilite aplica-
o realizar tarefas como criao/eliminao de threads, troca de mensagens entre thre-
ads e uma poltica de escalonamento. Neste modo, o Sistema Operacional no sabe da
existncia de mltiplos threads, sendo responsabilidade exclusiva da aplicao gerenciar
e sincronizar os diversos threads existentes.
A vantagem deste modelo a possibilidade de implementar aplicaes multithreads
mesmo em Sistemas Operacionais que no suportam threads. Utilizando a biblioteca,
mltiplos threads podem ser criados, compartilhando o mesmo espao de endereamento
do processo, alm de outros recursos. TMU so rpidos e eficientes por dispensarem a-
cesso ao kernel do Sistema Operacional, evitando assim a mudana de modo de acesso
(usurio-kernel-usurio).
06 Threads
Sistemas Operacionais Lucilia Ribeiro
50
TMU possuem uma grande limitao, pois o Sistema Operacional gerencia cada pro-
cesso como se existisse apenas um nico thread. No momento em que um thread chama
uma rotina do sistema que o coloca em estado bloqueado (rotina bloqueante), todo o
processo colocado no estado de espera, mesmo havendo outros threads prontos para
execuo. Para contornar esta limitao, a biblioteca tem que possuir rotinas que substi-
tuam as rotinas bloqueantes por outras que no possam causar o bloqueio de um thread
(rotinas no-bloqueantes). Todo este controle transparente para o usurio e para o
Sistema Operacional.
Talvez um dos maiores problemas
na implementao de TMU seja o tra-
tamento individual de sinais. Como o
sistema reconhece apenas processos e
no threads, os sinais enviados para um
processo devem ser reconhecidos e en-
caminhados a cada thread para o tra-
tamento. No caso do recebimento de
interrupes de clock, fundamental para
a implementao do tempo comparti-
lhado, esta limitao crtica. Neste
caso, os sinais de temporizao devem
ser interceptados, para que se possa
interromper o thread em execuo e
realizar a troca de contexto.
Em relao ao escalonamento em ambientes multiprocessados, no possvel que
mltiplos threads de um processo possam ser executados em diferentes CPUs simultane-
amente, pois o sistema seleciona apenas processos para execuo e no threads. Esta
restrio limita drasticamente o grau de paralelismo da aplicao, j que os threads de
um mesmo processo s podem ser executados em um processador de cada vez.
6.5.2 THREADS EM MODO KERNEL
Threads em modo kernel (TMK) so
implementados diretamente pelo ncleo
do Sistema Operacional, atravs de
chamadas a rotinas do sistema que ofe-
recem todas as funes de gerencia-
mento e sincronizao. O Sistema Ope-
racional sabe da existncia de cada t-
hread e pode escalon-los individual-
mente. No caso de mltiplos processa-
dores, os threads de um mesmo proces-
so podem ser executados simultanea-
mente.
O grande problema para pacotes em modo kernel o seu baixo desempenho. En-
quanto nos pacotes em modo usurio todo tratamento feito sem a ajuda do Sistema
Operacional, ou seja, sem a mudana do modo de acesso (usurio-kernel-usurio), paco-
tes em modo kernel utilizam chamadas a rotinas do sistema e, conseqentemente, vrias
mudanas no modo de acesso.
6.5.3 THREADS EM MODO HBRIDO
Combina as vantagens do TMU e TMK. Um processo pode ter vrios TMK e, por sua
vez, um TMK pode ter vrios TMU. O ncleo do sistema reconhece os TMK e pode escalo-
n-los individualmente. Um TMU pode ser executado em um TMK, em um determinado
momento, e no instante seguinte ser executado em outro.

06 Threads
Sistemas Operacionais Lucilia Ribeiro
51
O programador desenvolve a aplicao
em termos de TMU e especifica quantos TMK
esto associados ao processo. Os TMU so
mapeados em TMK enquanto o processo est
sendo executado. O programador pode utili-
zar apenas TMK, TMU ou uma combinao de
ambos.
O modo hbrido, apesar da flexibilidade,
apresenta problemas herdados de ambas as
implementaes. Por exemplo, quando um
TMK realiza uma chamada bloqueante, todos
os TMU so colocados no estado de espera.
TMU que desejam utilizar vrios processado-
res devem utilizar diferentes TMK, o que in-
fluenciar no desempenho.
6.6 MODELOS DE PROGRAMAO
O desenvolvimento de aplicaes multithread no simples, pois exige que a comu-
nicao e o compartilhamento de recursos entre os diversos threads seja feito de forma
sincronizada para evitar problemas de inconsistncias e travamentos. Alm das dificulda-
des naturais no desenvolvimento de aplicaes concorrentes, o procedimento de depura-
o bastante complexo.
Para obter os benefcios do uso de threads, uma aplicao deve permitir que partes
diferentes do seu cdigo sejam executadas em paralelo de forma independente. Se um
aplicativo realiza vrias operaes de E/S e trata eventos assncronos, a programao
multithread aumenta seu desempenho at mesmo em ambientes com um nico proces-
sador. Sistemas gerenciados de banco de dados (SGBDs), servidores de arquivos ou im-
presso so exemplos onde o uso de mltiplos threads proporciona grandes vantagens e
benefcios.

6.7 EXERCCIOS

73) Como uma aplicao pode implementar concorrncia em ambiente monothread?

74) Quais os problemas de aplicaes concorrentes desenvolvidas em ambientes mo-
nothreads?

75) O que um ambiente multithread e quais as vantagens de sua utilizao?

76) Quais as vantagens e desvantagens do compartilhamento do espao de endere-
amento entre threads de um mesmo processo?

77) Compare os pacotes de threads em modo usurio e modo kernel.

78) D exemplos do uso de threads no desenvolvimento de aplicativos como editores
de texto e planilhas eletrnicas.

79) Como o uso de threads pode melhorar o desempenho de aplicaes paralelas em
ambientes com mltiplos processadores?

80) Quais os benefcios do uso de threads em ambientes cliente-servidor?

81) Relacione processos e threads.

-x-
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
52

Sincronizao e Comunicao entre Processos


"... no a posse da fora que produz a vitria, mas a sua apario.
Um comandante habilidoso manipula no exrcitos, mas percepes. (Steven Pressfield)

7.1 INTRODUO
Em um sistema multiprogramvel com um nico processador, os processos alternam
sua execuo segundo critrios de escalonamento estabelecidos pelo Sistema Operacio-
nal. Mesmo no havendo neste tipo de sistema um paralelismo na execuo de instru-
es, uma aplicao concorrente pode obter melhoras no seu desempenho. Em sistemas
com mltiplos processadores, a possibilidade no paralelismo na execuo de instrues
somente estende as vantagens que a programao concorrente proporciona.
natural que processos de uma aplicao concorrente compartilhem recursos do sis-
tema, como arquivos, registros, dispositivos de E/S e reas de memria. O compartilha-
mento de recursos entre processos pode ocasionar situaes indesejveis, capazes at
de comprometer a execuo das aplicaes. Para evitar esse tipo de problema os proces-
sos concorrentes devem ter suas execues sincronizadas, a partir de mecanismos ofere-
cidos pelo Sistema Operacional, com o objetivo de garantir o processamento correto dos
programas.
7.2 SINCRONIZAO

O Problema de Espao na Geladeira
Hora Pessoa A Pessoa B
6:00 Olha a geladeira: sem leite -
6:05 Sai para a padaria -
6:10 Chega na padaria Olha a geladeira: sem leite
6:15 Sai da padaria Sai para a padaria
6:20 Chega em casa: guarda o leite Chega na padaria
6:25 - Sai da padaria
6:30 - Chega em casa: Ah! No!
Primeira tentativa de resolver o Problema de Espao na Geladeira:
Processos A e B
if (SemLeite) {
if (SemAviso) {
Deixa Aviso;
Compra Leite;
Remove Aviso;
}
}
E se A for atropelada quando for comprar o leite?
Segunda tentativa de resolver o Problema de Espao na Geladeira: mudar o significado
do aviso. A vai comprar se no tiver aviso; B vai comprar se tiver aviso.


7
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
53
Processo A Processo B
if (SemAviso) {
if (SemLeite) {
Compra Leite;
}
Deixa Aviso;
}
if (Aviso) {
if (SemLeite) {
Compra Leite;
}
Remove Aviso;
}
somente A deixa um aviso, e somente se j no existe um aviso
somente B remove um aviso, e somente se houver um aviso
portanto, ou existe um aviso, ou nenhum
se houver um aviso, B compra leite, se no houver aviso, A compra leite
portanto, apenas uma pessoa (processo) vai comprar leite

Agora suponha que B saiu de frias. A vai comprar leite uma vez e no poder comprar
mais at que B retorne. Portanto essa "soluo" no boa; em particular ela pode levar
a "inanio".
Terceira tentativa de resolver o Problema de Espao na Geladeira: utilizar dois avisos
diferentes.
Processo A Processo B
Deixa AvisoA;
if (SemAvisoB) {
if (SemLeite) {
Compra Leite;
}
}
Remove AvisoA;
Deixa AvisoB;
if (SemAvisoA) {
if (SemLeite) {
Compra Leite;
}
}
Remove AvisoB;
A soluo est quase correta. S precisamos de uma maneira de decidir quem vai com-
prar o leite quando ambos deixarem avisos.
Quarta tentativa de resolver o Problema de Espao na Geladeira: em caso de empate,
A vai comprar o leite.
Processo A Processo B
Deixa AvisoA;
if (SemAvisoB) {
if (SemLeite) {
Compra Leite;
}
} else {
while (AvisoB) {
EsperaAToa;
/* pode sentar */
}
if (SemLeite) {
CompraLeite;
}
}
Remove AvisoA;
Deixa AvisoB;
if (SemAvisoA) {
if (SemLeite) {
Compra Leite;
}
}
Remove AvisoB;



Esta soluo funciona, mas no muito elegante. Ela ainda tem os seguintes problemas:
A pode ter que esperar enquanto B est na padaria
Enquanto A est esperando ele est consumindo recursos.

Alm disso, seria muito difcil estender esta soluo para muitos processos com diferen-
tes pontos de sincronizao.

07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
54
7.3 ESPECIFICAO DE CONCORRNCIA EM PROGRAMAS
Existem vrias notaes utilizadas para especificar a concorrncia em programas, ou
seja, as partes de um programa que devem ser executadas concorrentemente. As tcni-
cas mais recentes tentam expressar a concorrncia no cdigo dos programas de uma
forma mais clara e estruturada.
A primeira notao para a especificao da concorrncia em um programa foram os
comandos FORK e JOIN, introduzidos por Conway (1963) e Dennis e Van Horn (1966). O
exemplo a seguir apresenta a implementao da concorrncia em um programa com uma
sintaxe simplificada.
O programa A comea a ser executado e, ao encontrar o comando FORK, faz com que
seja criado um outro processo para a execuo do programa B, concorrentemente ao
programa A. O comando JOIN permite que o programa A sincronize-se com B, ou seja,
quando o programa A encontrar o comando JOIN, s continuar a ser processado aps o
trmino da execuo do programa B. Os comandos FORK e JOIN so bastante poderosos
e prticos, sendo utilizados de forma semelhante no Sistema Operacional Unix.

PROGRAM A; PROGRAM B;
. .
. .
FORK B; .
. .
. .
JOIN B; END.
.
.
END.
Uma das implementaes mais claras e simples de expressar concorrncia em um
programa a utilizao dos comandos PARBEGIN e PAREND (Dijkstra, 1965). O comando
PARBEGIN especifica que a seqncia de comandos seja executada concorrentemente em
uma ordem imprevisvel, atravs da criao de um processo (P1, P2, Pn) para cada co-
mando (C1, C2, Cn). O comando PAREND define um ponto de sincronizao, onde o pro-
cessamento s continuar quando todos os processos ou threads criados j tiverem ter-
minado suas execues.
Para exemplificar, o programa Expressao realiza o clculo do valor da expresso a-
ritmtica. Os comandos de atribuio simples situados entre PARBEGIN e PAREND so
executados concorrentemente. O clculo final de X s poder ser realizado quando todas
as variveis dentro da estrutura tiverem sido calculadas.

X := SQRT (1024) + (35.4 * 0.23) - (302 / 7)

PROGRAM Expressao;
VAR X, Temp1, Temp2, Temp3 : REAL;
BEGIN
PARBEGIN
Temp1 := SQRT (1024);
Temp2 := 35.4 * 0.23;
Temp3 := 302 / 7;
PAREND;
X := Temp1 + Temp2 - Temp3;
WRITELN ('x = ', X);
END.
7.4 PROBLEMAS DE COMPARTILHAMENTO DE RECURSOS
Para a compreenso de como a sincronizao entre processos concorrentes funda-
mental para a confiabilidade dos sistemas multiprogramveis, so apresentados alguns
problemas de compartilhamento de recursos. A primeira situao envolve o comparti-
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
55
lhamento de um arquivo em disco; a segunda apresenta uma varivel na memria prin-
cipal sendo compartilhada por dois processos.
O primeiro problema analisado a partir do programa Conta_Corrente, que atualiza o
saldo bancrio de um cliente aps um lanamento de dbito ou crdito no arquivo de
contas corrente Arq_Contas. Neste arquivo so armazenados os saldos de todos os cor-
rentistas do banco. O programa l o registro do cliente no arquivo (Reg_Cliente), l o
valor a ser depositado ou retirado (Valor_Dep_Ret) e, em seguida, atualiza o saldo no
arquivo de contas.
Considerando processos concorrentes pertencentes a dois funcionrios do banco que
atualizam o saldo de um mesmo cliente simultaneamente, a situao de compartilha-
mento do recurso pode ser analisada. O processo do primeiro funcionrio (Caixa 1) l o
registro do cliente e soma ao campo Saldo o valor do lanamento de dbito. Antes de
gravar o novo saldo no arquivo, o processo do segundo funcionrio (Caixa 2) l o registro
do mesmo cliente, que est sendo atualizado, para realizar outro lanamento, desta vez
de crdito. Independentemente de qual dos processos atualize primeiro o saldo no arqui-
vo, o dado gravado estar inconsistente.

PROGRAM Conta_Corrente;
.
.
READ (Arq_Contas, Reg_Cliente);
READLN (Valor_Dep_Ret);
Reg_Cliente.Saldo :=
Reg_Cliente.Saldo + Valor_Dep_Ret;
WRITE (Arq_Contas, Reg_Cliente);
.
.
END.

Caixa Comando Saldo Arquivo Valor dep/ret Saldo Memria
1 READ 1000 * 1000
1 READLN 1000 -200 1000
1 := 1000 -200 800
2 READ 1000 * 1000
2 READLN 1000 +300 1000
2 := 1000 +300 1300
1 WRITE 800 -200 800
2 WRITE 1300 +300 1300

Um outro exemplo, seria o spool de impresso. Quando um processo deseja imprimir
um arquivo, ele entra com o nome do arquivo em um diretrio especial de spool. Outro
processo, o impressor, verifica periodicamente este diretrio, para ver se h arquivos a
serem impressos. Havendo, eles so impressos e seus nomes so retirados do diretrio.
Imagine que nosso diretrio tenha as entradas de 0 a infinito, onde cada uma delas
armazena um arquivo. Duas variveis compartilhadas: out aponta para o nome do arqui-
vo a ser impresso e in para a prxima entrada livre do diretrio.
Mais ou menos simultaneamente, os processos A e B decidem colocar um arquivo na
fila de impresso. S que ocorre o seguinte: A l a varivel entrada e armazena o valor
7. Depois disso ocorre uma interrupo de tempo, onde o processo A deve ceder o pro-
cessador para o processo B. Este l o valor de entrada 7, mesmo valor que A obteve
quando fez a leitura. B guarda o nome do seu arquivo na entrada 7 do diretrio, atuali-
zando entrada para 8, continuando seu processamento
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
56
Em algum momento seguin-
te, A vai reiniciar seu processa-
mento no exato ponto onde pa-
rou. Ao examinar o valor da va-
rivel local onde guardou a en-
trada livre no spool de impres-
so, encontrar 7 e escrever o
nome do arquivo na entrada 7
do diretrio, apagando o nome
do arquivo escrito por B e ainda
no impresso. Atualiza a vari-
vel para 8 e continua o proces-
samento. Acontecer que o pro-
cesso B nunca ter seu arquivo
impresso.
Analisando os dois exemplos
apresentados, possvel concluir que em qualquer situao, onde dois ou mais processos
compartilham um mesmo recurso, devem existir mecanismos de controle para evitar es-
ses tipos de problemas.
Situaes como esta, onde dois ou mais processos esto acessando dados comparti-
lhados, e o resultado final do processamento depende de quem roda quando, so cha-
madas de condies de corrida.
7.5 EXCLUSO MTUA
Como evitar a ocorrncia de condies de corrida? A questo chave para evitar qual-
quer problema em compartilhamento de recursos encontrar formas de proibir que mais
de um processo acesse o dado compartilhado ao mesmo tempo.
Ou seja: implementando a excluso mtua, uma forma de se ter certeza de que se
um processo estiver usando uma varivel ou arquivo compartilhados, os demais sero
impedidos de fazer a mesma coisa.
As partes do programa, cujo processamento pode levar ocorrncia de condies de
corrida, so denominadas regies crticas. Evitando que dois processos estejam pro-
cessando suas sees crticas ao mesmo tempo, evitaria a ocorrncia de condies de
corrida.
Embora essa soluo impea as condies de corrida, isso no suficiente para que
processos paralelos que usam dados compartilhados executem corretamente. Precisamos
evitar tambm outras situaes indesejadas:
1. Nenhum processo que esteja fora de sua regio crtica pode bloquear a execuo
de outro processo
2. Nenhum processo pode esperar indefinidamente para entrar em sua regio crtica
(starvation ou espera indefinida)
Diversas solues foram propostas para garantir a excluso mtua de processos con-
correntes. A seguir, so apresentadas algumas solues de hardware e de software com
discusses sobre benefcios e problemas de cada proposta.
7.6 SOLUES DE HARDWARE
A excluso mtua pode ser implementada atravs de mecanismos de hardware:
7.6.1 DESABILITAO DAS INTERRUPES
Nesta soluo, ao adentrar sua regio crtica, o processo desabilita as interrupes da
mquina. Isto garante que outro processo no ser escalonado para rodar. Imediatamen-
te aps deixar a sua regio crtica, o processo habilita novamente as interrupes. Esta
uma soluo funcional, porm ela compromete o nvel de segurana do sistema compu-
tacional, pois se um processo desabilitar as interrupes e, por um motivo qualquer, no
habilit-las novamente, todo o sistema estar comprometido.
abc
prog. c
prog. n
out = 4
in = 7
Diretrio
de Spool
Processo A
Processo B
4
5
6
7
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
57
Em sistemas com mltiplos processadores, essa soluo torna-se ineficiente devido
ao tempo de propagao quando um processador sinaliza aos demais que as interrupes
devem ser habilitadas ou desabilitadas.

BEGIN
.
Desabilita_Interrupcoes;
Regiao_Critica;
Habilita_Interrupcoes;
.
END.
7.6.2 INSTRUO TEST-AND-SET
Muitos processadores possuem uma instruo de mquina especial que permite ler
uma varivel, armazenar seu contedo em uma outra rea e atribuir um novo valor
mesma varivel. Essa instruo especial chamada test-and-set e tem como caracte-
rstica ser executada sem interrupo, ou seja, trata-se de uma instruo atmica ou
indivisvel. Dessa forma, garantido que dois processos no manipulem uma varivel
compartilhada ao mesmo tempo, possibilitando a implementao da excluso mtua.
A instruo test-and-set possui o formato a seguir, e quando executada o valor lgico
da varivel Y copiado para X, sendo atribudo varivel Y o valor lgico verdadeiro:

Test-and-Set (X,Y);
Para coordenar o acesso concorrente a um recurso, a instruo test-and-set utiliza
uma varivel lgica global, que no programa Test-And-Set denominada Bloqueio.
Quando a varivel Bloqueio for falsa, qualquer processo poder alterar seu valor para
verdadeiro atravs da instruo test-and-set e, assim, acessar o recurso de forma exclu-
siva. Ao terminar o acesso, o processo deve simplesmente retornar o valor da varivel
para falso, liberando o acesso ao recurso.

PROGRAM Test_And_Set;
VAR Bloqueio : BOOLEAN;
BEGIN
Bloqueio := False;
PARBEGIN
Processo_A;
Processo_B;
PAREND;
END.

PROCEDURE Processo_A;
VAR Pode_A : BOOLEAN;
BEGIN
REPEAT
Pode_A := True;
WHILE (Pode_A) DO
Test_and_Set(Pode_A, Bloqueio);
Regiao_Critica_A;
Bloqueio := False;
UNTIL False;
END;
PROCEDURE Processo_B;
VAR Pode_B : BOOLEAN;
BEGIN
REPEAT
Pode_B := True;
WHILE (Pode_B) DO
Test_and_Set(Pode_B, Bloqueio);
Regiao_Critica_B;
Bloqueio := False;
UNTIL False;
END;

O uso de uma instruo especial de mquina oferece algumas vantagens, como a
simplicidade de implementao da excluso mtua em mltiplas regies crticas e o uso
da soluo em arquiteturas com mltiplos processadores. A principal desvantagem a
possibilidade do starvation, pois a seleo do processo para acesso ao recurso arbitr-
ria.

07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
58
7.7 SOLUES DE SOFTWARE
Diversos algoritmos foram propostos na tentativa de implementar a excluso mtua
atravs de solues de software. As primeiras solues tratavam apenas da excluso
mtua para dois processos e, inicialmente, apresentavam alguns problemas. Veremos os
algoritmos de forma evolutiva at alcanar uma soluo definitiva para a excluso mtua
entre N processos.
7.7.1 PRIMEIRO ALGORITMO: ESTRITA ALTERNNCIA
Este mecanismo utiliza uma varivel de bloqueio, indicando qual processo pode ter
acesso regio crtica. Inicialmente, a varivel global Vez igual a A, indicando que o
Processo A pode executar sua regio crtica. O Processo B, por sua vez, fica esperando
enquanto Vez for igual a A. O Processo B s executar sua regio crtica quando o Pro-
cesso A atribuir o valor B varivel de bloqueio Vez. Desta forma, estar garantida a
excluso mtua entre os dois processos.

PROGRAM Algoritmo1;
VAR Vez : CHAR;
BEGIN
Vez := A;
PARBEGIN
Processo_A;
Processo_B;
PAREND;
END.

PROCEDURE Processo_A;
BEGIN
REPEAT
WHILE (Vez = B) DO;
Regiao_Critica_A;
Vez := B;
Processamento_A;
UNTIL False;
END;
PROCEDURE Processo_B;
BEGIN
REPEAT
WHILE (Vez = A) DO;
Regiao_Critica_B;
Vez := A;
Processamento_B;
UNTIL False;
END;

Este algoritmo apresenta duas limitaes: 1) a primeira surge do prprio mecanismo
de controle. O acesso ao recurso compartilhado s pode ser realizado por dois processos
e sempre de maneira alternada. Caso o Processo A permanea muito tempo na rotina
Processamento_A, possvel que o Processo B queira executar sua regio crtica e no
consiga, mesmo que o Processo A no esteja mais utilizando o recurso. Como o Processo
B pode executar seu loop mais rapidamente que o Processo A, a possibilidade de execu-
tar sua regio crtica fica limitada pela velocidade de processamento do Processo A. 2) no
caso da ocorrncia de algum problema com um dos processos, de forma que a varivel
de bloqueio no seja alterada, o outro processo permanecer indefinidamente bloqueado.
7.7.2 SEGUNDO ALGORITMO:
O problema principal do primeiro algoritmo que ambos os processos trabalham com
uma mesma varivel global, cujo contedo indica qual processo tem o direito de entrar
na regio crtica. Para evitar esta situao, o segundo algoritmo introduz uma varivel
para cada processo (CA e CB) que indica se o processo est ou no em sua regio crtica.
Neste caso, toda vez que um processo desejar entrar em sua regio crtica, a varivel do
outro processo testada para verificar se o recurso est livre para uso.

PROGRAM Algoritmo2;
VAR CA, CB : BOOLEAN;
BEGIN
CA := false;
CB := false;
PARBEGIN
Processo_A;
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
59
Processo_B;
PAREND;
END.

PROCEDURE Processo_A;
BEGIN
REPEAT
WHILE (CB) DO;
CA := true;
Regiao_Critica_A;
CA := false;
Processamento_A;
UNTIL False;
END;
PROCEDURE Processo_B;
BEGIN
REPEAT
WHILE (CA) DO;
CB := true;
Regiao_Critica_B;
CB := false;
Processamento_B;
UNTIL False;
END;

Neste segundo algoritmo, o uso do recurso no realizado necessariamente alterna-
do. Caso ocorra algum problema com um dos processos fora da regio crtica, o outro
processo no ficar bloqueado, o que, porm, no resolve por completo o problema. Ca-
so um processo tenha um problema dentro da sua regio crtica ou antes de alterar a
varivel, o outro processo permanecer indefinidamente bloqueado. Mais grave que o
problema do bloqueio que esta soluo, na prtica, pior do que o primeiro algoritmo
apresentado, pois nem sempre a excluso mtua garantida. Observe abaixo:

Processo_A Processo_B CA CB
WHILE (CB) WHILE (CA) false false
CA := true CB := true true true
Regiao_Critica_A Regiao_Critica_B true true
7.7.3 TERCEIRO ALGORITMO:
Este algoritmo tenta solucionar o problema apresentado no segundo, colocando a ins-
truo da atribuio das variveis CA e CB antes do loop de teste.

PROGRAM Algoritmo3;
VAR CA, CB : BOOLEAN;
BEGIN
PARBEGIN
Processo_A;
Processo_B;
PAREND;
END.

PROCEDURE Processo_A;
BEGIN
REPEAT
CA := true;
WHILE (CB) DO;
CA := true;
Regiao_Critica_A;
CA := false;
Processamento_A;
UNTIL False;
END;
PROCEDURE Processo_B;
BEGIN
REPEAT
CB := true;
WHILE (CA) DO;
CB := true;
Regiao_Critica_B;
CB := false;
Processamento_B;
UNTIL False;
END;

Esta alterao resulta na garantia da excluso mtua, porm introduz um novo pro-
blema, que a possibilidade de bloqueio indefinido de ambos os processos. Caso os dois
processos alterem as variveis CA e CB antes da execuo da instruo WHILE, ambos os
processos no podero entrar em suas regies crticas, como se o recurso j estivesse
alocado.
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
60
7.7.4 QUARTO ALGORITMO:
No terceiro algoritmo, cada processo altera o estado da sua varivel indicando que ir
entrar na regio crtica sem conhecer o estado do outro processo, o que acaba resultando
no problema apresentado. O quarto algoritmo apresenta uma implementao onde o
processo, da mesma forma, altera o estado da varivel antes de entrar na sua regio
crtica, porm existe a possibilidade de esta alterao ser revertida.

PROGRAM Algoritmo4;
VAR CA, CB : BOOLEAN;
BEGIN
CA := false;
CB := false;
PARBEGIN
Processo_A;
Processo_B;
PAREND;
END.

PROCEDURE Processo_A;
BEGIN
REPEAT
CA := true;
WHILE (CB) DO
BEGIN
CA := false;
{pequeno intervalo de tempo}
CA := true;
END
Regiao_Critica_A;
CA := false;
UNTIL False;
END;
PROCEDURE Processo_B;
BEGIN
REPEAT
CB := true;
WHILE (CA) DO
BEGIN
CB := false;
{pequeno intervalo de tempo}
CB := true;
END
Regiao_Critica_B;
CB := false;
UNTIL False;
END;

Apesar de esta soluo garantir a excluso mtua e no gerar o bloqueio simultneo
dos processos, uma nova situao indesejada pode ocorrer eventualmente. No caso de
os tempos aleatrios serem prximos e a concorrncia gerar uma situao onde os dois
processos alterem as variveis CA e CB para falso antes do trmino do loop, nenhum dos
dois processos conseguir executar sua regio crtica. Mesmo com esta situao no sen-
do permanente, pode gerar alguns problemas.
7.7.5 ALGORITMO DE PETERSON
A primeira soluo de software que garantiu a excluso mtua entre dois processos
sem a incorrncia de outros problemas foi proposta pelo matemtico holands T. Dekker
com base no primeiro e quarto algoritmos. Esse algoritmo possui uma lgica bastante
complexa. Posteriormente, G. L. Peterson props outra soluo mais simples.
Este algoritmo apresenta uma soluo para dois processos que pode ser facilmente
generalizada para o caso de N processos. Similar ao terceiro algoritmo, esta soluo,
alm das variveis de condio (CA e CB) que indicam o desejo de cada processo entrar
em sua regio crtica, introduz a varivel Vez para resolver os conflitos gerados pela con-
corrncia.
Antes de acessar a regio crtica, o processo sinaliza esse desejo atravs da varivel
de condio, porm o processo cede o uso do recurso ao outro processo, indicado pela
varivel Vez. Em seguida, o processo executa o comando WHILE como protocolo de en-
trada da regio crtica. Neste caso, alm da garantia da excluso mtua, o bloqueio inde-
finido de um dos processos no loop nunca ocorrer, j que a varivel Vez sempre permi-
tir a continuidade da execuo de um dos processos.

PROGRAM Algoritmo_Peterson;
VAR CA, CB : BOOLEAN;
Vez : CHAR;
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
61
BEGIN
CA := false;
CB := false;
PARBEGIN
Processo_A;
Processo_B;
PAREND;
END.

PROCEDURE Processo_A;
BEGIN
REPEAT
CA := true;
Vez := B;
WHILE (CB and Vez = B) DO;
Regiao_Critica_A;
CA := false;
Processamento_A;
UNTIL False;
END;
PROCEDURE Processo_B;
BEGIN
REPEAT
CB := true;
Vez := A;
WHILE (CA and Vez = A) DO;
Regiao_Critica_B;
CB := false;
Processamento_B;
UNTIL False;
END;

Apesar de todas solues at ento apresentadas implementarem a excluso mtua,
todas possuam uma deficincia conhecida como espera ocupada (busy waiting). Todas
as solues baseadas na espera ocupada possuem dois problemas em comum e eles so:
a) Perda de tempo de processamento: todas as solues utilizam-se de um lao
de espera ocupada para impedir que dois processos entrem ao mesmo tempo em suas
regies crticas e tais laos consomem, desnecessariamente, o tempo do processador;
b) Prioridade invertida: este problema ocorre quando existem dois processos exe-
cutando, um A de alta prioridade, e outro B de baixa prioridade e o Gerente de Pro-
cessos est programado para colocar para rodar qualquer processo de alta prioridade que
esteja no estado de pronto. Objetivando verificar tal problema, considera-se que o pro-
cesso A comea a rodar e solicita uma operao de entrada/sada e migra para o esta-
do de bloqueado. Nesse momento, escalonado para rodar o processo B, que logo en-
tra em sua regio crtica. Em seguida, a operao de entrada/sada solicitada por A
concluda e ele, ento, migra do estado de bloqueado para o de pronto e tenta adentrar
em sua regio crtica e fica preso no lao de espera ocupada, pois o processo B j se
encontra dentro de sua regio crtica correspondente. Diante disso, o processo B jamais
ser escalonado novamente para rodar, pois A est executando o seu lao de espera
ocupada e o Gerente de Processos no ir escalonar A que, por sua vez, no deixar a
sua regio crtica, caracterizando, dessa forma, uma situao de bloqueio conhecida co-
mo prioridade invertida.
7.8 PROBLEMA DO PRODUTOR-CONSUMIDOR ou SINCRONIZAO CONDICIONAL
Sincronizao Condicional uma situao onde o acesso ao recurso compartilhado
exige a sincronizao de processos vinculada a uma condio de acesso. Um recurso po-
de no se encontrar pronto para uso devido a uma condio especfica. Nesse caso, o
processo que deseja acess-la dever permanecer bloqueado at que o recurso fique
disponvel.
O problema do produtor-consumidor, ilustrado na figura abaixo, consiste em dois
processos que compartilham um buffer de tamanho fixo. Um dos processos, o produtor,
coloca informao no buffer, e o outro, o consumidor, as retira. Assim sendo, fcil per-
ceber a existncia de duas situaes que precisam ser tratadas. A primeira delas ocorre
quando o produtor deseja colocar informao no buffer e este se encontra cheio. A se-
gunda situao acontece quando o consumidor quer retirar uma informao do buffer
que est vazio.
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
62

Conforme j foi mencionado, tanto uma quanto outra situao necessita ser adequa-
damente tratada. Diante disso, tem-se que uma soluo para a primeira das situaes
(buffer cheio) fazer com que o processo produtor interrompa sua execuo enquanto
no existir ao menos uma posio vazia no buffer. Uma soluo para a segunda situao
(buffer vazio) manter o consumidor parado enquanto no houver pelo menos uma in-
formao no buffer.
O programa a seguir exemplifica o problema. O recurso compartilhado um buffer,
definido no algoritmo com o tamanho TamBuf e sendo controlado pela varivel Cont.
Sempre que a varivel Cont for igual a 0, significa que o buffer est vazio e o processo
Consumidor deve permanecer aguardando at que se grave um dado. Da mesma forma,
quando a varivel Cont for igual a TamBuf, significa que o buffer est cheio e o processo
Produtor deve aguardar a leitura de um novo dado. Nessa soluo, a tarefa de colocar e
retirar os dados do buffer realizada, respectivamente, pelos procedimentos Gra-
va_Buffer e Le_Buffer, executados de forma mutuamente exclusiva. No est sendo con-
siderada, neste algoritmo, a implementao da excluso mtua na varivel compartilha-
da Cont.

PROGRAM Produtor_Consumidor_1;
CONST TamBuf = (* Tamanho qualquer *);
TYPE Tipo_Dado = (* Tipo qualquer *);
VAR Buffer : ARRAY [1..TamBuf] OF Tipo_Dado;
Dado : Tipo_Dado;
Cont : 0..TamBuf;
BEGIN
Cont := 0;
PARBEGIN
Produtor;
Consumidor;
PAREND;
END.

PROCEDURE Produtor;
BEGIN
REPEAT
Produz_Dado (Dado);
WHILE (Cont = TamBuf) DO;
Grava_Buffer (Dado, Cont);
Cont++;
UNTIL False;
END;
PROCEDURE Consumidor;
BEGIN
REPEAT
WHILE (Cont = 0) DO;
Le_Buffer (Dado);
Consome_Dado (Dado, Cont);
Cont--;
UNTIL False;
END;

Apesar de o algoritmo apresentado resolver a questo da sincronizao condicional,
ou do buffer limitado, o problema da espera ocupada tambm se faz presente, sendo
somente solucionado pelos mecanismos de sincronizao semforos e monitores.

07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
63

7.9 SEMFOROS
Um semforo uma varivel inteira, no-negativa, que s pode ser manipulada por
duas instrues atmicas: DOWN e UP. A instruo UP incrementa uma unidade ao valor
do semforo, enquanto DOWN decrementa a varivel. Como, por definio, valores nega-
tivos no podem ser atribudos a um semforo, a instruo DOWN executada em um se-
mforo com valor 0, faz com que o processo entre no estado de espera. Em geral, essas
instrues so implementadas no processador, que deve garantir todas essas condies.
Podem ser classificados como binrios ou contadores. Os binrios, tambm chama-
dos de mutexes (mutual exclusion semaphores), s podem assumir os valores 0 e 1,
enquanto os contadores podem assumir qualquer valor inteiro positivo, alm do 0.
Semforos contadores so bastante teis quando aplicados em problemas de sincro-
nizao condicional onde existem processos concorrentes alocando recursos do mesmo
tipo (pool de recursos). O semforo inicializado com o nmero total de recursos do pool
e, sempre que um processo deseja alocar um recurso, executa um DOWN, subtraindo 1
do nmero de recursos disponveis. Da mesma forma, sempre que o processo libera um
recurso para o pool, executa um UP. Se o semforo contador ficar com o valor igual a 0,
isso significa que no existem mais recursos a serem utilizados, e o processo que solicita
um recurso permanece em estado de espera, at que outro processo libere algum recur-
so para o pool.
7.9.1 EXCLUSO MTUA UTILIZANDO SEMFOROS
A excluso mtua pode ser implementada atravs de um semforo binrio associado
ao recurso compartilhado. A principal vantagem desta soluo em relao aos algoritmos
anteriormente apresentados, a no ocorrncia da espera ocupada.
As instrues DOWN e UP funcionam como protocolos de entrada e sada, respecti-
vamente, para que um processo possa entrar e sair de sua regio crtica. O semforo fica
associado a um recurso compartilhado, indicando quando o recurso est sendo acessado
por um dos processos concorrentes. O valor do semforo igual a 1 indica que nenhum
processo est utilizando o recurso, enquanto o valor 0 indica que o recurso est em uso.
Sempre que deseja
entrar na sua regio crti-
ca, um processo executa
uma instruo DOWN. Se
o semforo for igual a 1,
este valor decrementa-
do, e o processo que soli-
citou a operao pode
executar as instrues da
sua regio crtica. De ou-
tra forma, se uma instru-
o DOWN executada
em um semforo com va-
lor igual a 0, o processo
fica impedido do acesso,
permanecendo em estado
de espera e, conseqen-
temente, no gerando
overhead no processador.
O processo que est acessando o recurso, ao sair de sua regio crtica, executa uma
instruo UP, incrementando o valor do semforo e liberando o acesso ao recurso. Se um
ou mais processos estiverem esperando pelo uso do recurso, o sistema selecionar um
processo na fila de espera associada ao recurso e alterar o seu estado para pronto.
As instrues DOWN e UP, aplicadas a um semforo S, podem ser representadas pe-
las definies a seguir, em uma sintaxe Pascal no convencional:
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
64

TYPE Semaforo = RECORD
Valor : INTEGER;
Fila_Espera : (*Lista de processos pendentes*);
END;


PROCEDURE DOWN (Var S : Semaforo);
BEGIN
IF (S = 0) THEN Coloca_Proc_Fila
ELSE
S := S + 1;
END;
PROCEDURE UP (Var S : Semaforo);
BEGIN
S := S + 1;
IF(Tem_Proc_Espera)THEN(Tira_Proc);
END;
O programa Semaforo_1 apresenta uma soluo para o problema da excluso mtua
entre dois processos utilizando semforos. O semforo inicializado com o valor 1, indi-
cando que nenhum processo est executando sua regio crtica.

PROGRAM Semaforo_1;
VAR S : Semaforo := 1;
BEGIN
PARBEGIN
Processo_A;
Processo_B;
PAREND;
END.

PROCEDURE Processo_A;
BEGIN
REPEAT
DOWN (S);
Regiao_Critica_A;
UP (S);
Processamento_A;
UNTIL False;
END;
PROCEDURE Processo_B;
BEGIN
REPEAT
DOWN (S);
Regiao_Critica_B;
UP (S);
Processamento_B;
UNTIL False;
END;

O Processo A executa a instruo DOWN, fazendo com que o semforo seja decre-
mentado de 1 e passe a ter o valor 0. Em seguida, o Processo A ganha o acesso sua
regio crtica. O Processo B tambm executa a instruo DOWN, mas como seu valor
igual a 0, ficar aguardando at que o Processo A execute a instruo UP, ou seja, volte
o valor semforo para 1.
7.9.2 SINCRONIZAO CONDICIONAL UTILIZANDO SEMFOROS
O problema do produtor/consumidor um exemplo de como a excluso mtua e a
sincronizao condicional podem ser implementadas com o uso de semforos. O progra-
ma ProdutorConsumidor2 apresenta uma soluo para esse problema, utilizando um buf-
fer de apenas duas posies. O programa utiliza trs semforos, sendo um do tipo bin-
rio, utilizado para implementar a excluso mtua e dois semforos contadores para a
sincronizao condicional. O semforo binrio Mutex permite a execuo das regies cr-
ticas Grava_Buffer e Le_Buffer de forma mutuamente exclusiva. Os semforos contado-
res Vazio e Cheio representam, respectivamente, se h posies livres no buffer para
serem gravadas e posies ocupadas a serem lidas. Quando o semforo Vazio for igual a
0, significa que o buffer est cheio e o processo produtor dever aguardar at que o con-
sumidor leia algum dado. Da mesma forma, quando o semforo Cheio for igual a 0, signi-
fica que o buffer est vazio e o consumidor dever aguardar at que o produtor grave
algum dado. Em ambas as situaes, o semforo sinaliza a impossibilidade de acesso ao
recurso.

PROGRAM Produtor_Consumidor_2;
CONST TamBuf = 2;
TYPE Tipo_Dado = (* Tipo qualquer *);
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
65
VAR Vazio : Semaforo := TamBuf;
Cheio : Semaforo := 0;
Mutex : Semaforo := 1;
Buffer: ARRAY [1..TamBuf] OF Tipo_Dado;
Dado1 : Tipo_Dado;
Dado2 : Tipo_Dado;
BEGIN
PARBEGIN
Produtor;
Consumidor;
PAREND;
END.

PROCEDURE Produtor;
BEGIN
REPEAT
Produz_Dado (Dado_1);
DOWN (Vazio);
DOWN (Mutex);
Grava_Buffer (Dado_1, Buffer);
P (Mutex);
UP (Cheio);
UNTIL False;
END;
PROCEDURE Consumidor;
BEGIN
REPEAT
DOWN (Cheio);
DOWN (Mutex);
Le_Buffer (Dado_2, Buffer);
P (Mutex);
UP (Vazio);
Consome_Dado (Dado_2);
UNTIL False;
END;

Por exemplo, consideremos que o processo Consumidor o primeiro a ser executado.
Como o buffer est vazio (Cheio = 0), a operao DOWN (Cheio) faz com que o processo
Consumidor permanea no estado de espera. Em seguida, o processo Produtor grava um
dado no buffer e, aps executar o UP (Cheio), libera o processo Consumidor, que estar
apto para ler o dado do buffer.
7.10 MONITORES
So mecanismos de sincronizao de alto nvel que tornam mais simples o desenvol-
vimento de aplicaes concorrentes. Foi proposto por Brinch Hansen em 1972, e desen-
volvido por C. A. R. Hoare em 1974, como um mecanismo de sincronizao estruturado,
ao contrrio dos semforos, que so considerados no-estruturados.
Monitores so estruturados em funo de serem implementados pelo compilador. As-
sim, o desenvolvimento de programas concorrentes fica mais fcil e as chances de erro
so menores. Atualmente, a maioria das linguagens de programao disponibiliza rotinas
para uso de monitores.
O monitor formado por proce-
dimentos e variveis encapsuladas
dentro de um mdulo. Sua caracters-
tica mais importante a implementa-
o automtica da excluso mtua
entre os procedimentos declarados,
ou seja, somente um processo pode
estar executando um dos procedi-
mentos do monitor em um determi-
nado instante. Toda vez que algum
processo faz uma chamada a um des-
ses procedimentos, o monitor verifica
se j existe outro processo executan-
do algum procedimento do monitor. Caso exista, o processo ficar aguardando a sua vez
em uma fila de entrada. As variveis globais de um monitor so visveis apenas aos pro-
cedimentos da sua estrutura, sendo inacessveis fora do contexto do monitor. Toda a
inicializao das variveis realizada por um bloco de comandos do monitor, sendo exe-
cutado apenas uma vez, na ativao do programa onde est declarado o monitor.
7.10.1 EXCLUSO MTUA UTILIZANDO MONITORES
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
66
A implementao no realizada diretamente pelo programador, como no caso do
uso de semforos. As regies crticas devem ser definidas como procedimentos no moni-
tor, e o compilador se encarregar de garantir a excluso mtua entre esses procedi-
mentos.
A comunicao do processo com o monitor feita unicamente atravs de chamadas a
seus procedimentos e dos parmetros passados. O programa Monitor_1 apresenta a so-
luo para o seguinte problema: dois processos somam e diminuem, concorrentemente,
o valor 1 da varivel compartilhada X.

PROGRAM Monitor_1;
MONITOR Regiao_Critica;
VAR X : INTEGER;

PROCEDURE Soma;
BEGIN
X := X + 1;
END;

PROCEDURE Diminui;
BEGIN
X := X - 1;
END;

BEGIN
X := 0;
END;

BEGIN
PARBEGIN
Regiao_Critica.Soma;
Regiao_Critica.Diminui;
PAREND;
END.
A inicializao da varivel X com o valor zero s acontecer uma vez, no momento da
inicializao do monitor Regiao_Critica. Neste exemplo, podemos garantir que o valor de
X ao final da execuo concorrente de Soma e Diminui ser igual a zero, porque como os
procedimentos esto definidos dentro do monitor, estar garantida a execuo mutua-
mente exclusiva.
7.10.2 SINCRONIZAO CONDICIONAL UTILIZANDO MONITORES
Monitores tambm podem ser utilizados na implementao da sincronizao condicio-
nal. Atravs de variveis especiais de condio, possvel associar a execuo de um
procedimento que faz parte do monitor a uma determinada condio, garantindo a sin-
cronizao condicional.
As variveis especiais so manipuladas por intermdio de duas instrues conhecidas
como WAIT e SIGNAL. A instruo WAIT faz com que o processo seja colocado no estado
de espera, at que algum outro processo sinalize com a instruo SIGNAL que a condio
de espera foi satisfeita. Caso a instruo SIGNAL seja executada e no haja processo
aguardando a condio, nenhum efeito surtir.
O problema do produtor/consumidor mais uma vez apresentado, desta vez com o
uso de um monitor para a soluo. O monitor Condicional estruturado com duas vari-
veis especiais de condio (Cheio e Vazio) e dois procedimentos (Produz e Consome).
Sempre que o processo produtor deseja gravar um dado no buffer, dever faz-lo a-
travs de uma chamada ao procedimento Produz do monitor (Condicional.Produz). Neste
procedimento, deve ser testado se o nmero de posies ocupadas no buffer igual ao
seu tamanho, ou seja, se o buffer est cheio. Caso o teste seja verdadeiro, o processo
deve executar um WAIT em Cheio, indicando que a continuidade da sua execuo de-
pende dessa condio, e permanecer aguardando em uma fila de espera associada va-
rivel Cheio. O processo bloqueado s poder prosseguir sua execuo quando um pro-
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
67
cesso consumidor executar um SIGNAL na varivel Cheio, indicando que um elemento do
buffer for consumido.
No caso do processo consumidor, sempre que desejar ler um dado do buffer, dever
faz-lo atravs de uma chamada ao procedimento Consome do monitor (Condicio-
nal.Consome). Sua condio de execuo existir ao menos um elemento no buffer. Ca-
so o buffer esteja vazio, o processo deve executar um WAIT em Vazio, indicando que a
continuidade da sua execuo depende dessa condio, e permanecer aguardando em
uma fila de espera associada varivel Vazio. O processo produtor que inserir o primeiro
elemento no buffer dever sinalizar esta condio atravs do comando SIGNAL na vari-
vel Vazio, liberando o consumidor.
O programa Produtor_Consumidor_3 descreve a soluo completa com o uso do mo-
nitor Condicional apresentado. Os procedimentos Produz_Dado e Consome_Dado ser-
vem, respectivamente, como entrada e sada de dados para o programa. 0s procedimen-
tos Grava_Dado e Le_Dado so responsveis, respectivamente, pela transferncia e re-
cuperao do dado no buffer.

PROGRAM Produtor_Consumidor_3;
CONST TamBuf = (* Tamanho qualquer *);
TYPE Tipo_Dado = (* Tipo qualquer *);
VAR Buffer: ARRAY [1..TamBuf] OF Tipo_Dado;
Dado : Tipo_Dado;

MONITOR Condicional;
VAR Vazio, cheio : (* Variveis de condio *);
Cont : INTEGER;

PROCEDURE Produz;
BEGIN
IF (Cont = TamBuf) THEN WAIT (Cheio);
Grava_Dado (Dado, Buffer);
Cont := Cont + 1;
IF (Cont = 1) THEN SIGNAL (Vazio);
END;

PROCEDURE Consome;
BEGIN
IF (Cont = 0) THEN WAIT (Vazio);
Le_Dado (Dado, Buffer);
Cont := Cont - 1;
IF (Cont = TamBuf - 1) THEN SIGNAL (Cheio);
END;

BEGIN
Cont := 0;
END;

BEGIN
PARBEGIN
Produtor;
Consumidor;
PAREND;
END.

PROCEDURE Produtor;
BEGIN
REPEAT
Produz_Dado (Dado);
Condicional.Produz;
UNTIL False;
END;
PROCEDURE Consumidor;
BEGIN
REPEAT
Condicional.Consome
Consome_Dado (Dado);
;
UNTIL False;
END;

07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
68
7.11 TROCA DE MENSAGENS
um mecanismo de comunicao e sincronizao entre processos. O Sistema Opera-
cional possui um subsistema de mensagem que suporta esse mecanismo sem que haja
necessidade do uso de variveis compartilhadas. Para que haja a comunicao entre os
processos, deve existir um canal de comunicao, podendo esse meio ser um buffer ou
um link de uma rede de computadores.
Os processos cooperativos podem fazer uso de um buffer para trocar mensagens a-
travs de duas rotinas: SEND (receptor, mensagem) e RECEIVE (transmissor, mensa-
gem). A rotina SEND permite o envio de uma mensagem para um processo receptor,
enquanto a rotina RECEIVE possibilita o recebimento de mensagem enviada por um pro-
cesso transmissor.
Uma soluo para o problema do produtor/consumidor apresentada utilizando a tro-
ca de mensagens.

PROGRAM Produtor_Consumidor_4;
BEGIN
PARBEGIN
Produtor;
Consumidor;
PAREND;
END.

PROCEDURE Produtor;
VAR Msg : Tipo_Msg;
BEGIN
REPEAT
Produz_Mensagem (Msg);
SEND (Msg);
UNTIL False;
END;
PROCEDURE Consumidor;
VAR Msg : Tipo_Msg;
BEGIN
REPEAT
RECEIVE (Msg);
Consome_Mensagem (Msg);
UNTIL False;
END;

7.12 PROBLEMAS CLSSICOS DE SINCRONIZAO
A literatura sobre sistemas operacionais est repleta de problemas interessantes que
tm sido amplamente discutidos e analisados a partir de vrios mtodos de sincroniza-
o.
7.12.1 PROBLEMA DOS FILSOFOS GLUTES
Este problema, conforme ilustra a figura abaixo, considera a existncia de cinco fil-
sofos sentados em torno de uma mesa redonda. Cada filsofo tem sua frente um prato
de macarro.
Um filsofo que deseje comer precisa contar com o auxlio de 2 garfos e entre cada
prato existe um garfo. A vida de um filsofo consiste em perodos nos quais ele alterna-
damente come e pensa. Quando um filsofo sente fome, ele tenta tomar posse dos gar-
fos sua direita e sua esquerda, um por vez, em qualquer ordem. Se ele tiver sucesso
nesta empreitada, come um pouco do macarro, libera os garfos e continua a pensar. A
questo a ser respondida : como escrever um programa para simular a ao de cada
filsofo que nunca leve a situaes de bloqueio?

07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
69
7.12.2 PROBLEMA DO BARBEIRO DORMINHOCO
Neste problema, considera-se uma barbearia onde existe um barbeiro, uma cadeira
de barbeiros e diversos lugares onde os clientes que estiverem esperando, podero sen-
tar. Se no houver nenhum cliente presente, o barbeiro simplesmente senta em sua ca-
deira e cai no sono. Quando chegarem fregueses, enquanto o barbeiro estiver cortando o
cabelo de outro, estes devem ou sentar, se houver cadeira vazia, ou ir embora, se no
houver nenhuma cadeira disponvel.

7.13 EXERCCIOS

82) Defina o que uma aplicao concorrente e d um exemplo de sua utilizao.

83) Relacione Regio Crtica com Condio de Corrida.

84) Considere uma aplicao que utilize uma matriz na memria principal para a co-
municao entre vrios processos concorrentes. Que tipo de problema pode ocor-
rer quando dois ou mais processos acessam uma mesma posio da matriz?

85) O que excluso mtua e como implementada?

86) Como seria possvel resolver os problemas decorrentes do compartilhamento da
matriz, apresentado anteriormente, utilizando o conceito de excluso mtua?

87) O que starvation e como podemos solucionar esse problema?

88) Qual o problema com a soluo que desabilita as interrupes para implementar a
excluso mtua?

89) O que espera ocupada e qual o seu problema?

90) Quais so os problemas comuns a todas as solues que se utilizam da espera o-
cupada para garantir a excluso mtua de execuo?

91) Explique o que sincronizao condicional e d um exemplo de sua utilizao.

92) Explique o que so semforos e d dois exemplos de sua utilizao: um para a so-
luo da excluso mtua e outro para sincronizao condicional.

93) Explique o que so monitores e d dois exemplos de sua utilizao: um para a so-
luo da excluso mtua e outro para sincronizao condicional.

94) Em uma aplicao concorrente que controla saldo bancrio em contas-correntes,
dois processos compartilham uma regio de memria onde esto armazenados os
saldos dos clientes A e B. Os processos executam concorrentemente os seguintes
passos:

Processo 1 (Cliente A)

/* saque em A */
1a. x := saldo_cliente_A;
1b. x := x 200;
1c. saldo_cliente_A := x;

/* deposito em B */
1d. x := saldo_cliente_B;
1e. x := x + 100;
1f. saldo_cliente_B := x;
Processo 2 (Cliente B)

/* saque em A */
2a. y := saldo_cliente_A;
2b. y := y 100;
2c. saldo_cliente_A := y;

/* deposito em B */
2d. y := saldo_cliente_B;
2e. y := y + 200;
2f. saldo_cliente_B := y;

07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
70
Supondo que os valores dos saldos de A e B sejam, respectivamente, 500 e 900,
antes de os processos executarem, pede-se:
a) Quais os valores corretos esperados para os saldos dos clientes A e B aps o
trmino da execuo dos processos?
b) Quais os valores finais dos saldos dos clientes se a seqncia temporal de e-
xecuo das operaes for: 1a, 2a, 1b, 2b, 1c, 2c, 1d, 2d, 1e, 2e, 1f, 2f?
c) Utilizando semforos, proponha uma soluo que garanta a integridade dos
saldos e permita o maior compartilhamento possvel dos recursos entre os
processos, no esquecendo a especificao da inicializao dos semforos.

95) O problema dos leitores/escritores apresentado a seguir, consiste em sincronizar
processos que consultam/atualizam dados em uma base comum. Pode haver mais
de um leitor lendo ao mesmo tempo; no entanto, enquanto um escritor est atua-
lizando a base, nenhum outro processo pode ter acesso a ela (nem mesmo leito-
res).

VAR Acesso : Semaforo := 1;
Exclusao : Semaforo := 1;
Nleitores : INTEGER := 0;

PROCEDURE Escritor;
BEGIN
ProduzDado;
DOWN (Acesso);
Escreve;
UP (Acesso);
END;
PROCEDURE Leitor;
BEGIN
DOWN (Exclusao);
Nleitores := Nleitores + 1;
IF (Nleitores = 1) THEN DOWN (Acesso);
UP (Exclusao);
Leitura;
DOWN (Exclusao);
Nleitores := Nleitores 1;
IF (Nleitores = 0) THEN UP(Acesso);
UP (Exclusao);
ProcessaDado;
END;

a) Suponha que exista apenas um leitor fazendo acesso base. Enquanto este
processo realiza a leitura, quais os valores das trs variveis?
b) Chega um escritor enquanto o leitor ainda est lendo. Quais os valores das
trs variveis aps o bloqueio do escritor? Sobre qual(is) semforo(s) se d o
bloqueio?
c) Chega mais um leitor enquanto o primeiro ainda no acabou de ler e o escritor
est bloqueado. Descreva os valores das trs variveis enquanto o segundo
leitor inicia a leitura.
d) Os dois leitores terminam simultaneamente a leitura. possvel haver proble-
mas quanto integridade do valor da varivel Nleitores? Justifique.
e) Descreva o que acontece com o escritor quando os dois leitores terminam suas
leituras. Descreva os valores das trs variveis quando o escritor inicia a escri-
ta.
f) Enquanto o escritor est atualizando a base, chegam mais um escritor e mais
um leitor. Sobre qual(is) semforo(s) eles ficam bloqueados? Descreva os va-
lores das trs variveis aps o bloqueio dos recm-chegados.
g) Quando o escritor houver terminado a atualizao, possvel prever qual dos
processos bloqueados (leitor ou escritor) ter acesso primeiro base?
h) Descreva uma situao onde os escritores sofram (adiamento indefinido) star-
vation.

96) Um outro problema clssico de comunicao entre processos o problema dos
fumantes (Patil, 1971). Trs classes de fumantes esto juntas em uma sala a-
companhadas do vendedor de ingredientes para a fabricao de cigarros. Para fa-
zer e fumar um cigarro, cada fumante precisa de trs ingredientes: tabaco, papel
e fsforos, todos eles disponveis em quantidades infinitamente grandes, guarda-
das pelo vendedor. Uma das categorias de fumantes tem seu prprio tabaco, ou-
07 Sincronizao e Comunicao entre Processos
Sistemas Operacionais Lucilia Ribeiro
71
tra seu papel e a ltima seus fsforos. A ao comea quando o vendedor coloca
dois ingredientes sobre a mesa, para permitir que um dos fumantes inicie um
procedimento extremamente nocivo sua sade (fumar). Quando este fumante
estiver servido, ele acorda o vendedor para que ele coloque mais dois ingredien-
tes na mesa, escolhido randomicamente, desbloqueando outro fumante. Tente
pensar nesse problema e veja se encontra alguns dilemas.

97) Outro problema clssico o da padaria, definido por Lamport (1974). Neste pro-
blema, uma padaria tem vrios pes e tortas sendo vendidos por n vendedores.
Cada cliente que entra na padaria recebe um nmero e espera at que seu nme-
ro seja chamado. Sempre que um vendedor fica desocupado, o prximo nmero
chamado. Pense nos procedimentos relativos aos vendedores e aos clientes.







-x-
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
72

Deadlock


"A educao o nosso passaporte para o futuro
pois o amanh pertence a quem se prepara hoje. (Malcom X)

8.1 INTRODUO
Um conjunto de N processos est em deadlock quando cada um dos N processos est
bloqueado espera de um evento que somente pode ser causado por um dos N proces-
sos do conjunto. Obviamente, essa situao somente pode ser alterada por alguma inici-
ativa que parta de um processo fora do conjunto dos N processos.
Ou ainda: um processo em um sistema multiprogramado dito estar em uma situa-
o de deadlock quando ele est esperando por um evento particular que jamais ocorre-
r. Em um deadlock em um sistema, um ou mais processos esto em deadlock.
Em sistemas multiprogramados, o compartilhamento de recursos uma das princi-
pais metas dos sistemas operacionais. Quando recursos so compartilhados entre uma
populao de usurios, e cada usurio mantm controle exclusivo sobre os recursos par-
ticulares a ele alocados, possvel que haja a ocorrncia de deadlocks no sentido em que
alguns usurios jamais sejam capazes de terminar seu processamento.
Talvez a forma de ilustrar um deadlock seja com um exemplo de uma lei aprovada
pela assemblia norte-americana no incio deste sculo: "Quando dois trens se aproxima-
rem um do outro em um cruzamento, ambos devero parar completamente e nenhum
dos dois dever ser acionado at que o outro tenha partido."
8.2 EXEMPLOS DE DEADLOCKS
8.2.1 DEADLOCK DE TRFEGO
Um certo nmero de automveis est tentando atravessar uma parte da cidade bas-
tante movimentada, mas o trfego ficou completamente paralisado. O trfego chegou
numa situao onde somente a polcia pode resolver a questo, fazendo com que alguns
carros recuem na rea congestionada. Eventualmente o trfego volta a fluir normalmen-
te, mas a essa altura os motoristas j se aborreceram e perderam tempo considervel.
8.2.2 DEADLOCK SIMPLES DE RECURSOS
Muitos deadlocks ocorrem em sistemas de computao devido natureza de recursos
dedicados (isto , os recursos somente podem ser usados por um usurio por vez).
Suponha que em um sistema o processo A detm um recurso 1, e precisa alocar o re-
curso 2 para poder prosseguir. O processo B, por sua vez, detm o recurso 2, e precisa
do recurso 1 para poder prosseguir. Nesta situao, temos um deadlock, porque um pro-
cesso est esperando pelo outro. Esta situao de espera mtua chamada muitas vezes
de espera circular.
8.2.3 DEADLOCK EM SISTEMAS DE SPOOLING
Um sistema de spooling serve, por exemplo, para agilizar as tarefas de impresso do
sistema. Ao invs do aplicativo mandar linhas para impresso diretamente para a im-
pressora, ele as manda para o spool, que se encarregar de envi-las para a impressora.
Assim o aplicativo rapidamente liberado da tarefa de imprimir.
Em alguns sistemas de spool, todo o job de impresso deve ser gerado antes do incio
da impresso. Isto pode gerar uma situao de deadlock, uma vez que o espao dispon-
vel em disco para a rea de spooling limitado. Se vrios processos comearem a gerar
seus dados para o spool, possvel que o espao disponvel para o spool fique cheio an-
tes mesmo de um dos jobs de impresso tiver terminado de ser gerado. Neste caso, to-
dos os processos ficaro esperando pela liberao do espao em disco, o que jamais vai
8
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
73
acontecer. A soluo nesse caso seria o operador do sistema cancelar um dos jobs parci-
almente gerados.
Para resolver o problema sem a interveno do operador, o SO poderia alocar uma
rea maior de spooling, ou a rea de spooling poderia ser varivel dinamicamente. Al-
guns sistemas, como o do Windows 3.x/95, utilizam todo o espao em disco disponvel.
Entretanto, pode acontecer de o disco possuir pouco espao e o problema ocorrer da
mesma forma.
A soluo definitiva seria implementar um sistema de spooling que comeasse a im-
primir assim que algum dado estivesse disponvel, sem a necessidade de se esperar por
todo o job.
8.2.4 ADIAMENTO INDEFINIDO
Em sistemas onde processos ficam esperando pela alocao de recursos ou pelas de-
cises de escalonamento, possvel que ocorra adiamento indefinido tambm chamado
de bloqueamento indefinido (ou starvation).
Adiamento indefinido pode ocorrer devido s polticas de escalonamento de recursos
do sistema, principalmente quando o esquema utiliza prioridades (conforme j vimos).
Isto pode ser evitado permitindo que a prioridade de um processo em espera cresa con-
forme ele espera por um recurso.
8.3 RECURSOS
Um sistema operacional pode ser visto de forma mais ampla como um gerenciador de
recursos. Ele responsvel pela alocao de vrios recursos de diversos tipos.
Aos objetos que os processos podem adquirir daremos o nome de recursos, para ge-
neralizar. Um recurso pode ser um dispositivo de hardware, como por exemplo, uma uni-
dade de fita, ou uma informao, tal como um registro em uma base de dados. Um re-
curso algo que s pode ser usado por um nico processo em um determinado instante
de tempo.
Existem os recursos preemptveis e os no-preemptveis. Um recurso preemptvel
aquele que pode ser tomado do processo que estiver usando o recurso, sem nenhum
prejuzo para o processo. A memria e a CPU so exemplos.
Recursos no-preemptveis no podem ser tomados de processos aos quais foram a-
locados. Tm que ser executados at o fim. Exemplo, se um processo iniciou a impresso
de resultados, a impressora no poder ser tomada dele e entregue a outro processo,
sem que haja um prejuzo considervel no processamento do primeiro processo.
Alguns recursos so compartilhados entre vrios processos. Unidades de disco so
compartilhadas em geral. Memria principal e CPU so compartilhadas; apesar de que
em um instante a CPU pertence a um nico processo, mas sua multiplexao entre os
vrios processos transmite a idia de que est sendo compartilhada.
Dados e programas so certamente os recursos que mais precisam ser controlados e
alocados. Em um sistema multiprogramado, vrios usurios podem querer simultane-
mante usar um programa editor. Seria desperdcio de memria ter-se uma cpia do edi-
tor para cada programa executando. Ao contrrio, uma nica cpia do cdigo trazida
para a memria e vrias cpias dos dados so feitas, uma para cada usurio. Uma vez
que o cdigo est em uso por vrios usurios simultaneamente, ele no pode mudar.
Cdigos que no podem mudar enquanto esto em uso so ditos reentrantes. Cdigo que
pode ser mudado mas que reinicializado cada vez que usado dito seriamente reus-
vel. Cdigo reentrante pode ser compartilhado entre vrios processos, enquanto cdigo
seriamente reusvel s pode ser alocado a um processo por vez.
Recursos que tendem a estar envolvidos em deadlocks so aqueles que podem ser
usados por vrios processos, mas um de cada vez, ou seja: o recurso no-preemptivo.
Um sistema possui um nmero finito de recursos para serem distribudos entre pro-
cessos concorrentes. Os recursos so classificados segundo vrios tipos, sendo que cada
tipo pode consistir de uma quantidade de instncias idnticas. Por exemplo, se conside-
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
74
rarmos o tipo de recurso CPU, em uma mquina com dois processadores, temos duas
instncias do recurso CPU.
Se um processo requisita uma instncia de um tipo de recurso, a alocao de qual-
quer instncia daquele tipo ir satisfazer a requisio. Se em um determinado sistema
esta satisfao no ocorrer, isto significa que as instncias no so idnticas, e que as
classes de tipos de recursos no esto definidas corretamente. Por exemplo, suponha
que um sistema possui duas impressoras. Elas poderiam ser definidas como instncias de
um mesmo tipo de recurso. Entretanto se uma estivesse instalada no quarto andar, e
outra no trreo do prdio, os usurios do andar trreo podem no enxergar as duas im-
pressoras como sendo equivalentes. Neste caso, classes de recursos separadas precisari-
am ser definidas para cada impressora.
Um processo pode requisitar um recurso antes de us-lo, e deve liber-lo depois de
seu uso. Um processo pode requisitar quantos recursos precisar para desempenhar a
tarefa para a qual foi projetado. Obviamente, o nmero de recursos requisitados no
pode exceder o nmero total de recursos disponveis no sistema.
Em uma situao de operao normal, um processo pode utilizar um recurso somente
nesta seqncia:
1) Requisitar: se a requisio no pode ser atendida imediatamente (por exemplo, o
recurso est em uso por outro processo), ento o processo requisitante deve esperar at
obter o recurso; 2) Usar: O processo pode operar sobre o recurso (por exemplo, se o
recurso uma impressora, ele pode imprimir) e 3) Liberar: O processo libera o recurso
8.4 QUATRO CONDIES NECESSRIAS PARA DEADLOCKS
Coffman, Elphick e Shosani (1971) enumeraram as seguintes quatro condies ne-
cessrias que devem estar em efeito para que um deadlock exista:
1) Condio de excluso mtua: cada recurso ou est alocado a exatamente um
processo ou est disponvel
2) Condio de posse e de espera: processos que estejam de posse de recursos
obtidos anteriormente podem solicitar novos recursos
3) Condio de no-preempo: recursos j alocados a processos no podem ser
tomados fora. Eles precisam ser liberados explicitamente pelo processo que detm sua
posse.
4) Condio de espera circular: deve existir uma cadeia circular de dois ou mais
processos, cada um dos quais esperando por um recurso que est com o prximo mem-
bro da cadeia
Todas as quatro condies acima citadas devem estar presentes para que possa ocor-
rer deadlock. Se uma delas estiver ausente, no h a menor possibilidade de ocorrer
uma situao de deadlock. Isto nos ajudar a desenvolver esquemas para prevenir dead-
locks.
8.5 O MODELO DO DEADLOCK
As condies de deadlock podem, de acordo com Holt (1972), ser modeladas com o
uso de grafos dirigidos. Tais grafos tem dois tipos de ns: processos, representados por
crculos e recursos, representados por quadrados.

08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
75




A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
R
B
S
C
T
A
Requisita R
Requisita S
Libera R
Libera S
B
Requisita S
Requisita T
Libera S
Libera T
C
Requisita T
Requisita R
Libera T
Libera R
1. A requisita R
2. B requisita S
3. C requisita T
4. A requisita S
5. B requisita T
6. C requisita R
ocorre deadlock
1. A requisita R
2. C requisita T
3. A requisita S
4. C requisita R
5. A libera R
6. A libera S
no deadlock
(e) (f) (g)
(h) (i) (j)
(l) (m) (n)
(o) (p) (q)
(a) (b) (c)
(d)
(k)
Grafos de alocao de recursos. (a) Um processo de posse de um recurso.
(b) Um processo solicitando um recurso. (c) Deadlock
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
76
8.6 MTODOS PARA LIDAR COM DEADLOCKS
Evitar dinamicamente o deadlock, pela cuidadosa alocao dos recursos aos proces-
sos. Isto requer que seja fornecida ao sistema operacional informaes adicionais sobre
quais recursos um processo ir requisitar e usar durante sua execuo.
Prevenir o deadlock atravs da negao de uma das quatro condies necessrias
para que ocorra um deadlock
Detectar e recuperar uma situao de deadlock. Se no so usadas estratgias de
preveno ou para evitar deadlocks, existe a possibilidade de ocorrncia destes. Neste
ambiente, o sistema operacional pode possuir um algoritmo que consiga determinar se
ocorreu um deadlock, alm de um algoritmo que faa a recuperao da situao.
Ignorar completamente o problema. Se um sistema que nem previne, evita ou recu-
pera situaes de deadlock, se um ocorrer, no haver maneira de saber o que aconte-
ceu exatamente. Neste caso, o deadlock no detectado causar a deteriorao do de-
sempenho do sistema, porque recursos esto detidos por processos que no podem con-
tinuar, e porque mais e mais processos, conforme requisitam recursos, entram em dead-
lock. Eventualmente o sistema ir parar de funcionar e ter que ser reinicializado manu-
almente.
Apesar do mtodo de ignorar os deadlocks no parecer uma abordagem vivel para o
problema da ocorrncia de deadlocks, ele utilizado na maioria dos sistemas operacio-
nais, inclusive o UNIX. Em muitos sistemas, deadlocks no ocorrem de forma freqente,
como por exemplo, uma vez por ano. Assim, muito mais simples e "barato" usar este
mtodo do que os dispendiosos meios de prevenir, evitar, detectar e recuperar dead-
locks.
8.7 O ALGORITMO DO AVESTRUZ
a abordagem mais simples: "enterre a cabea na areia e pense que no h nenhum
problema acontecendo".
A estratgia do UNIX em relao aos deadlocks simplesmente ignorar o problema,
pressupondo que a maioria dos usurios vai preferir a ocorrncia de deadlocks ocasio-
nais, em vez de regras que forcem todos os usurios a s usar um processo, um arquivo
aberto, enfim, um exemplar de cada recurso. Se os deadlocks pudessem ser eliminados
de graa, no haveria nenhuma discusso a respeito da convenincia de tal abordagem.
O problema que o preo de sua eliminao alto, sobretudo pelo fato de se estabelece-
rem restries inconvenientes ao uso dos recursos do sistema. Desta forma, estamos
diante de uma deciso no muito agradvel, entre a convenincia e a correo.
8.8 DETECO DE DEADLOCKS
Uma segunda tcnica detectar e recuperar os deadlocks. Quando ela usada, o sis-
tema no se preocupa em prevenir a ocorrncia de deadlocks. Em vez disso, ele permite
que os mesmos ocorram, tenta detectar as ocorrncias, e age no sentido de normalizar a
situao, aps sua ocorrncia.
8.8.1 DETECO DO DEADLOCK COM UM RECURSO DE CADA TIPO
Vamos comear com a existncia de um recurso de cada tipo. Ou seja, o sistema po-
de ter uma impressora, um plotter e uma unidade de fita, mas no duas impressoras,
por exemplo.
Para esse mtodo, construmos um grafo de recursos conforme j foi visto. Se tal
grafo contiver um ou mais ciclos, estar garantida pelo menos uma situao de deadlock.
Se no houver ciclos, o sistema no estar em deadlock.
Na figura, observamos que o grafo possui um ciclo, que pode ser notado pela simples
inspeo visual. Portanto, os processos D, E e G esto em deadlock. Apesar de ser relati-
vamente simples eliminar a condio de deadlock, atravs do grfico, esse mtodo no
pode ser usado nos sistemas reais, onde h necessidade de um algoritmo para essa tare-
fa.
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
77
O algoritmo que usaremos como ilustrao, um dos mais simples, que inspeciona
um grafo e termina quando encontra um ciclo ou quando no encontra nenhum. Ele usa
uma estrutura de dados L, que uma lista de ns. Durante a execuo do algoritmo, os
arcos sero marcados para indicar que j foram inspecionados.
Ele toma cada um dos ns, em ordem, como se fosse a raiz de uma rvore e faz uma
pesquisa profunda nela. Se alguma vez ele visitar um n onde j tenha estado anterior-
mente, ento ele encontrou um ciclo. Ao exaurir todos os arcos de um determinado n,
ele volta para o n anterior. Se esta propriedade valer para todos, o grafo inteiro estar
livre de ciclos, de forma que o sistema no apresenta condio de deadlock.
Comeando por R, inicializando L como uma lista vazia. Acrescentamos R lista, e
nos deslocamos para o nico n possvel, A, adicionando-o tambm a L, fazendo ento
L=[R,A]. De A vamos para S, formando L=[R,A,S]. Como no h nenhum arco saindo
dele, significa que chegamos a um beco sem sada, de maneira que somos forados a
voltar para A. Como A no tem nenhum arco desmarcado saindo dele, voltamos para R,
completando nossa inspeo a partir de R.
Agora recomeamos o algoritmo partindo de A, fazendo com que L volte a ser uma
lista vazia. Esta busca tambm vai terminar rapidamente, de modo que vamos recome-
ar, s que agora partindo de B. Da continuamos seguindo os arcos que saem deste n,
at encontrarmos D, quando L=[B,T,E,V,G,U,D]. Neste instante, devemos fazer uma es-
colha aleatria entre S e T. Se escolhermos S, alcanamos um beco sem sada, e volta-
mos a D, de onde voltamos a T, caracterizando um ciclo, razo pela qual o algoritmo de-
ve parar. Se escolhermos T, estaremos visitando este n pela segunda vez, e ao atuali-
zarmos a lista para l=[B,T,E,V,G,U,D,T], identificamos um ciclo e o algoritmo pra.
8.8.2 DETECO DO DEADLOCK COM VRIOS RECURSOS DE CADA TIPO
Quando existem vrias cpias de alguns dos recursos, necessria a adoo de uma
abordagem diferente para a deteco de deadlocks. Usaremos um algoritmo baseado
numa matriz.
Vamos denominar E de vetor de recursos existentes. Ele fornece o nmero total de
instncias de cada recurso existente. Por exemplo, se a classe 1 refere-se unidade de
fita, E1 = 2, significa que h duas unidades de fitas no sistema
Seja D o vetor de recursos disponveis, com Di fornecendo o nmero de instncias do
recurso i atualmente disponveis. Se ambas as unidades de fita estiverem alocadas, D1 =
0.
Agora necessitamos de duas matrizes: C, a matriz de alocao corrente e R, a matriz
de requisies.
Como exemplo, vamos considerar a figura abaixo, onde existem trs processos e
quatro classes de recursos, as quais chamamos arbitrariamente de unidades de fita, plot-
ters, impressoras e unidades de CD-ROM.
O processo 1 est de posse de uma impressora, o processo 2 de duas unidades de fi-
ta e de uma de CD-ROM, e o processo 3 tem um plotter e duas impressoras. Cada um
dos processos precisa de recursos adicionais, conforme mostra a matriz R.
R
C
A
S D E T
B
U F
G W
V
D E T
U
G
V
(a) (b)
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
78









Para rodar este algoritmo, procuramos por um processo cujas necessidades de recur-
sos possam ser satisfeitas. As necessidades do processo 1 no podero ser atendidas,
pois no h unidades de CD ROM disponveis. O processo 2 tambm no ter suas requi-
sies atendidas por falta de impressora livre. Felizmente, as requisies do processo 3
podero ser satisfeitas, de maneira que ele ser posto para rodar, ficando D = (0,0,0,0),
e ao final de seu processamento, devolver seus recursos ao pool de recursos dispon-
veis, fazendo com que D = (2,2,2,0).
Neste momento o processo 2 pode rodar, ficando D=(1,2,1,0), e ao devolver seus re-
cursos far D=(4,2,2,1). Nesta situao o ltimo processo poder rodar, fazendo com
que no haja deadlock no sistema.
Se acontecer que algum processo necessite de um recurso a mais do que os dispon-
veis, todo o sistema estar em deadlock.
Bem, agora j sabemos como detectar deadlocks, mas, quando devemos procurar por
eles? Podemos fazer isso a cada vez que um novo recurso for solicitado, mas custar
muito caro, apesar de detectarmos o deadlock o mais cedo possvel. Uma estratgia al-
ternativa a de verificar a cada k minutos, ou quando o nvel de utilizao do processa-
dor atingir um determinado nvel muito baixo.
8.9 RECUPERAO DE DEADLOCKS
J vimos como detectar deadlocks, e agora, como recuperar o sistema?
8.9.1 RECUPERAO ATRAVS DA PREEMPO
Algumas vezes possvel tomar temporariamente um recurso de seu atual dono e
entreg-lo a outro processo. Outras vezes necessria a interveno manual. A capaci-
dade de tomar um recurso de um processo, deixar que outro processo o utilize e devol-
v-lo ao processo original, sem que este tenha conhecimento do que est acontecendo,
depende muito do recurso.
Por exemplo, para tomar uma impressora de seu proprietrio atual, o operador deve
recolher as folhas impressas e coloc-las numa pilha. O processo pode ento ser suspen-
so. A impressora pode ser entregue a um outro processo. Quando este terminar, a pilha
de folhas impressas do processo anterior deve ser colocada de novo na bandeja de sada,
sendo o processo reiniciado.
Agora, interromper a gravao em uma unidade de CD-ROM pode se tornar muito
complicado.
8.9.2 RECUPERAO ATRAVS DE VOLTA AO PASSADO
Consiste em escrever histricos dos processos em andamento, contendo todas as in-
formaes necessrias para que em caso de deadlock, o sistema possa voltar atrs e
alocar um ou outro recurso diferente para evitar o impasse novamente.
8.9.3 RECUPERAO ATRAVS DE ELIMINAO DE PROCESSOS
a maneira mais rude, mas tambm a mais simples de se eliminar a situao de de-
adlock.
E = (4 2 3 1)
U
n
i
d
a
d
e
d
e
f
i
t
a
P
l
o
t
t
e
r
s
I
m
p
r
e
s
s
o
r
a
s
U
n
i
d
a
d
e
s

d
e

C
D
R
O
M
Recursos existentes
D = (2 1 0 0)
U
n
i
d
a
d
e
d
e
f
i
t
a
P
l
o
t
t
e
r
s
I
m
p
r
e
s
s
o
r
a
s
U
n
i
d
a
d
e
s

d
e
C
D
R
O
M
Recursos disponveis
C =
0 0 1 0
2 0 0 1
0 1 2 0
R =
2 0 0 1
1 0 1 0
2 1 0 0
Matriz de alocao corrente Matriz de requisies
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
79
Por exemplo, um processo pode estar de posse de uma impressora e estar precisando
de um plotter, e outro processo pode estar precisando da impressora, estando com o
plotter. Esto em deadlock. A eliminao de um outro processo que possui tanto a im-
pressora quanto o plotter pode solucionar esse impasse.
O ideal que seja eliminado um processo que possa rodar de novo desde o incio sem
produzir nenhum efeito negativo ao sistema. Por exemplo, uma compilao pode sempre
recomear, pois tudo o que ela faz ler um arquivo-fonte e produzir um arquivo-objeto.
Sua eliminao far com que a primeira rodada no tenha influncia alguma na segunda.
Por outro lado, um processo que atualiza uma base de dados no pode ser eliminado e
voltar a rodar uma segunda vez em condies seguras.
8.10 TENTATIVAS DE EVITAR O DEADLOCK
Se o sistema for capaz de decidir se a alocao de determinado recurso ou no se-
gura, e s fazer a alocao quando ela for segura, teremos como evitar deadlocks.
8.10.1 ESTADOS SEGUROS E INSEGUROS
Para escrever algoritmos que evitem deadlocks, precisamos usar informaes como
os Recursos existentes e os disponveis, bem como as Matrizes de alocao corrente e a
de Requisies.
Um estado dito seguro se no provocar deadlock, e houver uma maneira de satisfa-
zer todas as requisies pendentes partindo dos processos em execuo.
Vamos exemplificar usando apenas um recurso. Na figura, temos um estado no qual
A tem trs instncias de um recurso, mas pode eventualmente precisar de nove. No mo-
mento, B tem duas e pode precisar ao todo de quatro. De maneira similar, C tem duas,
mas pode precisar adicionalmente de mais cinco. Existe um total de 10 instncias deste
recurso, estando sete alocadas e trs livres.
O estado mostrado primeiramente (Fig. a) seguro, pois existe uma seqncia de a-
locaes que permitem que todos os processos venham a terminar seus processamentos.
Para tanto, o escalonador pode rodar B exclusivamente, at que ele precise de mais duas
instncias do recurso, levando ao estado da Fig. b. Quando B termina, chegamos ao es-
tado da Fig. c. Ento o escalonador pode rodar C, chegando ao estado da Fig. d. Quando
C termina, atingimos o estado ilustrado na Fig. 3E. Agora A pode obter as seis instncias
adicionais do recurso, necessrias a que ele termine sua execuo. Ento o estado inicial
considerado seguro, pois o sistema, atravs de um escalonamento cuidadoso, pode
evitar a ocorrncia de deadlocks.
Se por acaso, A requisita e ganha um outro recurso na Fig. b. Podemos encontrar
uma seqncia de alocaes que funcione garantidamente. No. Podemos, ento, conclu-
ir que a requisio de A por um recurso adicional no deveria ser atendida naquele mo-
mento.
Um estado inseguro no leva necessariamente a um deadlock. A diferena entre um
estado seguro e um inseguro que, de um estado seguro, o sistema pode garantir que
todos os processos vo terminar, enquanto que a partir de um inseguro esta garantia
no pode ser dada.
8.10.2 ALGORITMO DO BANQUEIRO PARA UM NICO TIPO DE RECURSO
Dijkstra (1965) idealizou um algoritmo de escalonamento que pode evitar a ocorrn-
cia de deadlocks, conhecido como algoritmo do banqueiro. Ele baseia-se nas mesmas
A
B
C
Possui Mximo
Livre: 3
(a)
A
B
C
Possui Mximo
Livre: 1
(b)
A
B
C
Possui Mximo
Livre: 5
(c)
A
B
C
Possui Mximo
Livre: 0
(d)
A
B
C
Possui Mximo
Livre: 7
(e)
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
80
premissas adotadas por um banqueiro de um pequeno banco para garantir ou no crdito
a seus correntistas.
Usando a mesma analogia mostrada no item acima, considerando que os clientes so
os processos e as unidades de crdito representam os recursos, e o banqueiro faz o pa-
pel do sistema operacional.

O mesmo algoritmo pode ser generalizado para tratar com diversos tipos de recursos,
utilizando matrizes.
Todos os livros srios de Sistemas Operacionais descrevem tal algoritmo com deta-
lhes. Apesar de teoricamente maravilhoso, este algoritmo na prtica intil, pois os pro-
cessos quase nunca sabem com antecedncia a quantidade de recursos de que vo preci-
sar. Alm do mais, tal quantidade no fixa e os recursos que estavam disponveis em
determinado momento podem "sumir" repentinamente (uma unidade de fita pode que-
brar).
8.11 PREVENO DE DEADLOCKS
Se pudermos garantir que pelo menos uma das quatro condies necessrias para
que um deadlock ocorra nunca ser satisfeita, poderemos garantir que ser estrutural-
mente impossvel a ocorrncia de deadlocks (Havender, 1968).
8.11.1 ATACANDO O PROBLEMA DA EXCLUSO MTUA
Se no houver possibilidade de nenhum recurso ser entregue exclusivamente a um
nico processo, nunca teremos configurada uma situao de deadlock. No entanto, est
claro tambm que dar permisso a dois processos para acessar a mesma impressora ao
mesmo tempo vai levar a uma situao catica.
Evitar ento, entregar um recurso, quando ele no for absolutamente necessrio, e
tentar estar certo de que o mnimo possvel de processos est precisando de recursos.
8.11.2 ATACANDO O PROBLEMA DA POSSE E DA ESPERA
Se pudermos impedir processos de manter a posse de recursos enquanto esperam
por outros recursos, poderemos eliminar os deadlocks. Uma forma de se alcanar este
objetivo exigir que todos os processos requisitem todos os recursos de que precisam,
antes de iniciar a execuo.
Um problema imediato que pode ocorrer com esta abordagem o fato de muitos pro-
cessos no conhecerem com antecedncia quantos e quais os recursos necessrios sua
execuo.
8.11.3 ATACANDO O PROBLEMA DA CONDIO DE NO-PREEMPO
A anlise da terceira condio (no-preempo) revela-se ainda menos promissora do
que a segunda. Se um processo tem alocado uma impressora e est no meio da impres-
so de seus resultados, tomar fora a impressora porque um plotter de que ele vai pre-
cisar no est disponvel uma grande besteira.
8.11.4 ATACANDO O PROBLEMA DA ESPERA CIRCULAR
Resta-nos somente uma condio para tentar resolver a questo dos deadlocks. A
condio de espera circular pode ser eliminada de diversas maneiras. Uma delas sim-
A
B
C
D
Possui Mximo
Livre: 10
(a)
A
B
C
D
Possui Mximo
Livre: 2
(b)
A
B
C
D
Possui Mximo
Livre: 1
(c)
Trs cenrios de alocao de recursos: (a) Seguro. (b) Seguro. (c) Inseguro.
08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
81
plesmente seguindo a regra de que um processo s est autorizado a usar apenas um
recurso por vez. Se ele precisar de um segundo recurso, deve liberar o primeiro.
Outra forma utilizar uma numerao global para todos os recursos. Agora a regra :
processos podem solicitar recursos sempre que necessrio, mas todas as solicitaes
precisam ser feitas em ordem numrica.
Resumindo:
CONDIO ABORDAGEM
Excluso Mtua Alocar todos os recursos usando spool
Posse e Espera Requisitar todos os recursos inicialmente
No-Preempo Tomar recursos de volta
Espera Circular Ordenar numericamente os recursos

8.12 EXERCCIOS

98) Quando que um processo est em deadlock?

99) Descreva o deadlock em sistemas de spooling.

100) Dentro do contexto de deadlock, o que a espera circular?

101) Um sistema operacional pode ser visto de forma mais ampla como um geren-
ciador de recursos. Ele responsvel pela alocao de vrios recursos de diversos
tipos. O que seriam recursos nesse contexto?

102) Diferencie recursos preemptveis e no-preemptveis.

103) Em sistemas onde processos ficam esperando pela alocao de recursos ou
pelas decises de escalonamento, possvel que ocorra adiamento indefinido (ou
starvation) e conseqentemente um deadlock. O que vem a ser isso?

104) Existem quatro condies necessrias que devem estar presentes para que
possa ocorrer deadlock. Se uma delas estiver ausente, no h a menor possibili-
dade de ocorrer uma situao de impasse. Quais so elas? Cite e explique cada
uma.

105) De acordo com Havender, 1968, se pudermos garantir que pelo menos uma
das quatro condies necessrias para que um deadlock ocorra (excluso mtua,
posse e espera, no-preempo e espera circular) nunca sejam satisfeitas, pode-
remos garantir que ser estruturalmente impossvel a ocorrncia dos mesmos. Fa-
le como isso poderia ser feito considerando o contexto descrito.

106) Existem trs formas de recuperar o sistema depois da deteco de um dead-
lock: recuperao atravs da preempo, atravs da volta ao passado e atravs
da eliminao de processos. Fale sobre cada uma delas.


107) Considerando a seguinte matriz de alocao de recursos, onde p o nmero
de recursos que determinado processo possui, m o nmero mximo de recursos
que esse processo pode requerer e L o nmero de recursos Livres no sistema
computacional diga se o estado seguro ou no e demonstre isso atravs das
matrizes. Considere que o sistema computacional tenha 10 recursos disponveis:

08 Deadlock
Sistemas Operacionais Lucilia Ribeiro
82


p m
A 1 7
B 1 5
C 2 4
D 4 9
L= 2

108) Quando existem vrias cpias de alguns recursos em um sistema computacio-
nal, necessrio a adoo de uma abordagem que utiliza vetores e matrizes para
a deteco de deadlocks. Supondo que em um sistema computacional, existam
trs processos e quatro classes de recursos: 5 unidades de fita, 3 plotters,4 im-
pressoras e 2 unidades de CD-ROM. Considerando E o vetor de recursos existen-
tes, D o vetor de recursos disponveis, C a matriz de alocao corrente dos pro-
cessos e R a matriz de requisies, demonstre, atravs da alocao cuidadosa de
recursos, se existe ou no a ocorrncia de deadlock. Lembre-se que preciso ini-
cialmente, preencher o vetor D.

E = (5 3 4 2) D = ( )

2 1 0 1 3 0 2 1
C = 1 0 2 0 R = 1 0 0 1
0 2 1 0 4 1 1 2


109) Quando existem vrias cpias de vrios recursos em um sistema computacio-
nal, necessria a adoo de uma abordagem que utiliza vetores e matrizes para
a deteco de deadlocks. Considerando E o vetor de recursos existentes, D o ve-
tor de recursos disponveis, C a matriz de alocao corrente dos processos e R a
matriz de requisies, responda:

a) Se existir cinco processos sendo executados, quantas linhas tero as matrizes
C e R?
b) Em que situao o vetor E igual ao vetor D?
c) O que est acontecendo se a primeira linha da matriz C e a primeira linha da
matriz R estiverem zeradas?
d) Respondendo em funo dos valores das matrizes e dos vetores, em que situ-
ao o sistema detectaria um deadlock?






-x-
09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
83

Gerncia do Processador



"Precisamos nos especializar para entrar mais profundamente em certos aspec-
tos separados da realidade. Mas se a especializao absolutamente necess-
ria, pode ser absolutamente fatal, se levada longe demais." (Aldous Huxley).

9.1 INTRODUO
Nos Sistemas Operacionais Multiprogramados, sempre que o processador fica sem
utilizao, ocorre o acionamento do Gerente de Processos ou Escalonador de Processos
que tem como principal funo selecionar o processo que deve ocupar o processador.
Dessa maneira, o trabalho do Escalonador de Processos pode permitir que o computador
se torne mais produtivo atravs da otimizao do uso do processador.
Assim sendo, o escalonamento de processos constitui a base dos Sistemas Operacio-
nais Multiprogramadados e, portanto, faz-se importante conhecer suas principais caracte-
rsticas, bem como os algoritmos de escalonamento mais utilizados.
9.2 FUNES BSICAS
A poltica de escalonamento de um
Sistema Operacional possui diversas fun-
es bsicas, como a de manter o pro-
cessador ocupado a maior parte do tem-
po, balancear o uso da CPU entre proces-
sos, privilegiar a execuo de aplicaes
crticas, maximizar o throughput do sis-
tema e oferecer tempos de resposta ra-
zoveis para usurios interativos. Cada
Sistema Operacional possui sua poltica
de escalonamento adequada ao seu pro-
psito e s suas caractersticas. Sistemas
de tempo compartilhado, por exemplo,
possuem requisitos de escalonamento
distintos dos sistemas de tempo real.
A rotina do Sistema Operacional que tem como principal funo implementar os crit-
rios da poltica de escalonamento chamada escalonador (scheduler). Em um sistema
multiprogramvel, o escalonador fundamental, pois todo o compartilhamento do pro-
cessador dependente dessa rotina.
Outra rotina importante na gerncia do processador conhecida como despachante
(dispatcher), responsvel pela troca de contexto dos processos aps o escalonador de-
terminar qual processo deve fazer uso do processador. O perodo de tempo gasto na
substituio de um processo em execuo por outro denominado latncia do despa-
chante.
9.3 CRITRIOS DE ESCALONAMENTO
As caractersticas de cada Sistema Operacional determinam quais so os principais
aspectos para a implementao de uma poltica de escalonamento adequada. Por exem-
plo, sistemas de tempo compartilhado exigem que o escalonamento trate todos os pro-
cessos de forma igual, evitando assim, a ocorrncia de starvation. J em sistemas de
tempo real, o escalonamento deve priorizar a execuo de processos crticos em detri-
mento da execuo de outros processos.
a) Utilizao do processador: o processador deve permanecer ocupado o mximo
de tempo possvel. Deve ser frisado que quando o sistema computacional trabalha com
9
09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
84
uma taxa de utilizao do processador por volta de 30%, ele considerado um sistema
com carga baixa de processamento. Porm, quando o mesmo trabalha com uma taxa na
faixa de 90%, ele considerado um sistema computacional bastante carregado;
b) Throughput ou vazo: representa o nmero mximo de processos executados
em um determinado intervalo de tempo o nmero de processos que so executados em
uma determinada frao de tempo, geralmente uma hora, deve ser elevado ao mximo.
c) Tempo de processador ou Tempo de CPU: o tempo que o processo leva no
estado de execuo durante seu processamento. As polticas de escalonamento no in-
fluenciam o tempo de processador de um processo, sendo este tempo funo apenas do
cdigo da aplicao e da entrada de dados.
c) Tempo de espera: o tempo total que um processo permanece na fila de pronto
durante seu processamento, aguardando para ser executado. A reduo do tempo de
espera dos processos desejada pela maioria das polticas de escalonamento.
d) Tempo de retorno (turnaround): o tempo que um processo leva desde sua
criao at o seu trmino, considerando-se o tempo gasto na alocao de memria, na
fila de processos prontos, nas operaes de entrada/sada e, ainda, o seu tempo de pro-
cessamento. Deve ser o menor possvel;
e) Tempo de resposta: o tempo decorrido entre uma requisio ao sistema ou
aplicao e o instante em que a resposta exibida. Em sistemas interativos, podemos
entender como o tempo decorrido entre a ltima tecla digitada pelo usurio e o incio da
exibio do resultado no monitor. Em geral, o tempo de resposta no limitado pela ca-
pacidade de processamento do sistema computacional, mas pela velocidade dos disposi-
tivos de E/S.
De uma maneira geral, qualquer poltica de escalonamento busca otimizar a utilizao
do processador e a vazo, enquanto tenta diminuir os tempos de retorno, espera e res-
posta. Apesar disso, as funes que uma poltica de escalonamento deve possuir so
muitas vezes conflitantes. Dependendo do tipo de Sistema Operacional, um critrio pode
ter maior importncia do que outros, como nos sistemas interativos onde o tempo de
resposta tem grande relevncia.
9.4 ESTRATGIAS DE ESCALONAMENTO
As estratgias de escalonamento de processos so definidas em funo da atividade
de preempo, a qual consiste na capacidade de permitir a interrupo da execuo de
um processo para executar um outro, sem prejuzo lgica de execuo de ambos.
As estratgias de escalonamento so duas:
a) Escalonamento no-preemptivo: com esta estratgia um processo que entra no
processador roda at terminar, sem jamais ser interrompido. Este foi o primeiro tipo de
escalonamento desenvolvido e foi utilizado nos SOs de processamento em batch;
b) Escalonamento preemptivo: esta estratgia baseada na atividade de preemp-
o, ou seja, permite a suspenso temporria da execuo de um processo para outro
rodar, sem prejuzo lgico de execuo a ambos. A maioria dos SOs da atualidade utiliza
esta estratgia de escalonamento.
9.5 ESCALONAMENTO FIRST COME FIRST SERVED (FCFS) ou FIFO

09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
85
Neste algoritmo os processos so organizados em uma fila por ordem de chegada e
toda vez que for necessrio escalonar um processo para rodar, o Gerente de Processos
seleciona o primeiro da fila. Os processos que forem chegando para serem executados
so colocados no final da fila, conforme ilustrado pela Figura anterior.
A prxima Figura apresenta um exemplo de utilizao do algoritmo FIFO. Nela pos-
svel observar a existncia de trs processos a serem executados, obedecendo ordem
de chegada de cada um, e, ainda, os seus respectivos tempos estimados e finais de exe-
cuo.

A principal vantagem de utilizao do FIFO a sua simplicidade de implementao,
haja visto que o Gerente de Processos necessita apenas manter uma fila de processos e
escalonar para rodar um aps o outro. Contudo, o algoritmo em questo apresenta al-
gumas deficincias e a mais importante delas a impossibilidade de se saber ao certo
qual o tempo de turnaround de um processo. Um outro problema existente que o
FIFO um algoritmo no preemptivo e, portanto, a sua aplicao em sistemas computa-
cionais que possuam muitos processos de usurios interativos, como os da atualidade,
considerada ineficiente.
9.6 ESCALONAMENTO MENOR JOB PRIMEIRO ou SJF (Shortest Job First)
O algoritmo de escalonamento do menor trabalho primeiro (Shortest Job First - SJF)
possui uma poltica que estabelece, conforme evidenciado na Figura abaixo, que o pro-
cesso com menor tempo estimado de execuo aquele que deve rodar primeiro. Assim
sendo, este algoritmo parte do pressuposto que o tempo de execuo de cada processo
conhecido.
Na sua concepo inicial, o escalonamento SJF preemptivo. Sua vantagem sobre o
escalonamento FIFO est na reduo do tempo mdio de retorno dos processos, porm
no SJF possvel haver starvation para processos com tempo de processador muito lon-
go ou do tipo CPU-bound.
Uma implementao do escalonamento SJF com preempo conhecida escalona-
mento de tempo remanescente. Nessa poltica, toda vez que um processo no estado
de pronto tem um tempo de processador estimado menor do que o processo em execu-
o, o Sistema Operacional realiza uma preempo, substituindo-o pelo novo processo.
09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
86

A principal vantagem do algoritmo em questo que ele privilegia processos de usu-
rios interativos. Assim, estes usurios podem, por exemplo, conseguir obter respostas
rpidas aos seus comandos.
J sua desvantagem principal que, normalmente, no se conhece, a priori, o tempo
que um processo ir ocupar o processador e este fato dificulta a implementao do SJF
em sua forma original.
9.7 ESCALONAMENTO CIRCULAR ou ROUND ROBIN
um escalonamento do tipo preemptivo, projetado especialmente para sistemas de
tempo compartilhado. Neste algoritmo, a cada processo atribui-se um intervalo de tem-
po, chamado de fatia de tempo (time-slice) ou quantum, durante o qual ele poder usar
o processador.
No escalonamento circular, toda vez que um processo escalonado para execuo,
uma nova fatia de tempo concedida. Caso a fatia de tempo expire, o Sistema Operacio-
nal interrompe o processo em execuo, salva seu contexto e direciona-o para o final da
fila de pronto. Este mecanismo conhecido como preempo por tempo.

Objetivando facilitar a compreenso do funcionamento do Round-Robin, a Figura a
seguir apresenta um exemplo de utilizao do mesmo.
09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
87

O Round-Robin apresenta como vantagens principais a sua simplicidade de imple-
mentao e, ainda, o fato de no permitir que processos monopolizem o processador. J
a sua desvantagem mais evidente que ele no faz distino entre a prioridade dos pro-
cessos. Assim sendo, um processo de tempo-real vai competir pelo processador em con-
dies de igualdade com um processo que seja um jogo de entretenimento, por exemplo.
Outra desvantagem a dificuldade de se definir o tamanho do quantum, pois se este for
muito pequeno, ocorrero sucessivas trocas de contexto, baixando a eficincia do SO.
Por outro lado, se o quantum for muito grande, os usurios interativos ficaro insatisfei-
tos.
Obs.: O valor do quantum depende do projeto de cada SO e, geralmente, ele se en-
contra entre 10 e 100 milissegundos.
9.8 ESCALONAMENTO POR PRIORIDADES
O algoritmo em questo preemptivo e considera fatores externos para escolher qual
processo ir rodar em um dado momento. Assim, cada processo deve possuir uma priori-
dade de execuo a fim de que e o Gerente
de Processos defina qual processo ir rodar.
Normalmente, o processo com maior priori-
dade aquele que deve ser executado pri-
meiro. Contudo, existindo processos com
prioridades iguais, os mesmos devem ser
agrupados em classes e o Round-Robin ,
geralmente, aplicado nas mesmas para de-
terminar qual processo de uma classe ir
rodar. A figura mostrada como tal algoritmo
funciona.

A prxima Figura apresenta um exemplo de uso do algoritmo de escalonamento com
prioridade.
09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
88

O escalonamento com prioridades apresenta como principal ponto positivo o fato de
permitir a diferenciao dos processos segundo critrios de importncia. Este fato torna-
se bastante relevante quando se considera o projeto de um Sistema Operacional de
Tempo Real, por exemplo.
A desvantagem de utilizao do algoritmo em estudo a possibilidade de os proces-
sos de baixa prioridade nunca serem escalonados, caracterizando uma situao conheci-
da como starvation (adiamento indefinido). Contudo, esta desvantagem pode ser supe-
rada atravs do uso da tcnica de aging (envelhecimento), a qual consiste em incremen-
tar gradativamente a prioridade dos processos que ficam muito tempo sem rodar.
9.9 ESCALONAMENTO POR MLTIPLAS FILAS
Este algoritmo preemptivo, como o prprio nome sugere, considera a existncia de
vrias filas de processos no estado de pronto, cada uma delas com sua prioridade de
execuo e seu algoritmo de escalonamento. Os processos so associados s filas em
funo de caractersticas particulares como, por exemplo, tipo de processo, rea de me-
mria ocupada etc.

Na Figura a seguir, encontrado um exemplo de utilizao do escalonamento com fi-
las mltiplas.
A principal vantagem deste algoritmo que ele permite que se utilize um algoritmo
de escalonamento diferente para cada fila. Assim, possvel que uma fila utilize o FIFO,
enquanto outra usa o Round-Robin, por exemplo.
09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
89
Como desvantagem deste algoritmo tem-se o fato de que sua implementao mais
complexa que a dos outros j estudados, pois cada uma das filas de prioridade pode utili-
zar um algoritmo de escalonamento diferente.


9.10 EXERCCIOS

110) O que poltica de escalonamento de um Sistema Operacional?

111) Qual a funo do escalonador e do despachante?

112) Quais os principais critrios utilizados em uma poltica de escalonamento?

113) Diferencie os tempos de processador, espera, retorno e resposta.

114) Qual a diferena entre escalonamento preemptivo e no-preemptivo?

115) Qual a diferena entre os escalonamentos FIFO e Circular?

116) O que fatia de tempo?

117) Descreva o escalonamento SJF e o escalonamento por prioridades.

118) Considere um Sistema Operacional com escalonamento por prioridades on-
de a avaliao do escalonamento realizada em um intervalo mnimo de 5 ms.
Neste sistema, os processos A e B competem por uma nica CPU. Desprezando os
tempos de processamento relativo s funes do Sistema Operacional, a tabela a
seguir fornece os estados dos processos A e B ao longo do tempo, medido em in-
tervalos de 5 ms (E=execuo, P=pronto e W=espera). O processo A tem menor
prioridade que o processo B


09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
90

00-04 05-09 10-14 15-19 20-24 25-29 30-34 35-39 40-44 45-49
procA P P E E E P P P E W
procB E E W W P E E E W W

50-54 55-59 60-64 65-69 70-74 75-79 80-84 85-89 90-94 95-99
procA P E P P E E W W P E
procB W P E E W W P E E -

a) Em que tempos A sofre preempo?
b) Em que tempos B sofre preempo?
c) Refaa a tabela anterior supondo que o processo A mais prioritrio que o pro-
cesso B.

119) Tomando como base os dados da tabela apresentada a seguir, ignorando a
perda de tempo causada pelas trocas de contexto e considerando que nenhum processo
realiza entrada/sada, informe o tempo que cada um dos processos efetivamente levar
para executar se os seguintes algoritmos de escalonamento forem utilizados: a) Round-
Robin com quantum de 2 minutos; b) SJF; c) Escalonamento com Prioridade com quan-
tum de 2 minutos.

Processo Tempo CPU Prioridade
A 1 min 4
B 7 min 2
C 5 min 3
D 4 min 4
E 3 min 1

120) Explique o funcionamento da tcnica de envelhecimento (aging) e quando
ela pode ser utilizada.

121) Verificamos uma situao na qual um processo A, de alta prioridade, e um
processo B de baixa prioridade interagem de forma a levar A a um loop eterno.
Tal situao persistiria se utilizssemos o escalonamento round robin em vez do
escalonamento com prioridade?

122) Os escalonadores round robin normalmente mantm uma fila com todos os
processos prontos, com cada processo aparecendo uma vez nesta fila. O que pode
acontecer se determinado processo aparecer duas vezes na fila de prontos? Voc
pode encontrar alguma razo para que isto seja permitido?

123) Que tipos de critrios devem ser utilizados no momento da definio da fa-
tia de tempo a ser empregada em um determinado sistema?

124) Em um sistema operacional, o escalonador de curto prazo utiliza duas filas.
A fila "A" contm os processos do pessoal do CPD e a fila "B" contm os processos
dos alunos. O algoritmo entre filas fatia de tempo. De cada 11 unidades de
tempo de processador, 7 so fornecidas para os processos da fila "A", e 4 para os
processos da fila "B". O tempo de cada fila dividido entre os processos tambm
por fatias de tempo, com fatias de 2 unidades para todos. A tabela abaixo mostra
o contedo das duas filas no instante zero. Considere que est iniciando um ciclo
de 11 unidades, e agora a fila "A" vai receber as suas 7 unidades de tempo. Mos-
tre a sequncia de execuo dos processos, com os momentos em que feita a
troca.
OBS: Se terminar a fatia de tempo da fila "X" no meio da fatia de tempo de um
dos processos, o processador passa para a outra fila. Entretanto, esse processo
permanece como primeiro da fila "X", at que toda sua fatia de tempo seja con-
sumida.

09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
91
Fila Processo Tempo de CPU
A P1 6
A P2 5
A P3 7
B P4 3
B P5 8
B P6 4

125) Quatro programas devem ser executados em um computador. Todos os
programas so compostos por 2 ciclos de processador e 2 ciclos de E/S. A entrada
e sada de todos os programas feita sobre a mesma unidade de disco. Os tem-
pos para cada ciclo de cada programas so mostrados na tabela. Construa um di-
agrama de tempo mostrando qual programa est ocupando o processador e o dis-
co a cada momento, at que os 4 programas terminem. Suponha que o algoritmo
de escalonamento utilizado seja fatia de tempo, com fatias de 4 unidades. Qual a
taxa de ocupao do processador e do disco?

Programa Processador Disco Processador Disco
P1 3 10 3 12
P2 4 12 6 8
P3 7 8 8 10
P4 6 14 2 10

126) Um algoritmo de escalonamento de CPU determina a ordem para execuo
dos seus processos escalonados. Considerando n processos a serem escalonados
em um processador, quantos escalonamentos diferentes so possveis? Apresente
uma frmula em termos de n.

127) Considere um Sistema Operacional que implemente escalonamento circular
com quantum igual a 10 ut. Em um determinado instante de tempo, existem ape-
nas trs processos (P1, P2 e P3) na fila de pronto, e o tempo de CPU de cada pro-
cesso 18, 4 e 13 ut, respectivamente. Qual o estado de cada processo no ins-
tante de tempo T, considerando a execuo dos processos P1, P2 e P3, nesta or-
dem, e que nenhuma operao de E/S realizada?
a) T = 8 ut b) T = 11 ut c) T = 33 ut

128) Considere um Sistema Operacional que implemente escalonamento circular
com quantum igual a 10 ut. Em um determinado instante de tempo, existem ape-
nas trs processos (P1, P2 e P3) na fila de pronto, e o tempo de CPU de cada pro-
cesso 14, 4 e 12 ut, respectivamente. Qual o estado de cada processo no ins-
tante de tempo T, considerando a execuo dos processos P1, P2 e P3, nesta or-
dem, e que apenas o processo P1 realiza operaes de E/S? Cada operao de
E/S executada aps 5 ut e consome 10 ut.
a) T = 8 ut b)T = 18 ut c)T = 28 ut

129) Considere as seguintes tabelas. Elabore o grfico de Gantt para os algorit-
mos SJF preemptivo, RR e prioridade. Calcule os tempos mdios de retorno, res-
posta e espera para cada uma das situaes. Considere uma fatia de tempo de 2
instantes.




09 Gerncia do Processador
Sistemas Operacionais Lucilia Ribeiro
92
PROC Tcheg Prior Tcpu Tresp Tret Tesp
A 12 4 7
B 5 3 3
C 2 1 2
D 13 2 4
E 14 5 1

PROC Tcheg Prior Tcpu Tresp Tret Tesp
A 8 5 7
B 2 1 3
C 15 2 2
D 2 4 4
E 3 3 1
F 11 6 5

PROC Tcheg Prior Tcpu Tresp Tret Tesp
A 12 1 5
B 5 4 9
C 2 3 4
D 13 5 3
E 8 0 6
F 6 6 1
G 1 2 7

130) Qual a vantagem em ter diferentes tamanhos de quantum em diferentes
nveis de um sistema mltiplas filas?

131) Considere as seguintes tabelas. Elabore o grfico de Gantt para o algoritmo
Mltipla Fila. Calcule os tempos mdios de retorno, resposta e espera para cada
uma das situaes.

a) Algoritmos: Fila 1 FCFS; Fila 2 Prioridade; Fila 3 RR, com quantum = 3
Algoritmo entre filas: RR com quantum = 2
PROC FILA Tcheg Tcpu Prior Tret Tresp Tesp
A 1 0 10 1
B 2 5 8 1
C 1 0 7 1
D 3 9 4 2
E 2 0 3 0
F 3 8 9 3
G 3 1 7 4
H 2 10 5 3

b) Algoritmos: Fila 1 SJF; Fila 2 FIFO; Fila 3 RR, com quantum = 2
Algoritmo entre filas: prioridade. Fila 1 = 2, Fila 2 = 3 e Fila 3 = 1

PROC FILA Tcheg Tcpu Prior Tret Tresp Tesp
A 1 5 10
B 2 4 8
C 1 8 5
D 3 7 7
E 1 1 1
F 3 0 2

-x-
10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
93


Gerncia de Memria



Nunca implore por aquilo que voc tem o poder de conquistar. (Miguel de Cervantes)

10.1 INTRODUO
Historicamente, a memria principal sempre foi vista como um recurso escasso e ca-
ro. Uma das maiores preocupaes dos projetistas foi desenvolver Sistemas Operacionais
que no ocupassem muito espao de memria e, ao mesmo tempo, otimizassem a utili-
zao dos recursos computacionais. Mesmo com a reduo do custo e conseqente au-
mento da capacidade, seu gerenciamento um dos fatores mais importantes no projeto
de Sistemas Operacionais.
10.2 FUNES BSICAS
O objetivo principal de um sistema computacional executar programas. Tais pro-
gramas devem estar, ainda que parcialmente, localizados na memria principal para exe-
cutarem. Contudo, a memria principal, normalmente, no possui tamanho suficiente
para armazenar todos os programas a serem executados, bem como os dados por eles
utilizados. Este fato levou a maioria dos Sistemas Operacionais modernos a utilizarem
principalmente, dos discos rgidos como dispositivos secundrios de apoio a memria.
Assim, faz-se necessria a presena do software de gerncia de memria que , tam-
bm, conhecido como Gerente de Memria e possui como objetivos principais controlar
quais partes da memria esto ou no em uso e tratar as dificuldades inerentes ao pro-
cesso de swapping _ processo de troca de dados entre a memria principal e o disco rgi-
do.
10.3 ALOCAO CONTGUA SIMPLES
Foi implementada nos primeiros Sistemas Operacionais, porm ainda est presente
em alguns sistemas monoprogramveis. Nesse tipo de organizao, a memria principal
subdividida em duas reas: uma para o Sistema Operacional e outra para o programa
do usurio. Dessa forma, o programador deve desenvolver suas aplicaes preocupado
apenas, em no ultrapassar o espao de memria disponvel.
Nesse esquema, o usurio tem controle
sobre toda a memria principal, podendo ter
acesso a qualquer posio de memria, inclu-
sive a rea do Sistema Operacional. Para
proteger o sistema desse tipo de acesso, que
pode ser intencional ou no, alguns sistemas
implementam proteo atravs de um regis-
trador que delimita as reas do Sistema Ope-
racional e do usurio. Dessa forma, sempre
que um programa faz referncia a um ende-
reo na memria, o sistema verifica se o en-
dereo est dentro dos limites permitidos.
Caso no esteja, o programa cancelado e
uma mensagem de erro gerada, indicando
que houve uma violao no acesso mem-
ria principal.
10.4 TCNICA DE OVERLAY
Na alocao contgua simples, todos os programas esto limitados ao tamanho da -
rea de memria principal disponvel para o usurio. Uma soluo encontrada dividir o
10
10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
94
programa em mdulos, de forma que seja possvel a execuo independente de cada
mdulo, utilizando uma mesma rea de memria. Essa tcnica chamada de overlay.
Considere um programa que tenha trs mdulos: um principal, um de cadastramento
e outro de impresso, sendo os mdulos de cadastramento e de impresso independen-
tes. A independncia do cdigo significa que quando um mdulo estiver na memria para
execuo, o outro no precisa necessariamente estar presente. O mdulo principal co-
mum aos dois mdulos; logo, deve permanecer na memria durante todo o tempo da
execuo do programa.
Como podemos verificar na figura, a
memria insuficiente para armazenar todo
o programa, que totaliza 9KB. A tcnica de
overlay utiliza uma rea de memria co-
mum, onde os mdulos de cadastramento e
de impresso podero compartilhar a mes-
ma rea de memria. Sempre que um dos
dois mdulos for referenciado pelo mdulo
principal, o mdulo ser carregado da me-
mria secundria para a rea de overlay.
A definio das reas de overlay fun-
o do programador, atravs de comandos
especficos da linguagem de programao
utilizada. O tamanho de uma rea de over-
lay estabelecido a partir do tamanho do
maior mdulo.
10.5 ALOCAO PARTICIONADA
Os sistemas multiprogramveis so muito mais eficientes no uso do processador, ne-
cessitando assim, que diversos programas estejam na memria principal ao mesmo tem-
po e que novas formas de gerncia de memria sejam implementadas.
10.5.1 ALOCAO PARTICIONADA ESTTICA
Nos primeiros sistemas multiprogramveis, a memria era dividida em pedaos de
tamanho fixo, chamados parties. O tamanho das parties, estabelecido na fase de
inicializao do sistema, era definido em funo do tamanho dos programas que executa-
riam no ambiente. Sempre que fosse necessria a alterao do tamanho de uma parti-
o, o sistema deveria ser desativado e reinicializado com uma nova configurao. Esse
tipo de gerncia de memria conhecido como alocao particionada esttica ou a-
locao fixa.

10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
95
Inicialmente, os programas s podiam ser carregados em apenas uma partio espe-
cfica, mesmo se outras estivessem disponveis. Essa limitao se devia aos compiladores
e montadores, que geravam apenas cdigo absoluto. No cdigo absoluto, todas as re-
ferncias a endereos no programa so posies fsicas na memria principal, ou seja, o
programa s poderia ser carregado a partir do endereo de memria especificado no seu
prprio cdigo. Se, por exemplo, os programas A e B estivessem sendo executados, e a
terceira partio estivesse livre, os programas C e E no poderiam ser processados. A
esse tipo de gerncia de memria chamou-se alocao particionada esttica absolu-
ta.
Com a evoluo dos compiladores, o cdi-
go gerado deixou de ser absoluto e passa a
ser relocvel. No cdigo relocvel, todas as
referncias a endereos no programa so re-
lativas ao incio do cdigo e no a endereos
fsicos de memria. Desta forma, os progra-
mas puderam ser executados a partir de
qualquer partio. Quando o programa car-
regado, o loader calcula todos os endereos a
partir da posio inicial onde o programa foi
alocado. Caso os programas A e B terminas-
sem, o programa E poderia ser executado em
qualquer uma das parties. Esse tipo de ge-
rncia denominado alocao particionada
esttica relocvel.
Para manter controle sobre quais parties esto alocadas, a gerncia de memria
mantm uma tabela com o endereo inicial de cada partio, seu tamanho, e se est em
uso. Sempre que um programa carregado para a memria, o sistema percorre a tabela,
na tentativa de localizar uma partio livre, onde o programa possa ser carregado.
Nesse esquema de alocao de memria, a pro-
teo baseia-se em dois registradores, que indicam
os limites inferior e superior da partio onde o pro-
grama est sendo executado.

Tanto nos sistemas de alocao absoluta quanto
nos de alocao relocvel, os programas, normal-
mente, no preenchem totalmente as parties on-
de so carregados. Por exemplo, os programas C, A
e E no ocupam integralmente o espao das parti-
es onde esto alocados, deixando 1 KB, 3 KB e 5
KB de reas livres. Este tipo de problema, decorren-
te da alocao fixa das parties, conhecido como
fragmentao interna.
10.5.2 ALOCAO PARTICIONADA DINMICA
Na tentativa de evitar o desperdcio de memria ocasionado pelo mtodo tratado na
subseo anterior, foi desenvolvido um outro esquema de multiprogramao. Este outro
esquema considera que o tamanho das parties de memria no so fixos e conhecido
como alocao particionada dinmica ou parties variveis.
10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
96

Nesse esquema, o programa utilizaria o espao neces-
srio, tornando essa rea sua partio. Como os programas
utilizam apenas o espao que necessitam, o problema da
fragmentao interna no ocorre. Porm, nesse caso, exis-
te um problema que no to bvio quanto no esquema
anterior. Um tipo diferente de fragmentao comear a
ocorrer, quando os programas forem terminando e deixan-
do espaos cada vez menores na memria, no permitindo
o ingresso de novos programas. Na figura, mesmo existin-
do 12 KB livres de memria principal, o programa D, que
necessita de 6 KB no poder ser carregado para execuo,
pois este espao no est disposto contiguamente. Esse
tipo de problema chamado de fragmentao externa.

Existem duas solues para o problema da fragmentao externa. Na primeira solu-
o, conforme os programas terminam, apenas os espaos livres adjacentes so reuni-
dos, produzindo reas livres de tamanho maior. A segunda soluo envolve a relocao
de todas as parties ocupadas, eliminando todos os espaos entre elas e criando uma
nica rea livre contgua. Para que esse processo seja possvel, necessrio que o sis-
tema tenha a capacidade de mover os diversos programas na memria principal, realizar
relocao dinmica. A complexidade do seu algoritmo e o consumo de recursos Siste-
ma Operacional sistema para a relocao dinmica, podem torn-la invivel.




10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
97
10.5.3 ESTRATGIAS DE ALOCAO DE PARTIO
Para que diversos programas estejam na memria principal ao mesmo tempo, novas
formas de gerncia de memria devem ser implementadas. Os Sistemas Operacionais
implementam algumas estratgias para determinar em qual rea livre um programa ser
carregado para execuo. Essas estratgias visam evitar ou diminuir o problema da
fragmentao externa.
A melhor estratgia a ser adotada por um sistema depende de uma srie de fatores,
sendo o mais importante o tamanho dos programas acessados no ambiente. Indepen-
dentemente do algoritmo utilizado, o sistema deve possuir formas de saber quais reas
esto livres e quais no esto. Existem duas estratgias principais: Mapa de Bits e Lista
Encadeada.
a) MAPA DE BITS: esta estratgia divide a memria em pequenas unidades de
alocao e a cada uma delas associado um bit no mapa de bits. Convenciona-se que
um 0 no mapa indica que a unidade correspondente da memria est livre e 1
informa que est ocupada. A principal dificuldade em se utilizar o mapa de bits ocorre
quando for necessrio, por exemplo, trazer para a memria um processo que ocupa k
unidades de alocao. O Gerente de Memria deve, ento, procurar por k bits 0
consecutivos no mapa. Esta procura lenta, de forma que, na prtica, os mapas de bits
raramente so usados, ainda que eles sejam muito simples de serem implementados.


b) LISTAS LIGADAS: a presente estratgia utiliza uma lista ligada para controlar a
alocao/liberao de memria, onde tal lista contm os segmentos livres e ocupados da
memria. Um segmento pode ser um processo ou um buraco, conforme mostrado na
Figura.



10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
98

No esquema de listas ligadas podem ser utilizados os algoritmos de alocao de me-
mria apresentados na Tabela abaixo:

ALGORITMO DESCRIO
Primeira Alocao O Gerente de Memria procura ao longo da lista de segmentos at
encontrar um buraco que seja suficientemente grande para abrigar o
processo. O buraco ento quebrado em 2 pedaos, um para o pro-
cesso e outro para o espao no-utilizado, exceto no caso, altamente
improvvel, do tamanho do buraco corresponder exatamente ao do
processo.
Vantagem: Este algoritmo extremamente rpido, pois procura o
mnimo de tempo possvel.
Prxima Alocao uma pequena variao do algoritmo da primeira alocao. Fun-
ciona exatamente igual ao algoritmo anterior, exceto pelo fato de
guardar a posio onde ele encontra um buraco conveniente. Da pr-
xima vez que o algoritmo for chamado, ele inicia sua busca deste
ponto, em vez de comear de novo no incio da lista.
Desvantagem: Este algoritmo tem uma performance um pouco pi-
or do que o da primeira alocao.
Melhor Alocao Este algoritmo busca na lista inteira a melhor posio para arma-
zenar o processo que est precisando de espao. Em vez de parar ao
encontrar um buraco grande, que poder ser necessrio mais tarde,
ele busca um buraco cujo tamanho seja o mais prximo possvel do
tamanho do processo.
Desvantagem: Este algoritmo mais lento do que o da primeira
alocao, pois precisa pesquisar toda lista cada vez que for chamado.
Ele tambm resulta em maior desperdcio de memria que o da pri-
meira alocao, ou mesmo o da prxima alocao, pois ele tende a
dividir a memria em buracos muito pequenos, que se tornam difceis
de serem utilizados. O algoritmo da primeira alocao gera, em m-
dia, buracos maiores.
Pior Alocao aquele que sempre aloca ao processo o maior buraco disponvel,
de forma que tal buraco, quando dividido, resulta em novo buraco
suficientemente grande para abrigar outro processo.
Desvantagem: Este algoritmo no apresenta bons resultados pr-
ticos.
Alocao Rpida Este algoritmo mantm listas separadas para alguns dos tama-
nhos de buracos mais requisitados. Por exemplo, poder ser criada
uma tabela com n entradas, na qual a primeira entrada um ponteiro
para o incio de uma lista de buracos de 4K, a segunda para uma lista
de buracos de 8K, a terceira para buracos de 12K e assim por diante.
Com a Alocao Rpida, a busca de um buraco de determinado tama-
nho muito rpida.
Desvantagem: sua complexidade maior, uma vez que devem ser
gerenciadas vrias listas de buracos.
SISTEMA BUDDY: o sistema buddy uma estratgia que tira vantagem do fato de
os computadores usarem nmeros binrios para o endereamento, como uma forma de
acelerar a juno dos buracos adjacentes quando um processo termina ou quando reti-
rado da memria. A Figura traz um exemplo do funcionamento da referida estratgia.
Apesar de extremamente eficiente sob o aspecto da velocidade, o sistema buddy no
eficiente em termos de utilizao da memria. O problema decorre, obviamente, da
10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
99
necessidade de se arredondar a requisio feita pelo processo para a prxima potncia
inteira de 2. Assim, a um processo de 35K deve ser alocado 54K. Os 29K excedentes
sero perdidos, ocasionando a fragmentao interna.

A 128 256 512
1024
Inicialmente
Requisio de 70
Requisio de 35
Requisio de 80
Devoluo de A
Requisio de 60
Devoluo de B
Devoluo de D
Devoluo de C
Memria
64 A
A
128
128
128
64
64
D
D
B
B
B
B
64
C
C
C
C
C
256
256
128
128
128
128
128
512
512
512
512
512
512
0 1 M 128 K 256 K 384 K 512 K 640 K 768 K 896 K
1
3
3
3
4
4
4
3
1
Buracos

10.6 SWAPPING
Mesmo com o aumento da eficincia
da multiprogramao e, particularmente,
da gerncia de memria, muitas vezes
um programa no podia ser executado
por falta de uma partio livre dispon-
vel. A tcnica de swapping foi introdu-
zida para contornar o problema da insu-
ficincia de memria principal.
Em todos os esquemas apresentados
anteriormente, um processo permanecia
na memria principal at o final da sua
execuo, inclusive nos momentos em
que esperava por um evento, como uma
operao de E/S. O swapping uma tc-
nica aplicada gerncia de memria pa-
ra programas que esperam por memria
livre para serem executados. Nesta situ-
ao, o sistema escolhe um processo
residente, que transferido da memria
principal para a memria secundria
(swap out), geralmente disco. Posterior-
mente, o processo carregado de volta
da memria secundria para a memria
principal (swap in) e pode continuar sua
execuo como se nada tivesse ocorrido.
O algoritmo de escolha do processo a ser retirado da memria principal deve priorizar
aquele com menores chances de ser executado. Para que essa tcnica seja utilizada,
essencial que o sistema oferea um loader que implemente a relocao dinmica.
No momento em que o progra-
ma carregado na memria, o re-
gistrador recebe o endereo inicial
da posio de memria que o pro-
grama ir ocupar. Toda vez que
ocorrer uma referncia a algum
endereo, o endereo contido na
instruo ser somado ao contedo
do registrador, gerando, assim, o
endereo fsico. Dessa forma, um
programa pode ser carregado em
qualquer posio de memria.
10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
100
10.7 EXERCCIOS

132) Quais as funes bsicas da gerncia de memria?

133) Considere um sistema computacional com 40 KB de memria principal e que
utilize um Sistema Operacional de 10 KB que implemente alocao contgua de
memria. Qual a taxa de subutilizao da memria principal para um programa
que ocupe 20 KB de memria?

134) Suponha que um sistema computacional de 64 KB de memria principal e que
utilize um Sistema Operacional de 14 KB que implemente alocao contgua de
memria. Considere tambm um programa de 90 KB, formado por um mdulo
principal de 20 KB e trs mdulos independentes, cada um com 10 KB, 20 KB e
30 KB. Como o programa poderia ser executado utilizando-se apenas a tcnica de
overlay?

135) Considerando o exerccio anterior, se o mdulo de 30 KB tivesse seu tamanho
aumentado para 40 KB, seria possvel executar o programa? Caso no possa, co-
mo o problema poderia ser contornado?

136) Qual a diferena entre fragmentao interna e externa da memria principal?

137) Suponha um sistema computacional com 128 KB de memria principal e que
utilize um Sistema Operacional de 64 KB que implemente alocao particionada
esttica relocvel. Considere tambm que o sistema foi inicializado com trs parti-
es: P1 (8 KB), P2 (24 KB) e P3 (32 KB). Calcule a fragmentao interna da
memria principal aps a carga de trs programas: PA, PB e PC.
a) P1 <- PA (6 KB); P2 <- PB (20 KB); P3 <- PC (28 KB)
b) P1 <- PA (4 KB); P2 <- PB (16 KB); P3 <- PC (26 KB)
c) P1 <- PA (8 KB); P2 <- PB (24 KB); P3 <- PC (32 KB)

138) Considerando o exerccio anterior, seria possvel executar quatro programas
concorrentemente utilizando apenas a tcnica de alocao particionada esttica
relocvel? Se for possvel, como? Considerando ainda o mesmo exerccio, seria
possvel executar um programa de 32 KB? Se for possvel, como?

139) Qual a limitao da alocao particionada esttica absoluta em relao alo-
cao esttica relocvel?


140) Considere que os processos da tabela a seguir esto aguardando para serem
executados e que cada um permanecer na memria durante o tempo especifica-
do. O Sistema Operacional ocupa uma rea de 20 KB no incio da memria e ge-
rencia a memria utilizando um algoritmo de particionamento dinmico modifica-
do. A memria total disponvel no sistema de 64 KB e alocada em blocos ml-
tiplos de 4 KB. Os processos so alocados de acordo com sua identificao (em
ordem crescente) e iro aguardar at obter a memria de que necessitam. Calcule
a perda de memria por fragmentao interna e externa sempre que um processo
colocado ou retirado da memria. O Sistema Operacional compacta a memria
apenas quando existem duas ou mais parties livres adjacentes.

PROCESSOS MEMRIA TEMPO
1 30 KB 5
2 6 KB 10
3 36 KB 5

10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
101
141) Considerando os algoritmos para escolha da partio dinamicamente, concei-
tue as estratgias especificando prs e contras de cada uma.

142) Considere um sistema que possua as seguintes reas livres na memria prin-
cipal, ordenadas crescentemente: 10 KB, 4 KB, 20 KB, 18 KB, 7 KB, 9 KB, 12 KB e
15 KB. Para cada programa abaixo, qual seria a partio alocada utilizando-se os
algoritmos Primeira Alocao, Prxima Alocao, Melhor Alocao e Pior A-
locao?
a) 12 KB b) 10 KB c) 9 KB

143) Um sistema utiliza alocao particionada dinmica como mecanismo de gern-
cia de memria. O Sistema Operacional aloca uma rea de memria total de 50
KB e possui, inicialmente, os programas da tabela a seguir:

5 KB Programa A
3 KB Programa B
10 KB Livre
6 KB Programa C
26 KB Livre
Realize as operaes abaixo seqencialmente, mostrando o estado da memria
aps cada uma delas. Resolva a questo utilizando as estratgias Melhor Aloca-
o, Pior Alocao, Primeira Alocao e Prxima Alocao.
a) alocar uma rea para o programa D que possui 6 KB;
b) liberar a rea do programa A;
c) alocar uma rea para o programa E que possui 4 KB.

144) O que swapping e para que utilizada essa tcnica?

145) Por que importante o uso de um loader com relocao dinmica para que a
tcnica de swapping possa ser implementada?

146) Apresente o mapa de bits e o esquema de listas ligadas para o dois layouts de
memria apresentados abaixo:


10 Gerncia de Memria
Sistemas Operacionais Lucilia Ribeiro
102
147) Considere um sistema com swapping no qual os seguintes buracos esto na
memria, na ordem apresentada: 17K, 4K, 20K, 18K, 7K, 9K, 11K e 15K. Consi-
dere, ainda, que foram sucessivamente carregados para a memria os processos
A, B e C de tamanhos 18K, 9K e 14K, respectivamente. Assim sendo, aplique os
algoritmos da Primeira Alocao e o da Prxima Alocao.

148) Um minicomputador usa o sistema buddy para gerenciar sua memria. Inici-
almente, ele tem um bloco de 512K no endereo 0. Demonstre graficamente a si-
tuao da memria aps cada passo e responda ao final de todos os passos: a)
Quantos blocos livres restaram, b) quais os seus tamanhos e c) quais seus ende-
reos.
a) Alocao do Processo A de 12 KB
b) Alocao do Processo B de 74 KB
c) Alocao do Processo C de 30 KB
d) Finalizao do Processo B
e) Alocao do Processo D de 200 KB
f) Finalizao do Processo A
g) Alocao do Processo E de 7 KB








-x-
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
103

Memria Virtual


Nunca deixe o inimigo perceber que voc est sangrando. (James Bond)

11.1 INTRODUO
As implementaes vistas anteriormente no gerenciamento de memria se mostra-
ram muitas vezes ineficientes. Alm disso, o tamanho de um programa e de suas estru-
turas de dados estava limitado ao tamanho da memria disponvel. A utilizao da tcni-
ca de overlay para contornar este problema de difcil implementao na prtica e nem
sempre uma soluo garantida.
Memria Virtual uma tcnica sofisticada e poderosa de gerncia de memria, on-
de as memrias principal e secundria so combinadas, dando ao usurio a iluso de
existir uma memria muito maior que a capacidade real da memria principal. O conceito
de memria virtual fundamenta-se em no vincular o endereamento feito pelo programa
dos endereos fsicos da memria principal. Desta forma, programas e suas estruturas de
dados deixam de estar limitados ao tamanho da memria fsica disponvel, pois podem
possuir endereos associados memria secundria.
Outra vantagem da tcnica de memria virtual permitir um nmero maior de pro-
cessos compartilhando a memria principal, j que apenas partes de cada processo esta-
ro residentes. Isto leva a uma utilizao mais eficiente tambm do processador. Alm
disso, essa tcnica possibilita minimizar o problema da fragmentao da memria princi-
pal.
11.2 ESPAO DE ENDEREAMENTO VIRTUAL
O conceito de memria virtual se aproxima muito da
idia de um vetor existente nas linguagens de alto nvel.
Quando um programa faz referncia a um elemento do
vetor, no h preocupao em saber a posio de mem-
ria daquele dado. O compilador se encarrega de gerar
instrues que implementem esse mecanismo, tornando-
o totalmente transparente ao programador.
A memria virtual utiliza abstrao semelhante, s
que em relao aos endereos dos programas e dados.
Um programa no ambiente de memria virtual no faz
referncia a endereos fsicos de memria (endereos
reais), mas apenas a endereos virtuais. No momento
da execuo de uma instruo, o endereo virtual refe-
renciado traduzido para um endereo fsico, pois o pro-
cessador manipula apenas posies da memria
principal. O mecanismo de traduo do endereo
virtual para o endereo fsico chamado de ma-
peamento.
Como o espao de endereamento virtual no
tem nenhuma relao direta com os endereos no
espao real, um programa pode fazer referncia a
endereos virtuais que estejam fora dos limites da
memria principal, ou seja, os programas e suas
estruturas de dados no esto mais limitados ao
tamanho da memria fsica disponvel. Para que
isso seja possvel, o Sistema Operacional utiliza a
memria secundria como extenso da memria
principal. Quando um programa executado, so-
mente uma parte do seu cdigo fica residente na memria principal, permanecendo o
11
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
104
restante na memria secundria at o momento de ser referenciado. Esta condio per-
mite aumentar o compartilhamento da memria principal entre muitos processos.
No desenvolvimento de aplicaes, a existncia dos endereos virtuais ignorada pe-
lo programador. Os compiladores e linkers se encarregam de gerar o cdigo executvel
em funo do espao de endereamento virtual, e o Sistema Operacional cuida dos deta-
lhes durante sua execuo.
11.3 MAPEAMENTO
O processador apenas executa instrues e referencia dados residentes no espao de
endereamento real; portanto, deve existir um mecanismo que transforme os endereos
virtuais em reais. Esse mecanismo chamado mapeamento.
Nos sistemas atuais, o mapeamento realizado por hardware juntamente com o Sis-
tema Operacional. O dispositivo de hardware responsvel por esta traduo conhecido
como Unidade de Gerenciamento de Memria (Memory Management Unit MMU),
sendo acionado sempre que se faz referncia um endereo virtual. Depois de traduzido, o
endereo real pode ser utilizado pelo processador para acesso memria principal.
Cada processo tem o seu espao de en-
dereamento virtual como se possusse sua
prpria memria. O mecanismo de traduo
se encarrega, ento, de manter tabelas de
mapeamento exclusivas para cada proces-
so, relacionando os endereos virtuais do
processo s suas posies na memria real.
Caso o mapeamento fosse realizado para
cada clula na memria principal, o espao
ocupado pelas tabelas seria to grande
quanto o espao de endereamento virtual
de cada processo, o que inviabilizaria a im-
plementao do mecanismo de memria
virtual. Em funo disso, as tabelas mapei-
am blocos de dados, cujo tamanho determi-
na o nmero de entradas existentes nas ta-
belas de mapeamento. Quanto maior o blo-
co, menos entradas nas tabelas de mapea-
mento e, conseqentemente, tabelas de
mapeamento que ocupam um menor espao
na memria.

Espao de
Endereamento
Virtual
Tamanho
do Bloco
Nmero
de Blocos
Nmero de entradas
na tabela de
mapeamento
2
32
endereos 512 bytes 2
23
2
23

2
32
endereos 4 KB 2
20
2
20

2
64
endereos 4 KB 2
52
2
52

2
64
endereos 64 KB 2
48
2
48


Como veremos a seguir, existem Sistemas Operacionais que trabalham apenas com
blocos de tamanho fixo (paginao), enquanto outros utilizam blocos de tamanho vari-
vel (segmentao). Existe ainda um terceiro tipo de sistema que implementa ambas as
tcnicas (segmentao paginada).
11.4 PAGINAO
a tcnica de gerncia de memria onde o espao de endereamento virtual e o real
so divididos em blocos do mesmo tamanho chamados pginas. A definio do tama-
nho da pgina um fator importante no projeto de sistemas que implementam mem-
ria virtual por paginao. O tamanho da pgina est associado arquitetura do hardware
e varia de acordo com o processador, mas normalmente est entre 512 e 16MB. Pginas
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
105
no espao virtual so denominadas pginas virtuais, enquanto as pginas no espao
real so chamadas de pginas reais, molduras ou frames.
Todo o mapeamento de endereo virtual
em real realizado atravs de tabelas de
pginas. Cada processo possui sua prpria
tabela e cada pgina virtual do processo pos-
sui uma entrada na tabela de pginas
(ETP), com informaes de mapeamento que
permitem ao sistema localizar a pgina real
correspondente.
Nessa tcnica, o endereo virtual forma-
do pelo nmero da pgina virtual (NPV) e
por um deslocamento. O NPV identifica uni-
camente a pgina virtual que contm o ende-
reo, funcionando como um ndice na tabela
de paginas. O deslocamento indica a posio
do endereo virtual em relao ao incio da
pgina na qual se encontra. O endereo fsico
obtido, ento, combinando-se o endereo do
frame, localizado na tabela de pginas, com o
deslocamento, contido no endereo virtual.
Alm da informao sobre a localizao da
pgina virtual, a ETP possui outras informa-
es, como o bit de validade (valid bit) que
indica se uma pgina est ou no na memria
principal.
Sempre que o processo referencia um en-
dereo virtual, a unidade de gerncia de me-
mria verifica, atravs do bit de validade, se a
pgina que contm o endereo referenciado
est ou no na memria principal. Caso
a pgina no esteja na memria, dize-
mos que ocorre uma falta de pgina
(page fault). Neste caso, o sistema
transfere a pgina da memria secund-
ria para a memria principal, realizando
uma operao de E/S conhecida como
page in ou paginao. O nmero de
faltas de pgina gerado por um processo
depende de como o programa foi desen-
volvido, alm da poltica de gerncia de
memria implementada pelo Sistema
Operacional. O nmero de falta de pgi-
nas geradas por cada processo em um
determinado intervalo de tempo defi-
nido como taxa de paginao.
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
106





11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
107
11.4.1 PAGINAO MULTINVEL
Em sistemas que implementam apenas um nvel de paginao, o tamanho das tabe-
las de pginas pode ser um problema. Em uma arquitetura de 32 bits para endereamen-
to e pginas com 4KB por processo, onde cada entrada na tabela de pginas ocupe 4
bytes, a tabela de pginas poderia ter mais de um milho de entradas e ocuparia 4 MB
de espao. Imaginando vrios processos residentes na memria principal, manter tabelas
desse tamanho para cada processo certamente seria de difcil gerenciamento.
Uma boa soluo para contornar o problema a utilizao de tabelas de pginas
multinvel. Com a finalidade de propiciar um melhor entendimento do mencionado con-
ceito, considere-se um sistema computacional com palavra de 32 bits, 4 GB de espao de
endereamento virtual e pginas de tamanho 4K. Nesta configurao, a palavra que che-
ga MMU dividida em trs partes, como indica a Figura:

Ento, baseando-se nos dados do sistema computacional e no layout da palavra de
endereamento mostrado, tem-se o esquema de tabela de pginas multinvel apresenta-
do abaixo:

11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
108
Dessa forma, cada entrada do primeiro nvel gerencia 4 MB de espao e cada entrada
do segundo mapeia 4KB, totalizando 4GB.
A Figura abaixo apresenta um exemplo de funcionamento da MMU para o caso de ta-
belas de pginas multinvel.

Como exemplos prticos de hardware paginao pode-se citar: PDP-11 (paginao de
um nvel), VAX (paginao em dois nveis), SPARC (paginao em trs nveis) e 68030
(paginao em quatro nveis).
11.4.2 POLTICAS DE BUSCA DE PGINAS
Determina quando uma pgina deve ser carregada para a memria. Basicamente, e-
xistem duas estratgias para este propsito: paginao sob demanda e pr-paginao ou
paginao antecipada.
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
109
Na paginao sob demanda, as pginas dos processos so transferidas da memria
secundria para a principal apenas quando so referenciadas. Este mecanismo conve-
niente, na medida em que leva para a memria principal apenas as pginas realmente
necessrias execuo do programa. Desse modo, possvel que partes no executadas
do programa, como rotinas de tratamento de erros, nunca sejam carregadas para a me-
mria.
Na pr-paginao, o sistema carrega para a memria principal, alm da pgina re-
ferenciada, outras pginas que podem ou no ser necessrias ao processo ao longo do
processamento. Se imaginarmos que o programa est armazenado seqencialmente no
disco, existe uma grande economia de tempo em levar um conjunto de pginas da me-
mria secundria, ao contrrio de carregar uma de cada vez. Por outro lado, caso o pro-
cesso no precise das pginas carregadas antecipadamente, o sistema ter perdido tem-
po e ocupado memria principal desnecessariamente.
11.4.3 POLTICAS DE ALOCAO DE PGINAS
Determina quantas molduras (frames) cada processo pode manter na memria prin-
cipal. Existem, basicamente, duas alternativas: alocao fixa e alocao varivel.
Na poltica de alocao fixa, cada processo tem um nmero mximo de molduras
que pode ser utilizado durante a execuo do programa. Caso o nmero de pginas reais
seja insuficiente, uma pgina do processo deve ser descartada para que uma nova seja
carregada. O limite de pginas deve ser definido no momento da criao do processo,
com base no tipo da aplicao que ser executada. Essa informao faz parte do contex-
to de software do processo.
Apesar de sua simplicidade, a poltica de alocao fixa de pgina apresenta dois pro-
blemas. Se o nmero mximo de pginas alocadas for muito pequeno, o processo tende-
r a ter um elevado nmero de falta de pgina, o que pode impactar no desempenho de
todo o sistema. Por outro lado, caso o nmero de pginas seja muito grande, cada pro-
cesso ir ocupar na memria principal um espao maior do que o necessrio, reduzindo o
nmero de processos residentes e o grau de multiprogramao.
Na poltica de alocao varivel, o nmero mximo de pginas pode variar duran-
te sua execuo em funo de sua taxa de paginao e da ocupao da memria princi-
pal. Este mecanismo, apesar de ser mais flexvel, exige que o Sistema Operacional moni-
tore constantemente o comportamento dos processos, gerando maior overhead.
11.4.4 POLTICAS DE SUBSTITUIO DE PGINAS
Em algumas situaes, quando um processo atinge o seu limite de alocao de mol-
duras e necessita alocar novas pginas na memria principal, o Sistema Operacional de-
ve selecionar, dentre as diversas pginas alocadas, qual dever ser liberada. Este meca-
nismo chamado de poltica de substituio de pginas. Uma pgina real, quando
liberada por um processo, est livre para ser utilizada por qualquer outro. A partir dessa
situao, qualquer estratgia de substituio de pginas deve considerar se uma pgina
foi ou no modificada antes de liber-la. Se a pgina tiver sido modificada, o sistema
dever grav-la na memria secundria antes do descarte, preservando seu contedo
para uso em futuras referncias. Este mecanismo conhecido como page out.
O Sistema Operacional consegue identificar as pginas modificadas atravs de um bit
que existe em cada entrada da tabela de pginas, chamado bit de modificao. Sempre
que uma pgina sofre uma alterao, o valor do bit de modificao alterado, indicando
que a pgina foi modificada.
A poltica de substituio de pginas pode ser classificada conforme seu escopo, ou
seja, dentre os processos residentes na memria principal quais so candidatos a ter
pginas realocadas. Em funo deste escopo, pode ser definida como local ou global.
Na poltica de substituio local, apenas as pginas do processo que gerou a falta
de pgina so candidatas a realocao. Os frames dos demais processos no so avalia-
dos para substituio.
J na poltica de substituio global, todas as pginas alocadas na memria prin-
cipal so candidatas a substituio, independente do processo que gerou a falta de pgi-
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
110
na. Na verdade, nem todas as pginas podem ser candidatas a substituio. Algumas
pginas, como as do ncleo do sistema, so marcadas como bloqueadas e no podem
ser realocadas.
11.4.5 WORKING SET
Apesar de suas diversas vantagens, o mecanismo de memria virtual introduz um s-
rio problema: caso os processos tenham na memria principal um nmero insuficiente de
pginas para a execuo do programa, provvel que diversos frames referenciados ao
longo do seu processamento no estejam na memria. Esta situao provoca a ocorrn-
cia de um nmero elevado de falta de pgina e, conseqentemente, inmeras operaes
de E/S. Neste caso, ocorre um problema conhecido como trashing, provocando srias
conseqncias ao desempenho do sistema.
O conceito de working set surgiu com o objetivo de reduzir o problema do trashing e
est relacionado ao princpio da localidade. Existem dois tipos de localidade que so
observados durante a execuo da maioria dos programas. A localidade espacial a
tendncia de que aps uma referncia a uma posio de memria sejam realizadas novas
referncias a endereos prximos. A localidade temporal a tendncia de que aps a
referncia a uma posio de memria esta mesma posio seja novamente referenciada
em um curto intervalo de tempo.
O princpio da localidade significa, na prtica, que o pro-
cessador tender a concentrar suas referncias a um con-
junto de pginas do processo durante um determinado per-
odo de tempo. Imaginando um loop, cujo cdigo ocupe trs
pginas, a tendncia de essas trs pginas serem referenci-
adas diversas vezes muito alta.
A partir da observao do princpio da localidade, Peter
Denning (1968), formulou o modelo de working set. Wor-
king set definido como sendo o conjunto das pginas refe-
renciadas por um processo durante determinado intervalo
de tempo. A figura ilustra que no instante t
2
, o working set
do processo W(t
2
, t), so as pginas referenciadas no in-
tervalo t (t
2
t
1
), isto , as pginas P2, P3 e P8. o intervalo de tempo t denominado
janela do working set. Podemos observar, ento, que o working set de um processo
funo do tempo e do tamanho da janela do working set.

Dentro da janela do working set, o nmero de pginas distintas referenciadas co-
nhecido como tamanho do working set. Na figura so apresentadas as referncias s
pginas de um processo nas janelas t
a
(t
2
t
1
) e t
b
(t
3
t
2
). O working set do processo
no instante t
2
, com a janela t
a
, corresponde s pginas P2, P3, P4 e P5, e o tamanho do
working set igual a quatro pginas. No instante t
3
, com a janela t
b
, o working set cor-
responde s pginas P5 e P6, e o tamanho igual a duas pginas.





O modelo de working set proposto por Denning possibilita prever quais pginas so
necessrias execuo de um programa de forma eficiente. Caso a janela do working set
seja apropriadamente selecionada, em funo da localidade do programa, o Sistema O-
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
111
peracional dever manter as pginas do working set de cada processo residente na me-
mria principal. Considerando que a localidade de um programa varia ao longo da sua
execuo, o tamanho do working set do processo tambm varia, ou seja, o seu limite de
pginas reais deve acompanhar esta variao. O working set refletir a localidade do
programa, reduzindo a taxa de paginao dos processos e evitando, conseqentemente,
o trashing. Na prtica, o modelo de working set serve como base para inmeros algorit-
mos de substituio de pginas, como os apresentados a seguir.
11.4.6 ALGORITMOS DE SUBSTITUIO DE PGINAS
A melhor estratgia de substituio de pginas seria aquela que escolhesse uma mol-
dura que no fosse mais utilizada no futuro ou levasse mais tempo para ser novamente
referenciada. Porm, quanto mais sofisticado o algoritmo, maior overhead para o Siste-
ma Operacional implement-lo. O algoritmo deve tentar manter o working set dos pro-
cessos na memria principal e, ao mesmo tempo, no comprometer o desempenho do
sistema.
a) TIMO: O melhor algoritmo de troca de pginas fcil de descrever, mas impos-
svel de implementar. O algoritmo opera da seguinte maneira: no momento que ocorre
uma falta de pgina, um certo conjunto de pginas est na memria. Uma dessas pgi-
nas ser referenciada em muitas das prximas instrues. Outras pginas no sero re-
ferenciadas antes de 10, 100 ou talvez 1000 instrues. Cada pgina pode ser rotulada
com o nmero de instrues que sero executadas antes que a pgina seja inicialmente
referenciada.
O algoritmo timo simplesmente diz que a pgina com o maior rtulo deve ser remo-
vida, adiando-se o mximo possvel a prxima falta de pgina. (A exemplo das pessoas,
os computadores tambm tendem a adiar o quanto possvel a ocorrncia de eventos de-
sagradveis).
O nico problema com este algoritmo que ele no realizvel. No momento da falta
de pgina, o sistema operacional no tem como saber quando cada uma das pginas
ser referenciada de novo. No mximo podemos executar um programa em um simula-
dor e, mantendo uma lista de todas as pginas referenciadas, implementar o algoritmo
na segunda execuo (usando informaes coletadas na primeira execuo).
b) FIFO: Para ilustrar seu funcionamento, considere um supermercado que tem pra-
teleiras suficientes para armazenar exatamente k produtos diferentes. Certo dia, alguma
indstria introduz um novo tipo de alimento que faz um tremendo sucesso comercial.
Nosso supermercado deve, ento, arranjar um jeitinho para vend-lo, eliminando de su-
as prateleiras algum outro produto.
Uma possibilidade descobrir qual dos produtos este supermercado vem estocando
h mais tempo (isto , algo que ele vem vendendo h 120 anos) e livrar-se dele. De fato,
tal deciso tomada com facilidade, visto que o supermercado mantm uma lista de to-
dos produtos vendidos atualmente, na ordem em que eles entraram pela primeira vez no
estoque. O mais novo est no fim da fila, e o mais velho no incio, devendo ser elimina-
do.
Em algoritmos de substituio de pginas, a mesma idia pode ser aplicada. O siste-
ma operacional mantm uma fila de todas as pginas que esto na memria, com a p-
gina no topo da fila sendo a mais antiga e a do fim da fila a que chegou h menos tem-
po. Na ocorrncia de uma falta de pgina, a pgina do incio deve ser removida, sendo a
nova pgina adicionada ao fim desta fila. Quando aplicado ao problema do supermerca-
do, o algoritmo FIFO tanto pode remover um dos itens mais vendidos, como sal ou man-
teiga, quanto um dos menos vendidos, como sacos de lixo. Quando aplicada aos compu-
tadores, o mesmo problema ocorre. Por isso, o algoritmo FIFO, em sua forma pura, nun-
ca usado. A Figura traz uma simulao simplificada deste algoritmo;
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
112

c) Segunda Chance:
Este algoritmo uma variao do FIFO, a nica diferena que existe um bit R as-
sociado a cada pgina. Se R for 0 a pgina considerada velha e no referenciada, de
modo que ela deve ser removida da memria. Ao passo que, se R for 1, R deve ser
zerado e a pgina colocada no fim da fila (torna-se jovem novamente).Contudo, se todas
as pginas tiverem sido recentemente referenciadas, este algoritmo ir se comportar
exatamente como o FIFO;
d) Relgio:
O algoritmo da segunda chance est sempre movendo pginas do incio para o final
da lista. Ento, com a finalidade de solucionar este problema, desenvolveu-se o algorit-
mo do relgio, que possui uma lista ligada circular e um ponteiro que aponta para a p-
gina mais velha. Quando uma falta de pgina acontece, a pgina que est sendo aponta-
da testada e, caso o seu bit R seja zero, ela deve abandonar a memria, porm se
R for 1, R deve ser zerado e o ponteiro avana para o prximo n da lista. Este pro-
cesso deve se repetir at que seja encontrado um n com R igual a zero;
e) NUR (Not Recently Used):
Para permitir que o sistema operacional colete estatsticas sobre quais pginas esto
sendo usadas e quais no esto, muitos computadores com memria virtual tm 2 bits
associados a cada pgina. Um bit, R ou bit de referncia, ativado pelo hardware sem-
pre que a pgina a ele associada for referenciada. O outro bit, M ou bit de modificao,
ativado pelo hardware quando uma pgina escrita. importante que estes bits sejam
atualizados em qualquer referncia de memria, assim, essencial que eles sejam ativa-
dos pelo hardware. Uma vez que um bit for ativado, ele permanece ativado at que o
sistema operacional o desative (por software).
Os bits R e M podem ser usados para construir um algoritmo de paginao simples
como se segue. Quando um processo iniciado, ambos os bits de pgina para todas es-
tas pginas so declarados 0 pelo sistema operacional. Periodicamente (i.e. a cada inter-
rupo de tempo), o bit R zerado, para distinguir pginas que no foram referenciadas
recentemente daquelas que tenham sido.
Quando uma falta de pgina ocorre, o sistema operacional examina todas as pginas
e as classifica em 4 categorias baseado nos valores correntes de seus bits R e M:
Classe 0: no referenciada, no modificada
Classe 1: no referenciada, modificada
Classe 2: referenciada, no modificada
Classe 3: referenciada, modificada
Ainda que as pginas na classe 1 paream, primeira vista, impossveis de existir,
elas ocorrem quando as pginas da classe 3 tm seu bit R zerado pela interrupo de
tempo.
O algoritmo NRU remove uma pgina aleatria da classe de numerao mais baixa
no vazia. Implcito neste algoritmo que melhor remover uma pgina modificada que
no foi referenciada pelo menos no ltimo clock, que uma pgina no modificada, mas
muito usada.
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
113
As caractersticas principais do NRU que ele fcil de entender, eficiente de se im-
plementar, e gera um desempenho que, embora no timo, geralmente tido como ade-
quado.
f) LRU (Least Recently Used):
Uma boa aproximao para o algoritmo timo baseada em uma observao comum
que as pginas muito usadas nas ltimas instrues, provavelmente o sero nas prxi-
mas instrues. Da mesma forma, pginas que no tm sido usadas por um longo tempo
provavelmente continuaro sem uso. Esta observao sugere um algoritmo realizvel. Na
ocorrncia de uma falta de pgina, este algoritmo ir remover as pginas menos referen-
ciadas nas ltimas instrues, pois ele parte do princpio que as pginas que foram refe-
renciadas nas ltimas instrues continuaro sendo acessadas.
Embora o algoritmo LRU seja teoricamente realizvel, seu custo alto. Para imple-
mentao completa do LRU, necessrio manter uma lista ligada de todas as pginas em
memria, com a pgina mais recentemente usada no incio e a menos recentemente u-
sada no final. A dificuldade que a lista deve ser atualizada em toda referncia de me-
mria. Encontrar a pgina na lista, remov-la de sua posio corrente, e mov-la para o
incio representa um esforo no desprezvel.
Manipular uma lista ligada a toda instruo proibitivo, at mesmo em hardware. En-
tretanto, h outras maneiras de implementar LRU com um hardware especial. Vamos
considerar o caminho mais simples primeiro. Este mtodo requer equipar o hardware
com um contador de 64 bits, C, que automaticamente incrementado aps cada instru-
o. Alm disso, cada entrada na tabela de pginas deve tambm ter um campo grande
o bastante para conter o contador. Aps cada referncia de memria, o corrente valor de
C armazenado na entrada da tabela de pginas para a pgina referenciada. Quando
ocorre uma falta de pgina, o sistema operacional examina todos os contadores na tabe-
la de pginas para achar o menor deles. A pgina correspondente a menos recente-
mente usada.
Agora vejamos um segundo algoritmo LRU, tambm em hardware. Para uma mqui-
na com N page frames, o LRU deve manter uma matriz de N x N bits, inicialmente todos
zero.
Sempre que uma moldura k for referenciada, o hardware coloca todos os bits da linha
k em 1, e depois zera todos os bits da coluna k. Em cada instante, a linha com o menor
valor binrio armazenado ser correspondente pgina usada h mais tempo; aquela
com o prximo valor ser a prxima usada h mais tempo, e assim por diante.
Um exemplo do funcionamento deste algoritmo aparece ilustrada na figura para qua-
tro molduras de pgina e a seguinte ordem de referncias s pginas: 5 0 1 2 3 2 1 0 3 2
3 . Neste exemplo a pgina usada h mais tempo a 1

Considerando-se o funcionamento dos algoritmos de substituio de pginas, poss-
vel pensar, de incio, que quanto maior for o nmero de page frames, menor ser a ocor-
rncia de faltas de pginas durante o perodo de execuo de um processo. Entretanto,
estudos demonstraram que este pensamento nem sempre verdadeiro e este fato ficou
conhecido como anomalia de Belady.
Um exemplo de ocorrncia da mencionada anomalia encontra-se detalhado na Figura
3.16, onde utilizado o algoritmo de substituio de pginas FIFO que, inicialmente,
simulado com 3 page frames e apresenta 9 faltas de pginas. Em seguida, realizada a
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
114
simulao do FIFO com 4 molduras de pginas e observado que o nmero de falta de
pginas se eleva para 10.
Dessa forma, possvel verificar a presena da anomalia de Belady, pois a memria
fsica foi aumentada e o nmero de falta de pginas tambm.

Aps a verificao da anomalia de Belady, muitos estudos foram desenvolvidos e foi
observado que alguns algoritmos no apresentavam tal anomalia e estes foram chama-
dos de algoritmos de pilha.
Obs.: 1) O LRU um algoritmo de pilha e no apresenta a anomalia de Belady; 2) O
FIFO, como foi visto anteriormente, apresenta a anomalia de Belady.
11.5 SEGMENTAO
a tcnica de gerncia de memria
onde o espao de endereamento virtual
dividido em blocos de tamanhos dife-
rentes chamados segmentos. Cada
segmento tem um nmero e um tama-
nho, conforme pode ser observado na
Figura. Nesta tcnica um programa
dividido logicamente em sub-rotinas e
estruturas de dados, que so alocados
em segmentos na memria principal.
Enquanto na tcnica de paginao o
programa dividido em pginas de ta-
manho fixo, sem qualquer ligao com
sua estrutura, na segmentao existe uma relao entre a lgica do programa e sua alo-
cao na memria principal. Normalmente, a definio dos segmentos realizada pelo
compilador, a partir do cdigo fonte do programa, e cada segmento pode representar um
procedimento, uma funo, vetor ou pilha.
Na segmentao, os endereos especificam o nmero do segmento e o deslocamento
dentro do mesmo.

11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
115
Assim, para mapear um endereo virtual composto pelo par <segmento, deslocamen-
to> o hardware de segmentao considera a existncia de uma tabela de segmentos.
Cada entrada da tabela de segmentos possui a base e o limite de cada segmento. A base
contm o endereo fsico de incio do segmento e o limite especifica o seu tamanho.
A figura apresentada a seguir ilustra o funcionamento do mapeamento de um endere-
o virtual em um sistema que utiliza a segmentao.

Os segmentos podem se tornar muito grandes e, s vezes, pode ser impossvel man-
ter todos na memria ao mesmo tempo. Para resolver este problema implementa-se a
paginao em cada um dos segmentos, dando origem, ento, segmentao paginada.
A seguir, um quadro comparando as tcnicas de paginao e segmentao em funo
de suas principais caractersticas:

11.6 SEGMENTAO PAGINADA
a tcnica de gerncia de memria onde o espao de endereamento dividido em
segmentos e, por sua vez, cada segmento dividido em pginas. Esse esquema de ge-
rncia de memria tem o objetivo de oferecer as vantagens de ambas as tcnicas.
Na viso do programador, sua aplicao continua sendo mapeada em segmentos de
tamanhos diferentes, em funo das sub-rotinas e estruturas de dados definidas no pro-
grama. Por outro lado, o sistema trata cada segmento como um conjunto de pginas do
mesmo tamanho, mapeadas por uma tabela de pginas associada ao segmento. Desta
forma, um segmento no precisa estar contguo na memria principal, eliminando o pro-
blema da fragmentao externa encontrado na segmentao pura.


11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
116
11.7 EXERCCIOS

149) Quais os benefcios oferecidos pela tcnica de memria virtual? Como este
conceito permite que um programa e seus dados ultrapassem os limites da me-
mria principal?

150) Explique como um endereo virtual de um processo traduzido para um ende-
reo real na memria principal?

151) Por que o mapeamento deve ser feito em blocos e no sobre clulas individu-
ais?

152) Qual a principal diferena entre os sistemas que implementam paginao e os
que implementam segmentao?

153) Diferencie pgina virtual de pgina real.

154) Para que serve o bit de validade nas tabelas de pgina?

155) Apresente o funcionamento binrio da MMU de uma mquina hipottica para
encontrar a instruo correspondente de: MOVE REG, 700

156) O que page fault , quando ocorre e quem controla a sua ocorrncia? Como
uma elevada taxa de falta de pgina pode comprometer o Sistema Operacional?

157) Descreva como ocorre a fragmentao interna em sistemas que implementam
a paginao.

158) Compare as polticas de busca de pginas apresentadas.

159) Quais as vantagens e desvantagens da poltica de alocao de pginas varivel
comparada alocao fixa?

160) Um sistema com gerncia de memria virtual por paginao possui tamanho
de pgina com 512 posies, espao de endereamento virtual com 512 pginas
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
117
endereadas de 0 a 511 e memria real com 10 pginas numeradas de 0 a 9. o
contedo atual da memria real contm apenas informaes de um nico proces-
so e descrito resumidamente na tabela abaixo:

Endereo Fixo Contedo
1536 Pgina Virtual 34
2048 Pgina Virtual 9
3072 Tabela de Pginas
3584 Pgina Virtual 65
4608 Pgina Virtual 10

a) Considere que a entrada da tabela de pginas contm, alm do endereo do
frame, o nmero da pgina virtual. Mostre o contedo da tabela de pginas desse
processo.
b) Mostre o contedo da tabela de pginas aps a pgina virtual 49 ser carre-
gada na memria a partir do endereo real 0 e a pgina virtual 34 ser substituda
pela pgina virtual 12.
c) Como o formato do endereo virtual deste sistema?
d) Qual endereo fsico est associado ao endereo virtual 4613?

161) Encontre o endereo fsico correspondente aos seguintes endereos virtuais:
a) 67.219.712 b) 113.819.552 c) 545.591.437 d) 416.219.160

0 4 8 k
.
3 0 4 k
4 16 20 k
.
.
240 32 36 k
.
.
1023


.
.
67 8 12 k
. 60 64 k
.
81 40 44 k
0 .
1 94 12 16 k
2 .
. 1023
.
16
. 0 24 28 k
27 .
. .
99 27 36 40 k
. . 52 54 k
130 .
1023 139 48 52 k
.
.
1023


.
240 44 48 k
.
139 20 24 k
.
. 54 60 k
1011 28 32 k
.
1023
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
118

162) Um Sistema Operacional implementa gerncia de memria virtual por pagina-
o, com frames de 2KB. A partir da tabela abaixo, que representa o mapeamento
de pginas de um processo em um determinado instante de tempo, responda:

Pgina Residente Frame
0 Sim 20
1 Sim 40
2 Sim 100
3 Sim 10
4 No 50
5 No 70
6 Sim 1000

163) Um Sistema Operacional implementa gerncia de memria virtual por pagina-
o. Considere endereos virtuais com 16 bits, referenciados por um mesmo pro-
cesso durante sua execuo e sua tabela de pginas abaixo com no mximo 256
entradas. Esto representadas apenas as pginas presentes na memria real. In-
dique para cada endereo virtual a seguir a pgina virtual em que o endereo se
encontra, o respectivo deslocamento e se a pgina se encontra na memria prin-
cipal nesse momento.

Pgina Endereo Fsico
0 8 K
1 4 K
2 24 K
3 0 K
4 16 K
5 12 K
9 20 K
11 28 K

164) Uma memria virtual possui pginas de 1024 endereos, existem 8 pginas
virtuais e 4096 bytes de memria real. A tabela de pginas de um processo est
descrita abaixo. O asterisco indica que a pgina no est na memria principal:

Pgina Virtual Pgina Real
0 3
1 1
2 *
3 *
4 2
5 *
6 0
7 *

165) Porque existe a necessidade de uma poltica de substituio de pginas? Com-
pare as polticas de substituio local e global.

166) Para que serve o bit de modificao nas tabelas de pginas?

167) Como o princpio da localidade viabiliza a implementao da gerncia de me-
mria virtual por paginao?

168) Por que programas no estruturados esto sujeitos a uma alta taxa de pagina-
o?

169) Cite os principais algoritmos de substituio de pginas estudados.
a) (307)
10

b) (2049)
10

c) (2304)
10


a) Faa a lista/faixa de todos os endereos virtuais
que iro causar falta de pgina.
b) Indique o endereo real correspondente aos
seguintes endereos virtuais 0, 1023, 1024, 6500 e
3728.

a) Qual o endereo fsico de uma varivel que ocu-
pa o ltimo byte da pgina 3?
b) Qual o endereo fsico de uma varivel que ocu-
pa o primeiro byte da pgina 2?
c) Qual o endereo fsico de uma varivel que tem
deslocamento 10 na pgina 3?
d) Quais pginas do processo esto na memria?
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
119

170) Explique o funcionamento do algoritmo de substituio de pginas NUR.

171) Explique o funcionamento do algoritmo de substituio de pginas da segunda
chance.

172) Informe a principal desvantagem de se utilizar o algoritmo de substituio de
pginas da segunda chance.

173) Informe a principal vantagem que o algoritmo do relgio possui sobre o da se-
gunda chance.

174) Considere uma mquina com trs molduras de pgina (page frames), as quais
esto inicialmente vazias. Assim sendo, informe quantas faltas de pginas sero
geradas com a utilizao do algoritmo de substituio de pginas FIFO se a se-
qncia de referncia s pginas for: 0, 1, 2, 3, 0, 1, 4, 1, 2, 3, 1 e 4.

175) Considere uma mquina com quatro molduras de pgina (page frames), as
quais esto inicialmente vazias. Assim sendo, informe quantas faltas de pginas
sero geradas com a utilizao do algoritmo de substituio de pginas LRU se a
seqncia de referncia s pginas for: 0, 1, 2, 3, 0, 1, 4, 1, 2, 3, 1, 4 e 5.

176) Considere uma mquina com quatro molduras de pgina (page frames), as
quais esto inicialmente vazias, e uma seqncia de referncia s pginas igual a:
0, 1, 2, 3, 0, 1, 4, 1, 2, 3, 1, 4, 5, 4 e 1. Assim sendo, informe, justificando sua
resposta, quantas faltas de pginas sero geradas com a utilizao de cada um
dos algoritmos de substituio de pginas abaixo relacionados:
a) FIFO b) LRU c) Segunda Chance

177) Qual a principal desvantagem de se utilizar no projeto de um sistema pagi-
nado um tamanho de pgina considerado muito grande? E muito pequeno?

178) O que a anomalia de Belady?

179) Considere um sistema com memria virtual por paginao com endereo vir-
tual com 24 bits e pgina com 2048 endereos. Na tabela de pginas a seguir, de
um processo em determinado instante, o bit de validade 1 indica pgina na me-
mria principal e o bit de modificao 1 indica que a pgina sofreu alterao.

Pgina BV BM End. do Frame
0 1 1 30.720
1 1 0 0
2 1 1 10.240
3 0 1 *
4 0 0 *
5 1 0 6.144





180) Considere um sistema de memria virtual que implemente paginao, onde o
limite de frames por processo igual a trs. Descreva para os itens abaixo, onde
apresentada uma seqncia de referncias a pginas pelo processo, o nmero
total de faltas de pginas para as estratgias de realocao de pginas FIFO e
LRU. Indique qual a mais eficaz para cada item:
a) 1 / 2 / 3 / 1 / 4 / 2 / 5 / 3 / 4 / 3
b) 1 / 2 / 3 / 1 / 4 / 1 / 3 / 2 / 3 / 3

a) Quantos bits possui o campo desloca-
mento do endereo virtual?
b) Qual o nmero mximo de entradas que
a tabela de pginas pode ter?
c) Qual o endereo fsico que ocupa o lti-
mo endereo da pgina 2?
d) Qual o endereo fsico traduzido do en-
dereo virtual (00080A)
16
?
e) Caso ocorra uma falta de pgina e uma
das pginas do processo deva ser descar-
tada, quais pginas poderiam sofrer page
out?
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
120

181) Em um sistema de memria virtual que implementa paginao, as pginas
tm 4 K endereos, a memria principal possui 32 KB e o limite de pginas na
memria principal de 8 pginas. Um programa faz referncia a endereos virtu-
ais situados nas pginas 0, 2, 1, 9, 11, 4, 5, 2, 3, 1 nesta ordem. Aps essa se-
qncia de acessos, a tabela de pginas completa desse programa tem a configu-
rao abaixo. As entradas em branco correspondem a pginas ausentes.

Pgina End. Fsico
0 8 K
1 4 K
2 24 K
3 0 K
4 16 K
5 12 K
6 *
7 *
8 *
9 20 K
10 *
11 28 K
12 *
13 *
14 *
15 *


182) Em um computador, o endereo virtual de 16 bits e as pginas tm tamanho
de 2K. O limite de pginas reais de um processo qualquer de quatro pginas. I-
nicialmente, nenhuma pgina est na memria principal. Um programa faz refe-
rncia a endereos virtuais situados nas pginas 0, 7, 2, 7, 5, 8, 9, 2 e 4, nesta
ordem.
a) Quantos bits do endereo virtual destinam-se ao nmero da pgina? E ao
deslocamento?
b) Ilustre o comportamento da poltica de substituio LRU mostrando, a cada
referncia, quais pginas esto em memria, as faltas de pginas e as pginas
escolhidas para descarte.

183) Um sistema trabalha com gerncia de memria virtual por paginao. Para to-
dos os processos do sistema, o limite de pginas na memria principal igual a
10. Considere um processo que esteja executando um programa e em um deter-
minado instante de tempo (T) a sua tabela de pginas possui o contedo a seguir.
O bit de validade igual a 1 indica pgina na memria principal e o bit de modifica-
o igual a 1 indica que a pgina sofreu alterao.

Nmero
da Pgina
BV BM Endereo do
Frame (Hexa)
0 1 0 3303A5
1 1 0 AA3200
2 1 0 111111
3 1 1 BFDCCA
4 1 0 765BFC
5 1 0 654546
6 1 1 B6B7B0
7 1 1 999950
8 1 0 888BB8
9 0 0 N/A
10 0 0 N/A
a) Qual o tamanho (em bits) e o formato do endereo virtual?

b) O processo faz novas referncias a endereos virtuais situ-
ados nas pginas 5, 15, 12, 8 e 0 nesta ordem. Complete o
quadro a seguir, que ilustra o processamento dessa seqncia
de acessos utilizando a estratgia de remoo FIFO. Mostre o
estado final da tabela de pginas.

Pgina
Referenciada
Pgina
Removida
Falta de Pgina
(Sim / No)
5
15
12
8
0

Responda s perguntas abaixo, conside-
rando que os seguintes eventos ocorre-
ro nos instantes de tempo indicados:
(T + 1): O processo referencia um ende-
reo na pgina 9 com page fault.
(T + 2): O processo referencia um ende-
reo na pgina 1.
(T + 3): O processo referencia um ende-
reo na pgina 10 com page fault.
(T + 4): O processo referencia um ende-
reo na pgina 3 com page fault.
(T + 5): O processo referencia um ende-
reo na pgina 6 com page fault.
11 Memria Virtual
Sistemas Operacionais Lucilia Ribeiro
121


a) Em quais instantes de tempo ocorrem um page out?
b) Em que instantes de tempo o limite de pginas do processo na memria
principal atingido?
c) Caso a poltica de realocao de pginas utilizada seja o FIFO, no instante
(T + 1), qual a pgina que est h mais tempo na memria principal?
d) Como o sistema identifica que no instante de tempo (T + 2) no h ocor-
rncia de falta de pgina?

184) Um sistema possui quatro frames. A tabela abaixo apresenta para cada pgina
o momento da carga, o momento do ltimo acesso, o bit de referncia e o bit de
modificao. Responda:

Frame Carga Referncia BR BM
0 126 279 0 0
1 230 260 1 0
2 120 272 1 1
3 160 280 1 1


185) Considere um processo com limite de pginas reais igual a quatro e um siste-
ma que implemente a poltica de substituio de pginas FIFO. Quantos page
faults ocorrero considerando que as pginas virtuais so referenciadas na se-
guinte ordem: 0172327103. Repita o problema utilizando a poltica LRU e Segun-
da Chance

186) O que trashing?






-x-

a) Qual pagina ser substituda utili-
zando o algoritmo NRU?
b) Qual pagina ser substituda utili-
zando o algoritmo FIFO?
c) Qual pagina ser substituda utili-
zando o algoritmo LRU?
12 Sistema de Arquivos
Sistemas Operacionais Lucilia Ribeiro
122

Sistema de Arquivos


Se o conhecimento pode criar problemas, no atravs
da ignorncia que podemos solucion-los. (Isaac Asimov)

12.1 INTRODUO
O sistema de arquivos a parte do Sistema Operacional mais visvel para os usu-
rios. Por isso o sistema de arquivos deve apresentar uma interface coerente e simples.
Ao mesmo tempo, arquivos so normalmente implementados a partir de discos magnti-
cos e como um acesso a disco demora cerca de 10000 vezes mais tempo do que um a-
cesso memria principal. So necessrias estruturas de dados e algoritmos que otimi-
zem os acessos a disco gerados pela manipulao de arquivos.
importante observar que sistemas de arquivos implementam um recurso em soft-
ware que no existe no hardware. O hardware oferece simplesmente espao em disco,
na forma de setores que podem ser acessados individualmente, em uma ordem aleatria.
O conceito de arquivo, muito mais til que o simples espao em disco, uma abstrao
criada pelo Sistema Operacional. Neste caso, temos o Sistema Operacional criando um
recurso lgico a partir dos recursos fsicos existentes no sistema computacional.
12.2 ARQUIVOS
So recipientes que contm dados. Cada arquivo identificado por um nome e por
uma srie de outros atributos que so mantidos pelo sistema operacional: tipo do conte-
do, tamanho, ltimo acesso, ltima alterao.
O Sistema Operacional suporta diversas operaes sobre arquivos, como criao,
destruio, leitura, alterao, etc. Em geral, essas operaes correspondem a chamadas
de sistema que os programas de usurios podem usar para manipular arquivos.
Existe, na prtica, uma enorme quantidade de diferentes tipos de arquivos, cada tipo
com sua estrutura interna particular. No vivel para o sistema operacional conhecer
todos os tipos de arquivos existentes. Em geral, os sistemas operacionais ignoram a es-
trutura interna dos arquivos.
Para o sistema operacional, cada arquivo corresponde a uma seqncia de bytes, cu-
jo significado conhecido pelo usurio que criou o arquivo. A nica exceo so os arqui-
vos que contm programas executveis. Nesse caso, a estrutura interna definida pelo
prprio sistema operacional, responsvel pela carga do programa para a memria quan-
do esse deve ser executado.
Como o conceito de tipo de arquivo til para os usurios, muitos sistemas operacio-
nais suportam nomes de arquivos onde o tipo indicado. A forma usual acrescentar
uma extenso no nome que identifique o tipo do arquivo em questo.
12.2.1 MTODO DE ACESSO
O acesso a arquivos pode se dar de duas maneiras:
Seqencial: o contedo do arquivo pode ser lido seqencialmente, pedao a pedao.
O acesso seqencial muito usado. Por exemplo, compiladores fazem uma leitura se-
qencial dos programas fontes. A impresso de um arquivo feita tambm a partir de
sua leitura seqencial. Copiar o contedo de um arquivo corresponde a fazer uma leitura
seqencial do arquivo origem e uma escrita seqencial do arquivo destino.
Relativo: muitas aplicaes no podem ser implementadas como acesso seqencial,
pelo menos no com um desempenho aceitvel. Nesse mtodo de acesso, o programa
inclui na chamada de sistema qual a posio do arquivo a ser lida.

12
12 Sistema de Arquivos
Sistemas Operacionais Lucilia Ribeiro
123
12.2.2 IMPLEMENTAO DE ARQUIVOS
A forma bsica de implementar arquivos criar, para cada arquivo no sistema, um
descritor de arquivo. O descritor de arquivo um registro no qual so mantidas as infor-
maes a respeito do arquivo: nome, extenso, tamanho, datas, usurios, etc.
O descritor de arquivo deve ficar em disco e de preferncia na mesma partio do ar-
quivo. S que, se a cada acesso ao descritor, o SO precisasse ler do disco, o sistema de
arquivos teria um pssimo desempenho.
Para tornar mais rpido o acesso aos arquivos, o sistema de arquivos mantm na
memria uma tabela contendo todos os descritores dos arquivos em uso, chamado Tabe-
la dos Descritores de Arquivos Abertos (TDAA). Quando um arquivo entra em uso, o seu
descritor copiado do disco para a memria.
Quando o processo que est sendo executado faz uma chamada para abrir um arqui-
vo (open), o sistema de arquivos realiza as seguintes tarefas:
Localiza no disco o descritor de arquivo cujo nome foi fornecido. Caso o arquivo no
exista, retornado um cdigo de erro, que passado para o processo que chamou o o-
pen. No caso de sucesso, retorna o par <partio, endereo do descritor>.
Verifica se o arquivo solicitado j se encontra aberto. Isso feito atravs de uma
pesquisa na TDAA. Tal pesquisa feita tendo como chave no o nome do arquivo, mas
sim o nmero da partio e o endereo do descritor.
Caso o arquivo no esteja aberto, aloca uma entrada livre na TDAA e copia o descri-
tor do arquivo que est no disco para a entrada alocada na TDAA.
Uma vez que o descritor do arquivo foi copiado para a memria, verifica se o proces-
so em questo tem o direito de abrir o arquivo conforme solicitado. Se no tiver, a en-
trada na TDAA liberada e o open retorna um cdigo de erro.
A partir desse momento, o arquivo est aberto e pode ser acessado. Quando um pro-
cesso realiza a chamada de sistema close, o nmero de processos utilizando o arquivo
em questo decrementado na sua respectiva entrada da TDAA. Quando esse nmero
chega a zero, significa que nenhum processo est usando o arquivo. Nesse caso, o des-
critor do arquivo atualizado em disco e a entrada da TDAA liberada.
As entradas da TDAA armazenam informaes que no variam conforme o processo
que est acessando o arquivo. Por exemplo, o tamanho do arquivo o mesmo, no im-
porta qual processo execute o read ou write. Entretanto, existem informaes diretamen-
te associadas com o processo que acessa o arquivo. Como por exemplo a posio corren-
te no arquivo. Em um dado instante, cada processo deseja acessar uma parte diferente
do arquivo. Da mesma forma, alguns processos podem abrir o arquivo para apenas leitu-
ra, enquanto outros abrem para leitura e escrita.
Essas informaes no podem ser mantidas na TDAA pois, como vrios processos po-
dem acessar o mesmo arquivo, elas possuiro um valor diferente para cada processo. A
soluo criar, para cada processo, uma Tabela de Arquivos Abertos por Processo (TA-
AP). Cada processo possui a sua TAAP. Cada entrada ocupada na TAAP corresponde a um
arquivo aberto pelo processo correspondente. No mnimo, a TAAP contm em cada en-
trada: posio corrente no arquivo, tipo de acesso e apontador para a entrada corres-
pondente na TDAA.
No exemplo, o processo 0 acessa o arquivo B atravs de referncias a entrada 1 da
sua TAAP. Muitos sistemas operacionais chamam esse nmero de handle do arquivo.






12 Sistema de Arquivos
Sistemas Operacionais Lucilia Ribeiro
124

TAAP do Processo
0
TDAA
0
Pos.Cor.12
Leitura
0

0
Arquivo
A
1
Pos.Cor.55
Leitura/Escrita
2

1



2
Arquivo
B



3


TAAP do Processo
1
4
0
Pos.Cor.10
Leitura
2





12.3 MTODOS DE ALOCAO
Para o SO, cada arquivo corresponde a uma seqncia de blocos lgicos, numerados
a partir do zero. preciso mapear os nmeros de blocos lgicos desse arquivo em n-
meros de blocos fsicos. A maneira como o mapeamento realizado depende de como
mantida a informao onde o arquivo est no disco.
12.3.1 ALOCAO CONTGUA

DISCO
Bloco Fsico 0
1
2
3 Bloco 0 Descritor
4 Bloco 1 Incio: 3
5 Bloco 2 Tamanho: 6
6 Bloco 3
7 Bloco 4
8 Bloco 5
9
10
11
12
13

Dos mtodos que objetivam associar blocos de disco a arquivos existentes, a aloca-
o contgua o mais simples. Neste mtodo, os arquivos so armazenados no disco
como um bloco contguo de dados. Assim, para armazenar um arquivo de 70K em um
disco com blocos de 1K seriam necessrios 70 blocos consecutivos.
Vantagens:
12 Sistema de Arquivos
Sistemas Operacionais Lucilia Ribeiro
125
Simplicidade de implementao, pois para se acessar todo o arquivo basta que seja
conhecido o endereo de seu primeiro bloco;
Performance excelente, pois a leitura do arquivo em disco pode acontecer em uma
nica operao.
Desvantagens:
O tamanho mximo do arquivo tem que ser conhecido no momento em que ele for
criado;
Ocasiona fragmentao no disco.

12.3.2 ALOCAO COM LISTA LIGADA
Neste mtodo, cada bloco fsico contm o endereo do prximo bloco fsico alocado a
esse mesmo arquivo.
Vantagens:
Evita-se a perda de espao em disco ocasionado pela fragmentao;
Para se acessar todo o arquivo, basta que seja conhecido o endereo de seu primei-
ro bloco.
Desvantagens:
Acesso randmico lento e difcil de ser implementado
DISCO
Bloco Fsico 0
1 Bloco 3 7
2
3 Bloco 0 8 Descritor
4 Incio: 3
5 Bloco 2 1 Tamanho: 6
6
7 Bloco 4 11
8 Bloco 1 5
9
10
11 Bloco 5 -1
12
13
12.3.3 ALOCAO COM LISTA LIGADA USANDO UM NDICE
Com a finalidade de se eliminar os problemas encontrados no caso anterior, nesse
mtodo, cada arquivo possui uma tabela de ndices. Cada entrada da tabela de ndices
contm o endereo de um dos blocos fsicos que forma o arquivo.
Vantagens:
Facilidade para se implementar um acesso randmico rpido, pois as entradas a se-
rem seguidas encontram-se na memria
Para se acessar todo o arquivo basta que a entrada de diretrio contenha o endere-
o de seu primeiro bloco.
Desvantagens:
12 Sistema de Arquivos
Sistemas Operacionais Lucilia Ribeiro
126
Toda a tabela deve estar na memria durante todo o tempo.
DISCO DESCRITOR
Bloco Fsico 0 Tamanho: 5
1 Bloco 3 ndices: 0 3
2 1 8
3 Bloco 0 2 5
4 3 1
5 Bloco 2 4 7
6 5
7 Bloco 4 6
8 Bloco 1 7
9 8
12.4 GERNCIA DE ESPAO EM DISCO
Existem alguns mtodos que objetivam associar blocos de disco a arquivos exis-
tentes, no entanto, algumas consideraes necessitam ser feitas com relao ao tama-
nho do bloco (unidade de alocao):
Unidade de alocao muito grande: causar desperdcio de espao dentro da unidade
de alocao quando o arquivo for menor que a mesma;
Unidade de alocao muito pequena: um arquivo de tamanho razovel ser composto
de vrias unidades de alocao (blocos) e a sua leitura do disco ser lenta, pois a leitura
de cada um dos blocos leva um certo tempo, devido ao tempo de seek e latncia rota-
cional do disco.
Obs.: Normalmente, temos blocos de tamanhos que variam de 512 bytes at 2KB.
12.5 CONTROLE DE BLOCOS LIVRES
Existem quatro maneiras mais usuais de se realizar o controle dos blocos no uti-
lizados do disco:
12.5.1 MAPA DE BITS
Cada bloco representado por 1 bit. Se o bloco estiver livre, o bit ser 1; se ele
estiver alocado, o bit ser 0.
12.5.2 LISTA ENCADEADA
Outra abordagem encadear os blocos de discos livres, mantendo um ponteiro ao
primeiro bloco livre. Tal bloco contm um ponteiro ao prximo bloco livre, e assim por
diante.
12.5.3 AGRUPAMENTO
Uma modificao da abordagem de lista livre armazenar os endereos de n blo-
cos livres no primeiro bloco livre. Os primeiros n-1 desses blocos esto realmente livres.
O bloco final contm os endereos de outros n blocos livres, e assim por diante.
12.5.4 CONTADORES
Outra abordagem aproveitar o fato de que, em geral, vrios blocos contguos
podem ser alocados ou liberados simultaneamente, sobretudo quando o espao alocado
com o algoritmo de alocao contgua. Portanto, em vez de manter uma lista de n ende-
reos de disco livres, podemos manter o endereo do primeiro bloco livre e o nmero n
de blocos contguos livres que seguem esse primeiro bloco.

12 Sistema de Arquivos
Sistemas Operacionais Lucilia Ribeiro
127
12.6 CONSISTNCIA DO SISTEMA DE ARQUIVOS
importante que aps uma pane no computador, o seu sistema de arquivos possa
permanecer consistente. Para tal, alguns sistemas operacionais rodam um programa uti-
litrio que faz a verificao do sistema de arquivos sempre que alguma pane ocorre. O
UNIX utiliza o fsck e o Windows usa o scandisk.
O referido programa utilitrio realiza, por exemplo, a verificao de consistncia
em blocos.
12.6.1 CONSISTNCIA EM BLOCOS
Neste tipo de verificao, o programa utilitrio constri uma tabela possuindo dois
contadores: um indica quantas vezes um determinado bloco est presente em um arqui-
vo e o outro informa quantas vezes um determinado bloco aparece como estando livre.
Situaes indesejadas possveis:
Um bloco no possui ocorrncia em nenhum arquivo e ele tambm no apare-
ce na lista de blocos livres (bloco perdido).
Soluo: colocar o bloco perdido na lista de blocos livres.
Um bloco aparece duas vezes na lista de blocos livres.
Soluo: reconstruir a lista de blocos livres.
Um bloco est presente em mais de um arquivo.
Soluo: alocar um novo bloco e copiar nele o contedo do bloco problemtico. Em
seguida, fazer um dos arquivos apontar para este novo bloco.
Um bloco est presente em um arquivo e tambm na lista de blocos livres.
Soluo: remover o bloco da lista de blocos livres.
12.7 PERFORMANCE DO SISTEMA DE ARQUIVOS
Sabemos que acessar arquivos localizados em discos uma tarefa que consome
um tempo relevante de um sistema computacional. Sendo assim, o projeto de um siste-
ma de arquivos que possua uma boa performance deve procurar reduzir ao mximo pos-
svel o acesso a discos.
Dentre as tcnicas mais utilizadas para diminuir o acesso ao disco, podemos des-
tacar:
12.7.1 CACHE
A cache corresponde a um agrupamento de blocos que pertencem logicamente ao
disco porm, se encontram armazenados em uma memria de alta velocidade, objeti-
vando, assim, elevar a performance do sistema de arquivos.
Os algoritmos de substituio de pginas estudados (timo, NUR, FIFO, segunda
chance, relgio e LRU) podem ser utilizados para gerenciar a cache.
Problema: Em caso de pane, os blocos que se encontram na cache podem no ser
salvos no disco.
Soluo: UNIX: implementa a chamada SYNC, que faz com que todos os blocos que
sofreram modificaes sejam imediatamente copiados para o disco.
Obs.: Quando o sistema inicializado, um programa em background realiza uma
chamada SYNC a cada 30 segundos.
MS-DOS: implementa a estratgia write-through, na qual a alterao em um bloco
implica em sua cpia imediata para o disco.
12.7.2 LEITURA ANTECIPADA DE BLOCOS
A segunda tcnica para melhorar o desempenho do sistema de arquivos tentar
transferir os blocos para a cache antes que eles sejam necessrios para aumentar a taxa
de acertos.
12 Sistema de Arquivos
Sistemas Operacionais Lucilia Ribeiro
128
Problema: Tal estratgia s funciona para arquivos que estejam sendo lidos seqen-
cialmente. Para um arquivo com acesso aleatrio, a leitura antecipada piora a situao,
fazendo leituras em blocos no usados e removendo blocos potencialmente teis da ca-
che.
Soluo: Para verificar se vale a pena fazer a leitura antecipada, o sistema de arqui-
vos pode monitorar os padres de acesso de cada arquivo aberto. Por exemplo, um bit
associado a cada arquivo indica se o arquivo est em modo de acesso seqencial ou
em um modo de acesso aleatrio.
12.7.3 REDUO DO MOVIMENTO DO BRAO DO DISCO
Esta tcnica objetiva gravar os blocos que sero mais acessados o mais perto
possvel uns dos outros, e ser detalhada no prximo captulo.
12.8 EXERCCIOS

187) Considerando que a unidade de alocao fsica de 2k, o tamanho da mem-
ria secundria de 64k e a primeira unidade de alocao est ocupada com a ta-
bela de arquivos, faa o mapa de bits final depois de todos os passos a seguir. Em
seguida, faa a tabela de contadores, de agrupamento e a lista ligada mostrando
os espaos livres:
a) Escrever o arquivo A de 11k
b) Escrever o arquivo B de 6k
c) Remover o arquivo A
d) Alocar o arquivo C seqencial, de 15k.
e) Escrever o arquivo D com 31K, no seqencial.
f) Remover o arquivo B

188) Qual a diferena entre fragmentao externa e fragmentao interna? De-
monstre graficamente.

189) Relacione a Tabela de Descritores de Arquivos Abertos (TDAA) e a Tabela de
Arquivos Abertos por Processo (TAAP), ilustrando e citando exemplos. Simule si-
tuaes de processos sendo executados e abrindo ou criando arquivos.

190) Cite as vantagens e desvantagens dos mtodos de alocao: contgua, enca-
deada e indexada. Demonstre atravs de figuras.

191) Existem alguns mtodos que objetivam associar blocos de disco a arquivos e-
xistentes. No entanto, algumas consideraes necessitam ser feitas com relao
ao tamanho do bloco. Porque no se deve ter unidades de alocao nem to
grandes nem to pequenas?

192) Considere que o sistema operacional XYZ utiliza contadores para o controle de
seus blocos livres. A lista est reproduzida abaixo. Monte o mapa de bits, agru-
pamento e a lista encadeada partindo dos contadores observados:
26 4
10 7
02 3

193) Partindo agora de um mapa de bits utilizado para controle de blocos livres,
monte uma tabela de agrupamento, considerando n = 5: 11101101 10101000
11001100 11100000 11111011 00100100 00000000
-x-
13 Gerncia de Dispositivos
Sistemas Operacionais Lucilia Ribeiro
129

Gerncia de Dispositivos


A teoria sempre acaba, mais cedo ou mais tarde, assassinada pela experincia.
(Albert Einstein)
13.1 INTRODUO
A Gerncia de Dispositivos de entrada/sada uma das principais e mais complexas
funes de um Sistema Operacional. Sua implementao estruturada atravs de cama-
das. As camadas de mais baixo nvel escondem caractersticas dos dispositivos das ca-
madas superiores, oferecendo uma interface simples e confivel ao usurio e suas aplica-
es.
As camadas so divididas em dois grupos, onde o primeiro grupo visualiza os diversos
tipos de dispositivos do sistema de um modo nico (Fig. a), enquanto o segundo espe-
cfico para cada dispositivo (Fig. b). A maior parte das camadas trabalha de forma inde-
pendente do dispositivo.


13.2 ACESSO AO SUBSISTEMA DE ENTRADA E SADA
O Sistema Operacional deve tornar as operaes de E/S o mais simples possvel para
o usurio e suas aplicaes. Para isso, o sistema possui um conjunto de rotinas, denomi-
nado rotinas de entrada/sada, que faz parte do subsistema de E/S e permite ao usurio
realizar operaes de E/S sem se preocupar com detalhes do dispositivo que est sendo
acessado. Nesse caso, quando um usurio cria um arquivo em disco, no lhe interessa
como a formatao do disco, nem em que trilha ou setor o arquivo ser gravado.
As operaes de E/S devem ser realizadas atravs de chamadas de sistemas que
chamam as rotinas de E/S do ncleo do Sistema Operacional. Dessa forma, possvel
13
13 Gerncia de Dispositivos
Sistemas Operacionais Lucilia Ribeiro
130
escrever um programa que manipule arquivos, este-
jam eles em disquetes, discos rgidos ou CD-Rom,
sem ter que alterar o cdigo para cada tipo de dispo-
sitivo.
A maneira mais simples de ter acesso a um dispo-
sitivo atravs de comandos de leitura/gravao e
chamadas a bibliotecas de rotinas oferecidas por lin-
guagens de alto nvel, como C. A comunicao entre
os comandos de E/S oferecidos pelas linguagens de
programao de alto nvel e as chamadas de sistema
de E/S feita simplesmente atravs de passagem de
parmetros.
Um dos objetivos principais das chamadas de sis-
tema de E/S simplificar a interface entre as aplica-
es e os dispositivos. Com isso, elimina-se a neces-
sidade de duplicao de rotinas idnticas nos diversos
aplicativos, alm de esconder do programador carac-
tersticas especficas associadas programao de
cada dispositivo.
As operaes de E/S podem ser classificadas con-
forme o seu sincronismo. Uma operao dita sncro-
na quando o processo que realizou a operao fica
aguardando no estado de espera pelo seu trmino.
Assncrona quando o processo que realizou a opera-
o no aguarda pelo seu trmino e continua pronto para ser executado. Neste caso, o
sistema deve oferecer algum mecanismo de sinalizao que avise ao processo que a ope-
rao foi terminada.
13.3 SUBSISTEMA DE ENTRADA E SADA
O subsistema de E/S responsvel por realizar as funes comuns a todos os tipos
de dispositivos. a parte do Sistema Operacional que oferece uma interface uniforme
com as camadas superiores.
Independncia de Dispositivos: Cada dispositivo trabalha com unidades de informa-
o de tamanhos diferentes, como caracteres ou blocos. O subsistema de E/S respon-
svel por criar uma unidade lgica de transferncia do dispositivo e repass-la para os
nveis superiores, sem o conhecimento do contedo da informao.
Tratamento de Erros: Normalmente, o tratamento de erros nas operaes de E/S
realizado pelas camadas mais prximas ao hardware. Existem, porm, certos erros que
podem ser tratados e reportados de maneira uniforme pelo sistema de arquivos, inde-
pendentemente do dispositivo. Erros como a gravao em dispositivos de entrada, leitura
em dispositivos de sada e operaes em dispositivos inexistentes podem ser tratados
nesse nvel.
Compartilhamento: Todos os dispositivos de E/S so controlados, com o objetivo de
obter o maior compartilhamento possvel entre os diversos usurios de forma segura e
confivel. Alguns dispositivos podem ser compartilhados simultaneamente, outros, como
a impressora, devem ter acesso exclusivo, e o sistema deve controlar seu compartilha-
mento de forma organizada. responsvel tambm por implementar todo um mecanis-
mo de proteo de acesso aos dispositivos. No momento que o usurio realiza uma ope-
rao de E/S, verificado se o seu processo possui permisso para realizar a operao.
Bufferizao: Essa tcnica permite reduzir o nmero de operaes de E/S, utilizando
uma rea de memria intermediria chamada de buffer. Por exemplo, quando um dado
lido do disco, o sistema traz para a rea de buffer no s o dado solicitado, mas um blo-
co de dados. Caso haja uma solicitao de leitura de um novo dado que pertena ao blo-
co anteriormente lido, no existe a necessidade de uma nova operao de E/S, melho-
rando desta forma a eficincia do sistema.
13 Gerncia de Dispositivos
Sistemas Operacionais Lucilia Ribeiro
131
Interface Padronizada: O subsistema de E/S deve oferecer uma interface padronizada
que permita a incluso de novos drivers sem a necessidade de alterao da camada de
subsistema de E/S.
13.4 DEVICE DRIVERS
Tem como funo implementar a comunicao do subsistema de E/S com os disposi-
tivos, atravs de controladores. Os drivers tratam de aspectos particulares dos dispositi-
vos. Recebem comandos gerais sobre acessos aos dispositivos e traduzem para coman-
dos especficos, que podero ser executados pelos controladores. Alm disso, o driver
pode realizar outras funes, como a inicializao do dispositivo e seu gerenciamento.
Por exemplo, na leitura sncrona de um dado em dis-
co, o driver recebe a solicitao de um determinado blo-
co e informa ao controlador o disco, cilindro, trilha e
setor que o bloco se localiza, iniciando, dessa forma, a
operao. Enquanto se realiza a leitura, o processo que
solicitou a operao colocado no estado de espera at
que o controlador avise a UCP do trmino da operao
atravs de uma interrupo que, por sua vez, ativa no-
vamente o driver. Aps verificar a inexistncia de erros,
o driver transfere as informaes para a camada superi-
or. Com os dados disponveis, o processo pode ser reti-
rado do estado de espera e retornar ao estado de pronto
para continuar seu processamento.





Os drivers fazem parte do ncleo do Sistema Operacional, sendo escritos geralmente
em assembly. Devido ao alto grau de dependncia entre os drivers e o restante do n-
cleo do SO, os fabricantes desenvolvem, para um mesmo dispositivo, diferentes drivers,
um para cada Sistema Operacional. Sempre que um novo dispositivo instalado, o driver
deve ser adicionado ao ncleo do sistema. Nos sistemas mais antigos, a incluso de um
novo driver significava a recompilao do kernel, uma operao complexa e que exigia a
reinicializao do sistema. Atualmente, alguns sistemas permitem a fcil instalao de
novos drivers sem a necessidade de reinicializao.
13.5 CONTROLADORES

So componentes de hardware
responsveis por manipular direta-
mente os dispositivos de E/S. Possu-
em memria e registradores prprios
utilizados na execuo de instrues
enviadas pelo driver. Em operaes
de leitura, o controlador deve arma-
zenar em seu buffer interno uma se-
qncia de bits proveniente do dispo-
sitivo at formar um bloco. Aps veri-
ficar a ocorrncia de erros, o bloco
pode ser transferido para um buffer
de E/S na memria principal. A trans-
13 Gerncia de Dispositivos
Sistemas Operacionais Lucilia Ribeiro
132
ferncia do bloco pode ser realizado pela UCP ou por um controlador de DMA (Acesso
Direto Memria). O uso da tcnica de DMA evita que o processador fique ocupado com
a transferncia do bloco para a memria.
De forma simplificada, uma operao de leitura em disco utilizando DMA teria os se-
guintes passos: 1) A UCP, atravs do driver, inicializa os registradores do controlador de
DMA e, a partir desse ponto, fica livre para realizar outras atividades. 2) O controlador de
DMA solicita ao controlador de disco a transferncia do bloco do disco para o seu buffer
interno. 3) Terminada a transferncia, o controlador de disco verifica a existncia de er-
ros. 4) Caso no haja erros, o controlador de DMA transfere o bloco para o buffer de E/S
na memria principal. 5) Ao trmino da transferncia, o controlador de DMA gera uma
interrupo avisando ao processador que o dado j se encontra na memria principal.
13.6 DISPOSITIVOS DE ENTRADA E SADA
So utilizados para permitir a comunicao entre o sistema computacional e o mundo
externo.
A transferncia de dados pode ocorrer atravs de blocos de informao ou caracteres,
por meio dos controladores dos dispositivos. Em funo da forma com que os dados so
armazenados, os dispositivos de E/S podem ser classificados em duas categorias: estru-
turados e no-estruturados. Os dispositivos estruturados (block devices) caracteri-
zam-se por armazenar informaes em blocos de tamanho fixo, possuindo cada qual um
endereo que pode ser lido ou gravado de forma independente dos demais. Discos mag-
nticos e pticos so exemplos.
Os dispositivos estruturados classificam-se em dispositivos de acesso direto e se-
qencial, em funo da forma com que os blocos so acessados. Acesso direto quan-
do um bloco pode ser recuperado diretamente atravs de um endereo, como por exem-
plo o disco magntico. Acesso seqencial quando, para se acessar um bloco, o dispo-
sitivo deve percorrer sequencialmente os demais blocos at encontr-lo. A fita magntica
um bom exemplo.
Os dispositivos no-estruturados (character devices) so aqueles que enviam ou re-
cebem uma seqncia de caracteres sem estar estruturada no formato de um bloco. A
seqncia de caracteres no enderevel, no permitindo operaes de acesso direto
ao dado. Terminais, impressoras e interfaces de rede so exemplos de tais dispositivos.
13.7 DISCOS RGIDOS
Fisicamente, um dis-
co rgido pode ser visto
como composto por dois
grandes blocos. O pri-
meiro bloco um con-
junto de discos metli-
cos (ao ou alumnio)
superpostos e dispostos
em alturas diferentes
com auxlio de um eixo
central. As duas superf-
cies de cada um desses
discos so recobertas
por uma pelcula magn-
tica na qual os dados
so gravados. No mo-
mento de acesso ao dis-
co, essa estrutura
mantida em uma rota-
o constante (36000
rpm, por exemplo). O
segundo bloco uma
estrutura mecnica que suporta um conjunto de cabeotes, um para cada superfcie de
13 Gerncia de Dispositivos
Sistemas Operacionais Lucilia Ribeiro
133
disco. Essa estrutura capaz de realizar movimentos de vai-e-vem de maneira que os
cabeotes possam ser deslocados desde a borda do disco at o centro. Graas ao movi-
mento de rotao dos discos e ao movimento retilneo dos cabeotes, toda a superfcie
de cada disco pode ser alcanada por seu respectivo cabeote.
Do ponto de vista da organizao lgica, cada superfcie de um disco dividida em
circunferncias concntricas denominadas trilhas. Cada trilha, por sua vez, subdivida
radialmente em unidades chamadas setores. Em geral todos os setores tem o mesmo
tamanho, o qual varia entre 512 a 4096 bytes. O setor constitui a unidade mnima de
leitura e gravao em um disco. O conjunto de trilhas de todas as superfcies do disco
que ficam exatamente mesma distncia do eixo central forma o cilindro. A definio de
trilhas e de setores em um disco chama-se formatao fsica e um procedimento reali-
zado no fabricante.
Outros termos bastante comuns associados a discos rgidos so formatao lgica e
parties. Ambos os conceitos esto mais relacionados com o sistema de arquivos do que
com o disco propriamente dito. A formatao lgica consiste em gravar informaes no
disco de forma que arquivos possam ser escritos, lidos e localizados pelo sistema opera-
cional.
13.7.1 TEMPO DE ACESSO
Para realizar um acesso a um disco rgido, necessrio posicionar o cabeote de
leitura e escrita sob um determinado setor e trilha onde o dado ser lido ou escrito. Con-
siderando-se a organizao de um disco, esse procedimento de posicionamento implica
um certo tempo: o tempo de acesso. O tempo de acesso definido por trs fatores:
Tacesso = tseek + tlatncia + ttransferncia
Tempo de Seek: tempo de locomoo do brao do disco at o cilindro desejado;
Latncia Rotacional: tempo para que o setor desejado passe sob a cabea de leitura;
Tempo de Transferncia: tempo de transferncia propriamente dito.
13.7.2 ENTRELAAMENTO (interleaving)
muito comum o acesso a vrios setores contguos em uma trilha do disco. Su-
ponha que se deseja ler os setores 4 e 5 de uma determinada trilha. O sistema operacio-
nal envia controladora de disco o comando para ler o setor 4. Aps o seek apropriado,
o cabeote passa sobre o setor 4, a transferncia ocorre. Quando o cabeote sai do setor
4, os dados so transferidos do buffer do controlador de disco para a memria, provo-
cando uma interrupo no processador para informar o trmino da leitura do setor 4.
Nesse momento, o processador (via sistema operacional) envia um novo comando de
leitura para o setor 5. um novo seek no ser necessrio, pois o cabeote de leitura j se
encontra sobre o cilindro desejado. Entretanto, devido rotao do disco, o cabeote
provavelmente no se encontra mais no incio do setor 5. Ser necessrio esperar que o
disco d uma volta completa (tempo de latncia) para ento efetuar a leitura do setor 5.
13 Gerncia de Dispositivos
Sistemas Operacionais Lucilia Ribeiro
134
A forma usual para evitar esse problema realizar um entrelaamento dos setores
(interleaving). Essa tcnica numera os setores no mais de forma contgua mas sim com
um espao entre eles. Um disco com fator de entrelaamento ou interleaving 2, significa
que entre o setor k e o setor k+1, existem dois outros setores.
Voltando ao exemplo no qual os setores 4 e 5 so lidos, mas agora considerando
um entrelaamento de 2, observamos que, aps o cabeote sair do setor 4, ele passa por
outros dois setores antes de chegar no incio do setor 5. desta forma, a transferncia dos
dados relativos ao setor 4 pode ser concluda, e o processador tem a chance de mandar o
comando de leitura do setor 5 antes que o cabeote passe sobre o incio do mesmo.
O melhor fator de entrelaamento para uma determinada unidade de disco de-
pende da velocidade do processador, do barramento, do controlador e da velocidade de
rotao do disco.

13.7.3 ESCALONAMENTO DO BRAO DO DISCO
Como j vimos, uma das principais funes do sistema operacional gerenciar os
recursos do sistema de forma eficaz. O problema no caso do disco rgido est em como
ordenar e atender os pedidos de entrada e sada de forma a maximizar o atendimento e
minimizar o tempo em que os processos permanecero bloqueados.
O tempo necessrio a uma operao de entrada e sada com discos fortemente
influenciado pelo tempo de acesso ao disco. O objetivo ento minimizar os movimentos
da cabea de leitura e maximizar o nmero de bytes transferidos (throughtput) de forma
a atender o maior nmero possvel de requisies no menor intervalo de tempo possvel.
Para resolver esse problema, existe um conjunto de algoritmos para realizar a movimen-
tao do cabeote de leitura do disco, alguns tentando otimizar a movimentao entre as
trilhas e outros tentando aproveitar o percurso das cabeas de leitura:

a) 7.3.1. Primeiro a Entrar, Primeiro a Ser Servido (FCFS)
Neste algoritmo, o driver s aceita uma requisio de cada vez. O atendimento s re-
quisies feito considerando-se a ordem de chegada das mesmas.
Requisio : 11, 1, 36, 16, 34, 9 e 12
Deslocamento do Brao: 10, 35, 20, 18, 25 e 3
Total Percorrido: 111

b) 7.3.2. Menor Seek Primeiro (SSF)
Neste algoritmo, a prxima requisio a ser atendida ser aquela que exigir o menor
deslocamento do brao do disco.
Requisio: 11, 1, 36, 16, 34, 9 e 12
Seqncia de acesso: 11, 12, 9, 16, 1, 34 e 36
13 Gerncia de Dispositivos
Sistemas Operacionais Lucilia Ribeiro
135
Deslocamento do Brao: 1, 3, 7, 15, 33 e 2
Total Percorrido: 61
Obs.: O SSF reduz quase metade do movimento do brao do disco, quando
comparado com o FCFS, porm apresenta tendncia em acessar o meio do disco, poden-
do levar um pedido de acesso postergao indefinida.

c) 7.3.3. Algoritmo do Elevador (Scan)
Como o prprio nome do algoritmo sugere, este faz com que todas as requisies em
um determinado sentido sejam atendidas. Depois, as demais requisies em sentido o-
posto sero atendidas.
Requisio: 11, 1, 36, 16, 34, 9 e 12
Seqncia de acesso: 11, 12, 16, 34, 36, 9 e 1
Deslocamento do Brao: 1, 4, 18, 2, 27 e 8
Total Percorrido: 60
d) 7.3.4. Algoritmo C-Scan
O algoritmo Scan, imediatamente aps inverter a varredura, inicia o atendimento pri-
vilegiando os pedidos correspondentes aos cilindros recm servidos, por conseqncia os
pedidos dos cilindros do outro extremo da varredura, feitos anteriormente, devem espe-
rar. O algoritmo C-Scan uma variao do Scan com o objetivo de eliminar esse privil-
gio.
Nesse caso, quando a varredura atinge o ltimo cilindro, o cabeote posicionado no
primeiro cilindro onde reinicia a varredura. Em outros termos, os pedidos so atendidos
em um s sentido da varredura.
Requisio: 11, 1, 36, 16, 34, 9 e 12
Seqncia de acesso: 11, 12, 16, 34, 36, 1 e 9
13 Gerncia de Dispositivos
Sistemas Operacionais Lucilia Ribeiro
136
Deslocamento do Brao: 1, 4, 18, 2, 35 e 8
Total Percorrido: 68
13.8 EXERCCIOS

194) Explique o modelo de camadas aplicado na gerncia de dispositivos

195) Qual a principal finalidade das rotinas de E/S?

196) Quais as diferentes formas de um programa chamar rotinas de E/S?

197) Quais as principais funes do subsistema de E/S?

198) Qual a principal funo de um driver?

199) Por que o sistema de E/S deve criar uma interface padronizada com os device
drivers?

200) Explique o funcionamento da tcnica de DMA e sua principal vantagem.

201) Diferencie os dispositivos de E/S estruturados dos no-estruturados.

202) Desenhe um disco com 21 setores e um fator 3 de entrelaamento. Mostre
agora porque h uma minimizao no tempo de acesso utilizando esse artifcio.

203) As requisies do disco chegam ao driver do disco na seguinte ordem dos ci-
lindros: 10, 22, 20, 2, 40, 6 e 38. Um posicionamento leva 6ms por cilindro movi-
do. Quanto tempo necessrio para os algoritmos FCFS, SSF, Scan e C-Scan,
considerando que o brao est inicialmente no cilindro 20?

204) Monte um quadro mostrando a seqncia do brao, o deslocamento a cada
instante e o deslocamento total percorrido pelo brao utilizando os algoritmos
FCFS, SSF, Scan e C-Scan. Considere as seguintes requisies e que o brao es-
tava em repouso:









-x-

Chegada Requisies
0 1, 6, 20
2 13
3 5, 19
4 7, 9, 15
5 18, 32
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
137

Multimdia


A preciso numrica a prpria alma da cincia.
(Darcy Wentworth Thompson)

14.1 INTRODUO
Filmes, fotos e msica digitais esto se tornando, cada vez mais, meios comuns de
apresentar informao e entretenimento usando um computador. Arquivos de udio e
vdeo podem ser armazenados em um disco e reproduzidos sob demanda. Contudo, suas
caractersticas so muito diferentes dos tradicionais arquivos de texto para os quais fo-
ram projetados os atuais sistemas de arquivos. Como conseqncia, so necessrios no-
vos tipos de sistema de arquivos. Mais ainda: o armazenamento e a reproduo de udio
e vdeo impem novas exigncias ao escalonador e tambm a outras partes do sistema
operacional.
A grande busca do mundo multimdia atualmente, o vdeo sob demanda, que impli-
ca a capacidade de um consumidor em casa, selecionar um filme usando o controle re-
tomo to televisor (ou o mouse) e ter esse filme imediatamente exibido na tela de sua
televiso (ou monitor de seu computador). Para viabilizar o vdeo sob demanda neces-
sria uma infra-estrutura especial. Na Figura vemos duas dessas infra-estruturas. Cada
uma tem trs componentes essenciais: um ou mais servidores de vdeo, uma rede de
distribuio e uma caixa digital (set-top box) em cada casa para decodificar o sinal.
O servidor de vdeo um computador potente que armazena muitos filmes em seu
sistema de arquivos e os reproduz sob demanda. Algumas vezes, computadores de gran-
de porte so usados como servidores de vdeo, pois conectar, digamos, mil discos de
grande capacidade a um computador de grande porte bem menos complicado que co-
nectar mil discos a qualquer tipo de computador pessoal.
A rede de distribuio entre o usurio e o servidor de vdeo deve ser capaz de trans-
mitir dados em altas taxas e em tempo real.

Figura: Vdeo sob demanda usando (a) ADSL e (b) TV a cabo
A ltima pea do sistema a caixa digital, ou set-top box, ou seja, aonde chega o
ADSL ou a TV a cabo. Esse dispositivo , na verdade, um computador normal, com certos
14
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
138
chips especiais para decodificao e descompresso de vdeo. No mnimo, esse tipo de
aparelho contm CPU, RAM, ROM e a interface para ADSL ou TV a cabo.
H duas caractersticas fundamentais que devem ser muito bem entendidas para tra-
tar a multimdia adequadamente:
Usa taxas de dados extremamente altas.
Requer reproduo em tempo real.
As altas taxas de dados resultam da natureza da informao visual e acstica. Os o-
lhos e os ouvidos podem processar quantidades prodigiosas de informaes por segundo
e devem ser alimentados nessa taxa para produzir uma experincia sensorial aceitvel.
As taxas de dados de algumas fontes digitais multimdia e de certos dispositivos comuns
de hardware so apresentados na tabela abaixo. O que se deve observar a alta taxa de
dados que a multimdia requer, a necessidade de compresso e a quantidade necessria
de memria.

Origem Mbps GB/h Dispositivo Mbps
Telefone (PCM) 0,064 0,03 Fast Ethernet 100
Msica em MP3 0,14 0,06 Disco EIDE 133
udio de CD 1,4 0,62 Rede ATM OC-3 156
Filme MPEG-2 (640 x 480) 4 1,76 Disco SCSI UltraWide 320
Cmera digital (720 x 480) 25 11 FireWire 400
TV (640 X 480) 221 97 Gigabit Ethernet 1000
HDTV (1280 X 720) 648 288 Disco SCSI Ultra-160 1280
A segunda exigncia que a multimdia impe sobre um sistema a necessidade da
entrega de dados em tempo real. A poro de vdeo de um filme digital consistem em
alguns quadros por segundo. O sistema NTSC, usado na Amrica do Norte, do Sul (exce-
to o Brasil) e no Japo), executa em 30 quadros/s; j os sistemas PAL e Secam, usados
em grande parte dos demais pases (no Brasil usa-se PAL/M), executam 25 quadros/s.
Os quadros devem ser entregues em intervalos precisos de 33,3 ms ou 40 ms respecti-
vamente, do contrrio a imagem parecer fragmentada.
NTSC a sigla para National Television Standards Comittee (Comisso Nacional para
Padres Televisivos). PAL significa Phase Alternating Line (Linha de Fase Alternativa).
Tecnicamente o melhor dos sistemas.
Nos seres humanos os ouvidos so mais sensveis que os olhos; portanto, uma varia-
o de at mesmo alguns milissegundos na exibio ser notada. A variabilidade nas
taxas de entrega chamada jitter e deve ser estritamente limitada para se obter um
bom desempenho. Observe que jitter no o mesmo que atraso. Se a rede de distribui-
o atrasar uniformemente todos os bits por exatamente 5000 s, o filme comear um
pouco mais tarde, mas ser visto perfeitamente. Por outro lado, se os quadros forem
aleatoriamente atrasados entre 100 e 200 ms, o filme se parecer com filmes antigos.
As propriedades de tempo real necessrias para reproduzir multimdia de maneira a-
ceitvel so muitas vezes representadas por parmetros de qualidade de servio. En-
tre esses parmetros esto largura da banda mdia disponvel, pico de largura de banda,
atraso mnimo e mximo e a probabilidade de perda de bit.
14.2 ARQUIVOS MULTIMDIA
Na maioria dos sistemas, um arquivo de texto comum formado por uma seqncia
de bytes sem qualquer estrutura que o Sistema Operacional possa reconhecer ou com ela
se importar. Com a multimdia, a situao mais complicada. Para comear, vdeo e u-
dio so completamente diferentes. Eles so capturados por dispositivos especficos (chip
de CCD versus microfone), possuem estruturas internas diferentes (o vdeo tem 25-30
quadros/s; o udio tem 44100 amostras/s) e so reproduzidos por dispositivos diferentes
(monitor versus alto-falante).
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
139
Alm disso, a maioria dos filmes almeja uma audincia mundial que, na sua maioria,
no fala ingls. Isso pode ser resolvido de duas maneiras. Para alguns pases produzida
uma trilha sonora adicional com vozes dubladas no idioma local. Em outros pases, u-
sada a trilha sonora original com legendas no idioma local.
14.2.1 CODIFICAO DE UDIO
Uma onda sonora (udio) uma onda acstica (de presso) unidimensional. Quando
uma onda acstica adentra o ouvido, o tmpano vibra fazendo com que os pequenos os-
sos do ouvido interno vibrem tambm, enviando pulsos ao crebro. Esses pulsos so per-
cebidos como sons pelo ouvinte. De uma maneira semelhante, quando uma onda acsti-
ca atinge um microfone, este gera um sinal eltrico representando a amplitude do som
como uma funo do tempo.
As ondas de udio podem ser convertidas para a forma digital por um CAD (Conver-
sor Analgico-Digital). Um CAD toma uma voltagem eltrica como entrada e gera um
nmero binrio como sada.
O intervalo de alcance de freqncia do ouvido humano vai de 20 a 20 mil Hz. O u-
dio dos CDs digital com uma taxa de amostragem de 44100 amostras/s, suficiente para
capturar freqncias de at 22050 Hz. As amostras so, cada uma, de 16 bits e lineares
de acordo com o intervalo de amplitudes.
14.2.2 CODIFICAO DE VDEO
O olho humano funciona do seguinte modo: ao atingir a retina, uma imagem retida
por alguns milissegundos antes de desaparecer. Se uma seqncia de imagens atinge a
retina em 50 ou mais imagens/s, o olho no percebe que esto sendo exibidas imagens
discretas. Todos os sistemas de imagens em movimento baseados em filme ou em vdeo
exploram esse princpio para produzir imagens em movimento.
Para entender sistemas de Vdeo melhor comear com a simples e antiga televiso
em preto-e-branco. Para representar a imagem bidimensional na tela da televiso como
uma funo unidimensional da voltagem em relao ao tempo, a cmera percorre um
feixe de eltrons rapidamente de um lado para outro da imagem e lentamente de cima
para baixo, registrando a intensidade luminosa conforme seu percurso. No final da varre-
dura, chamada de quadro, o feixe volta origem da tela (retrace). Essa intensidade co-
mo uma funo do tempo transmitida e os receptores repetem o processo de varredura
para reconstruir a imagem.
Embora 25 quadros/s sejam suficientes para capturar movimentos suaves, nessa taxa
de quadros muitas pessoas, especialmente as mais idosas, percebero que a imagem
tremula (porque a imagem anterior desaparece da retina antes que uma nova apareces-
se). Em vez de aumentar a taxa de quadros, que requereria usar mais da escassa largura
de banda, foi adotada uma abordagem diferente. Em vez de mostrar as linhas de varre-
dura de cima para baixo, primeiro so exibidas todas as linhas de varredura mpares e
depois so exibidas as linhas pares. Cada um desses meio-quadros chamado de cam-
po. Experimentos mostraram que as pessoas percebem tremulao em 25 quadros/s,
mas no a percebem em 50 campos/s. Essa tcnica chamada de entrelaamento.
Vdeo em cores usa o mesmo padro de varredura do monocromtico, s que, em
vez de mostrar a imagem com um feixe em movimento, so empregados trs feixes mo-
vendo-se em unssono. Um feixe usado para cada uma das trs cores primrias: ver-
melho, verde e azul (RGB Red, Green e Blue).
Para permitir que transmisses em cores sejam vistas em receptores em preto-e-
branco, todos os trs sistemas combinam linearmente os sinais RGB em um sinal de lu-
minncia (brilho) e dois sinais de crominncia (cor). O interessante que o olho
muito mais sensvel ao sinal de luminncia do que aos sinais de crominncia e, portanto,
esses ltimos no precisam ser transmitidos de modo to preciso.
At aqui vimos o vdeo analgico. Agora nos voltaremos para o vdeo digital. A repre-
sentao mais simples de vdeo digital uma seqncia de quadros, cada um constitudo
de uma grade retangular de elementos de imagem ou pixels. Para vdeo em cores, so
usados 8 bits por pixel para cada uma das cores RGB, resultando em 16 milhes de co-
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
140
res, que o suficiente. O olho humano no consegue nem mesmo distinguir essa quanti-
dade de cores, o que dir mais que isso.
Para produzir movimentos suaves, o vdeo digital, assim como o vdeo analgico, de-
ve mostrar pelo menos 25 quadros/s. Contudo, como os bons monitores dos computado-
res atuais percorrem a tela atualizando as imagens armazenadas na RAM de vdeo 75
vezes por segundo ou mais, o entrelaamento no necessrio. Conseqentemente, to-
dos os monitores de computadores usam varredura progressiva. Apenas redesenhar (isto
, renovar) o mesmo quadro trs vezes em uma linha suficiente para eliminar a tremu-
lao.
Em outras palavras, a suavidade do movimento determinada pelo nmero de ima-
gens diferentes por segundo, enquanto a tremulao estipulada pelo nmero de vezes
que a tela desenhada por segundo. Esses dois parmetros so diferentes. Uma imagem
parada desenhada a 20 quadros/s no mostrar movimentos espasmdicos, mas tremu-
lar, pois o quadro desaparecer da retina antes que o prximo aparea. Um filme com
20 quadros diferentes por segundo, cada qual desenhado quatro vezes seguidas a 80 Hz,
no tremer, mas o movimento parecer espasmdico.
A importncia desses dois parmetros torna-se clara quando consideramos a largura
de banda necessria para transmitir vdeo digital por uma rede. Os monitores atuais de
computadores tm, todos, a taxa de aspecto 4:3 e, assim, podem usar aqueles tubos de
imagem baratos e produzidos em massa para o mercado de televisores. Configuraes
comuns so 640 x 480 (VGA), 800 x 600 (SVGA) e 1024 x 768 (XGA). Uma tela XGA
com 24 bits por pixel e 25 quadros/s precisa ser alimentado a 472 Mbps. Dobrar essa
taxa para evitar tremulaes no uma medida interessante. Uma soluo melhor
transmitir 25 quadros/s e fazer com que o computador armazene cada um deles e ento
os desenhe duas vezes. A transmisso de televiso no usa essa estratgia porque os
televisores no tm memria e, alm disso, sinais analgicos no podem ser armazena-
dos em RAM sem que antes sejam convertidos para a forma digital, o que requer um
hardware a mais. Como conseqncia, o entrelaamento necessrio para difuso de
televiso, mas no necessrio para o vdeo digital.
14.3 COMPRESSO DE VDEO
Agora, deve estar bvio que manipular material multimdia sem compresso est fora
de questo esse material muito extenso. A nica esperana que uma compresso
macia seja possvel.
Todos os sistemas de compresso precisam de dois algoritmos: um para comprimir os
dados na origem e outro para descomprimi-los no destino. Na literatura, esses algoritmos
so conhecidos como algoritmos de codificao e decodificao, respectivamente.
Esses algoritmos tm certas assimetrias que precisam ser compreendidas. Primeira-
mente, para muitas aplicaes, um documento multimdia por exemplo, um filme
ser codificado somente uma vez (quando for armazenado no servidor multimdia), mas
ser decodificado milhares de vezes (quando for assistido pelos clientes). Essa assimetria
revela que aceitvel que o algoritmo de codificao seja lento e que exija hardware
sofisticado desde que o algoritmo de decodificao seja rpido e no requeira hardware
sofisticado. Por outro lado, para multimdias em tempo real, como videoconferncia,
inaceitvel uma codificao lenta. A codificao deve ocorrer durante a prpria videocon-
ferncia, em tempo real.
Uma segunda assimetria que o processo codifica/decodifica no reversvel. Ou se-
ja, no processo de compresso, transmisso e ento descompresso de um arquivo, o
usurio espera voltar ao arquivo original, precisamente at o ltimo bit. Para multimdia
essa exigncia no existe. perfeitamente aceitvel que o sinal de vdeo, depois da codi-
ficao e da conseqente decodificao, resulte em um sinal um pouco diferente do ori-
ginal.
14.3.1 O PADRO JPEG
O padro JPEG (Joint Photographic Experts Goup grupo conjunto de especialistas
em fotografia) para compresso de imagens paradas de tons contnuos (por exemplo,
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
141
fotografias) importante para multimdia porque, de modo geral, o padro multimdia
para imagens em movimento, MPEG, apenas a codificao JPEG de cada quadro em
separado, mais alguns aspectos adicionais para compresso entre os quadros e de com-
pensao de movimento.
O passo 1 da codificao de uma imagem em JPEG a preparao do bloco. Para
ser mais especfico, suponha que uma entrada JPEG seja uma imagem RGB de 640 x 480
com 24 bits por pixel, conforme ilustra a Figura (a). Como o uso de luminncia e de cro-
minncia oferece uma melhor compresso, so calculados a luminncia e dois sinais de
crominncia a partir dos valores RGB. Para o NTSC, esses sinais so chamados Y, I e Q,
respectivamente. Para o PAL, so chamados respectivamente de Y, U e V e as frmulas
so diferentes. A seguir usaremos os nomes correspondentes ao NTSC, mas o algoritmo
de compresso o mesmo.
So construdas matrizes separadas para Y, I e Q, cada uma com elementos entre 0 e
255. Em seguida, calculada a mdia de todos os blocos quadrados de 4 pixels nas ma-
trizes I e Q, reduzindo-as a matrizes 320 x 240. Essa reduo apresenta perdas, mas
isso dificilmente captado pela viso, pois o olho responde mais luminncia que cro-
minncia. Mesmo assim, a compresso de dados por um fator de dois. Ento, de cada
elemento de todas as trs matrizes subtrado 128 para que o 0 fique na metade do
intervalo. Por fim, cada matriz dividida em blocos de 8 x 8. A matriz Y tem 4800 blo-
cos; as outras duas tm 1200 blocos cada, conforme mostra a Figura (b).

Figura: (a) Entrada de dados RGB. (b) Depois da preparao do bloco.
O passo 2 do JPEG aplicar uma transformao DCT (Discrete Cosine Transforma-
tion Transformao Discreta de Co-seno) para cada um dos 7200 blocos separadamen-
te. A sada de cada OCT uma matriz 8x8 de coeficientes DCT.
Uma vez terminada a DCT, o JPEG passar ao passo 3, que chamado de quantiza-
o, no qual os coeficientes DCT menos importantes so eliminados. Essa transformao
(com perda) realizada dividindo-se cada um dos coeficientes da matriz DCT 8x8 por um
peso tomado a partir de uma tabela. Se todos os pesos forem 1, a transformao no
far nada. Contudo, se os pesos crescerem abruptamente a partir da origem, as freqn-
cias espaciais mais altas sero rapidamente reduzidas.
Um exemplo desse passo mostrado na Figura abaixo, em que vemos a matriz DCT
inicial, a tabela de quantizao e o resultado obtido dividindo-se cada elemento DCT pelo
elemento correspondente da tabela de quantizao. Os valores na tabela de quantizao
no fazem parte do padro JPEG. Cada aplicao deve fornecer sua tabela de quantiza-
o particular, possibilitando a essa aplicao controlar seu prprio compromisso entre
perda e compresso.
O passo 4 reduz o valor (0,0) de cada bloco (o primeiro no canto superior esquer-
do) substituindo-o pelo tanto que ele difere do elemento correspondente no bloco anteri-
or. Como so valores mdios de seus respectivos blocos, esses elementos devem mudar
lentamente; portanto, assumir os valores diferenciais deve reduzir a maioria deles a pe-
quenos valores. Nenhum diferencial calculado a partir dos demais valores. Os valores
(0,0) so conhecidos como componentes DC; os outros, como componentes AC.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
142

Figura: Computao dos coeficientes DCT quantizados.
O passo 5 lineariza os 64 elementos e aplica a codificao run-length a essa lista de
elementos. Percorrer o bloco da esquerda para a direita e de cima para baixo no agru-
par os zeros; assim, aplicado um padro de varredura em ziguezague, como mostra a
Figura abaixo. Nesse exemplo, o padro ziguezague resulta em 38 zeros consecutivos no
final da matriz. Essa cadeia pode ser reduzida a apenas um contador indicando que h 38
zeros.

Figura: A ordem na qual os valores quantizados so transmitidos
Agora temos uma lista de nmeros que representa a imagem (no espao de trans-
formao). O passo 6 codifica, usando o cdigo de Huffman, para armazenamento ou
transmisso.
O JPEG pode parecer complicado; isso ocorre porque o JPEG complicado. Ainda as-
sim, como produz uma compresso de 20:1, ou at melhor, o JPEG amplamente usado.
Decodificar uma imagem JPEG requer a execuo do algoritmo de compresso de trs
para a frente. O JPEG apresenta uma certa simetria: leva quase o mesmo tempo decodi-
ficar e codificar uma imagem.
14.3.2 O PADRO MPEG
Finalmente, chegamos ao cerne do que nos interessa: os padres MPEG (Motion Pic-
ture Experts Group grupo de especialistas em imagens em movimento). Trata-se dos
principais algoritmos usados para comprimir vdeos e so padres internacionais desde
1993 e adequado para canais de transmisso NTSC ou PAL.
Para cenas em que a cmara e o fundo sejam estacionrios e um ou dois atores mo-
vam-se lentamente, quase todos os pixels sero idnticos de um quadro para o outro.
Nesse caso, apenas subtrair cada frame do anterior e executar o JPEG na diferena fun-
cionaria bem. Contudo, para cenas em que a cmera faz panormicas ou aproximaes,
essa tcnica no se mostra muito adequada. necessrio algum modo de compensar
esse movimento, e exatamente isso que o MPEG faz - na verdade, essa a diferena
entre o MPEG e o JPEG.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
143
A sada do MPEG consiste em trs tipos diferentes de quadros que devem ser proces-
sados pelo programa de visualizao:
I (lntracodificados): Imagens paradas autocontidas codificadas por JPEG.
P (Preditivos): Diferena bloco por bloco com o ltimo quadro.
B (Bidirecionais): Diferenas entre o ltimo e o prximo quadro.
Os quadros I so apenas imagens paradas codificadas pelo JPEG, usando tambm o
sinal de luminncia com resoluo completa e a crominncia com a metade da resoluo
ao longo de cada eixo.
Os quadros P, por outro lado, codificam diferenas entre os quadros. So baseados na
idia de macroblocos, que cobrem 16x16 pixels no espao de luminncia e 8x8 pixels no
espao de crominncia. Um macrobloco codificado buscando-se, nos quadros anterio-
res, um macrobloco idntico ou com alguma pequena diferena.
Um exemplo da utilidade dos quadros P ilustrado na Figura. Nela vemos trs qua-
dros consecutivos que tm o mesmo fundo, mas so diferentes quanto posio de uma
pessoa. Os macroblocos que contm a cena de fundo sero idnticos, mas os macroblo-
cos contendo a pessoa tero suas posies deslocadas por uma quantidade desconhecida
e devero ser acompanhados.

Figura: Trs quadros consecutivos de vdeo
Os quadros B so similares aos quadros P, s que eles permitem que o macrobloco de
referncia esteja em um dos seguintes quadros: anterior ou sucessor, I ou P. Essa liber-
dade adicional permite a compensao melhorada do movimento e til tambm quando
objetos passam pela frente ou por trs de outros objetos. Por exemplo, em um jogo de
beisebol, quando o terceiro jogador da base arremessa a bola para a primeira base, pode
haver alguns quadros nos quais a bola obscurece a cabea do jogador que est na se-
gunda base, ao fundo. No prximo quadro, a cabea pode estar parcialmente visvel,
esquerda da bola, com a aproximao seguinte da cabea derivando-se do quadro poste-
rior, quando a bola, ento, j passou pela cabea. Os quadros B permitem que um qua-
dro seja baseado no quadro futuro.
Para fazer uma codificao do quadro B, o codificador precisa guardar, ao mesmo
tempo, trs quadros codificados na memria: o passado, o atual e o futuro. Para simplifi-
car a decodificao, os quadros devem estar presentes, no fluxo MPEG, em ordem de
dependncia, e no em ordem de exibio. Portanto, mesmo com uma temporizao per-
feita, quando um vdeo visto pela rede, faz-se necessrio um armazenamento tempor-
rio na mquina do usurio para reordenar os quadros e resultar em uma exibio apro-
priada. Por causa dessa diferena entre a ordem de dependncia e a ordem de exibio,
tentar exibir um filme de trs para a frente no funcionar, a no ser que se disponha de
um considervel armazenamento temporrio e que se lance mo de algoritmos comple-
xos.
14.4 ESCALONAMENTO DE PROCESSOS MULTIMDIA
Os sistemas operacionais que suportam multimdia diferem dos tradicionais por trs
aspectos principais: pelo escalonamento de processos, pelo sistema de arquivos e pelo
escalonamento do disco. Iniciaremos, com o escalonamento de processos e prosseguire-
mos com os outros tpicos nas sees subseqentes.
14.4.1 ESCALONAMENTO DE PROCESSOS HOMOGNEOS
O tipo mais simples de servidor de vdeo aquele capaz de suportar a exibio de um
nmero fixo de filmes, todos com a mesma taxa de quadros, a mesma resoluo de v-
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
144
deo, a mesma taxa de dados e outros parmetros. Sob essas circunstncias, um algorit-
mo de escalonamento simples mas efetivo como o seguinte. Para cada filme, h um
nico processo (ou thread) cujo trabalho ler o filme do disco, um quadro por vez, e
ento transmitir esse quadro para o usurio. Como todos os processos so igualmente
importantes, tm a mesma quantidade de trabalho por quadro e bloqueiam quando ter-
minam de processar o quadro atual, o escalonamento por alternncia circular (round-
robin) realiza esse trabalho sem problemas. O nico incremento necessrio aos algorit-
mos comuns de escalonamento o mecanismo de temporizao para assegurar que cada
processo execute na freqncia correta.
Um modo de conseguir a temporizao apropriada ter um relgio-mestre que pulse,
por exemplo, 30 vezes por segundo (para NTSC). A cada pulso, todos os processos so
executados seqencialmente, na mesma ordem. Quando um processo termina seu traba-
lho, ele emite uma chamada ao sistema suspend que libera a CPU at que o relgio-
mestre pulse novamente. Quando isso acontece, todos os processos so reexecutados na
mesma ordem. Enquanto o nmero de processos for pequeno o bastante para que todo o
trabalho possa ser feito em um intervalo de tempo, o escalonamento circular ser sufici-
ente.
14.4.2 ESCALONAMENTO GERAL DE TEMPO REAL
Infelizmente trata-se de um modelo raramente aplicvel realidade. O nmero de
usurios se altera conforme os espectadores vm e vo, os tamanhos dos quadros vari-
am exageradamente por causa da natureza da compresso de vdeo (quadros I so mui-
to maiores que os quadros P ou B) e filmes diferentes podem ter resolues diferentes.
Como conseqncia, processos diferentes podem ser obrigados a executar em freqn-
cias diferentes, com quantidades diferentes de trabalho e com prazos diferentes para
terminar o trabalho.
Essas consideraes levam a um modelo diferente: mltiplos processos competindo
pela CPU, cada qual com seu prprio trabalho e seu prprio prazo. Nos prximos modelos
vamos supor que o sistema saiba a freqncia na qual cada processo deve executar,
quanto trabalho deve fazer e qual seu prazo (deadline). O escalonamento de mltiplos
processos em competio alguns dos quais obrigados a cumprir prazos - chamado de
escalonamento de tempo real.
Um exemplo do tipo de ambiente com o qual um escalonador multimdia de tempo
real trabalha: considere os trs processos, A, B e C, mostrados na Figura. O processo A
executa a cada 30 ms (aproximadamente a taxa do NTSC). Cada quadro requer 10 ms
de tempo de CPU. Na ausncia de competio, o processo executaria nos surtos A1, A2,
A3 etc., cada um iniciando 30 ms depois do anterior. Cada surto da CPU trata um quadro
e tem um prazo: ele deve terminar antes que um prximo inicie.

Figura: Trs processos peridicos, cada um exibindo um filme.
As taxas de quadro e os requisitos de processamento por quadro so diferentes para cada filme.
Tambm ilustrados na Figura esto dois outros processos, B e C. O processo B execu-
ta 25 vezes/s (por exemplo, PAL) e o processo C executa 20 vezes/s (por exemplo, um
fluxo NTSC ou PAL mais lento, destinado a um usurio com uma conexo de baixa largu-
ra de banda para o servidor de vdeo). O tempo de computao por quadro mostrado
como 15 ms e 5 ms para B e C, respectivamente, apenas para tornar o problema de es-
calonamento mais geral do que t-los todos iguais.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
145
O problema do escalonamento agora como escalonar A, B e C assegurando que eles
cumpram seus respectivos prazos. At agora presumimos que h um processo por fluxo.
Na realidade, pode haver dois (ou mais) processos por fluxo - por exemplo, um para o
udio e outro para o vdeo. Eles podem executar em taxas diferentes e podem consumir
quantidades diferentes de tempo de cpu por surto. Adicionar processos de udio ao con-
junto no alteraria o modelo geral, contudo, estamos presumindo que h m processos,
cada um executando em uma freqncia especfica, com uma quantidade fixa de trabalho
necessria para cada surto de CPU.
Algoritmos de tempo real podem ser estticos ou dinmicos. Os algoritmos estticos
atribuem antecipadamente uma prioridade fixa a cada processo e ento fazem o escalo-
namento preemptivo priorizado utilizando essas prioridades. Os algoritmos dinmicos no
apresentam prioridades fixas.
14.4.3 ESCALONAMENTO POR TAXA MONOTNICA
O algoritmo clssico de escalonamento esttico de tempo real para processos pre-
emptivos e peridicos o escalonamento por taxas monotnicas (Rate Monotonic
Scheduling - RMS). Pode ser usado para processos que satisfaam as seguintes condi-
es:
1. Cada processo peridico deve terminar dentro de seu perodo.
2. Nenhum processo dependente de qualquer outro processo.
3. Cada processo precisa da mesma quantidade de tempo de CPU a cada surto.
4. Quaisquer processos no peridicos no podem ter prazos.
5. A preempo de processo ocorre instantaneamente e sem sobrecargas.
O RMS funciona atribuindo a cada processo uma prioridade fixa igual freqncia de
ocorrncia de seu evento de disparo. Por exemplo, um processo que deva executar a
cada 30 ms (33 vezes/s) recebe prioridade 33; outro que tenha de executar a cada 40
ms (25 vezes/s), recebe prioridade 25; e um processo que execute a cada 50 ms (20
vezes/s) recebe prioridade 20. Portanto, as prioridades so lineares em relao fre-
qncia (nmero de vezes/segundo que o processo executa). Por isso, o escalonamento
chamado monotnico. Em tempo de execuo, o escalonador sempre executa o proces-
so que estiver pronto e com a prioridade mais alta, fazendo a preempo do processo em
execuo se for necessrio.

Figura: Um exemplo dos escalonamentos de tempo real RMS e EDF.
A Figura acima mostra como o escalonamento por taxas monotnicas funciona para o
exemplo da Figura anterior. Os processos A, B e C tm prioridades estticas 33, 25 e 20,
respectivamente, o que significa que, se A precisa executar, ele executa, fazendo a pre-
empo de qualquer outro processo que esteja usando a CPU. O processo B pode fazer a
preempo de C, mas no de A. O processo C deve esperar at que a CPU fique ociosa
para que possa executar.
Na Figura, inicialmente todos os trs processos esto prontos para executar. O de
prioridade mais alta, A, escolhido e autorizado a executar at que termine em 15 ms,
conforme ilustrado pela linha RMS. Depois de terminar, B e C executam naquela ordem.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
146
Juntos esses processos levam 30 ms para executar e, assim, quando C terminar ser a
vez de A executar novamente. Essa rotao prossegue at que o sistema fique ocioso em
t = 70.
Em t = 80, B fica pronto e executa. Contudo, em t = 90, um processo de prioridade
mais alta, A, fica pronto e ento faz a preempo de B e executa at que termine, em t =
100. Nesse ponto, o sistema pode escolher entre terminar B ou iniciar C e assim ele es-
colhe o processo de prioridade mais alta, ou seja, B.
14.4.4 ESCALONAMENTO PRAZO MAIS CURTO PRIMEIRO
Outro algoritmo popular de escalonamento de tempo real o do prazo mais curto
primeiro (Earliest Deadline First - EDF). O EDF um algoritmo dinmico que no requer
que os processos sejam peridicos, como no algoritmo do RMS. Tambm no exige o
mesmo tempo de execuo por surto de CPU, como o RMS. Se precisar de tempo de
CPU, o processo anunciar sua presena e seu prazo. O escalonador tem uma lista de
processos executveis, ordenados por vencimentos de prazo. O algoritmo executa o pri-
meiro processo da lista, aquele cujo prazo o mais curto (mais prximo de vencer). Se
um novo processo tornar-se pronto, o sistema verificar se seu prazo vence antes do
prazo do processo em execuo. Em caso afirmativo, o novo processo faz a preempo
do que estiver executando.
Um exemplo de EDF visto tambm na Figura anterior. Inicialmente, todos os trs
processos esto prontos. Eles so executados na ordem de vencimento de seus prazos. A
deve terminar em t = 30, B deve terminar em t = 40 e C deve terminar em t = 50; por-
tanto, o prazo de A vence antes e assim executa antes. At t = 90, as escolhas so as
mesmas do RMS. Em t = 90, A torna-se pronto novamente e o vencimento de seu prazo
t = 120 - o mesmo vencimento de B. O escalonador poderia legitimamente escolher um
ou outro para executar, mas, na prtica, a preempo de B apresenta algum custo asso-
ciado. melhor, portanto, deixar B executando.
Para dissipar a idia de que o RMS e o EDF sempre chegam aos mesmos resultados,
estudemos um outro exemplo, mostrado na Figura abaixo. Nele, os perodos de A, B e C
so os mesmos de antes, mas agora A precisa de 15 ms de tempo de cpu por surto, e
no de apenas 10 ms.

Figura: Outro exemplo de escalonamento em tempo real RMS e EDF.
Para o RMS, as prioridades dos trs processos ainda so 33, 25 e 20, j que somente
o perodo o que interessa, e no o tempo de execuo. Nesse caso, B1 no termina
antes de t = 30, instante em que A est pronto para executar novamente. No momento
em que A termina, em t = 45, B est pronto de novo e, portanto, com prioridade mais
alta que C, B executa e o prazo de C vence. O RMS falha.
Agora vejamos como o EDF lida com esse problema. Em t = 30, h uma disputa entre
A2 e C1. Como o prazo de C1 vence em 50 e o prazo de A2 vence em 60, C escalona-
do. Isso diferente do que ocorre no RMS, em que A ganha porque tem a prioridade
mais alta.
Em t = 90, A fica pronto pela quarta vez. O vencimento do prazo de A igual ao do
processo em execuo (120), portanto o escalonador deve escolher entre fazer ou no a
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
147
preempo. Assim como antes, se no for necessrio, melhor no fazer a preempo;
desse modo, B3 autorizado a terminar.
14.5 PARADIGMAS DE SISTEMAS DE ARQUIVOS MULTIMDIA
Agora que cobrimos o escalonamento de processos em sistemas multimdia, prosse-
guiremos estudando os sistemas de arquivos multimdia (esses sistemas de arquivos u-
sam um paradigma diferente dos sistemas de arquivos tradicionais). Para ter acesso a
um arquivo, um processo emite, antes de tudo, uma chamada ao sistema open. Se no
houver problemas, ser dada uma espcie de identificador a quem chamou. Nesse ponto,
o processo pode emitir uma chamada ao sistema read, fornecendo como parmetros o
identificador, o endereo do buffer e o nmero de bytes. O sistema operacional retorna
ento os dados requisitados no buffer. Podem ser feitas outras chamadas read, at que o
processo termine. ento o momento de chamar close para fechar o arquivo e devolver
seus recursos.
Esse modelo no funciona bem para multimdia por causa da necessidade de um
comportamento de tempo real. Funciona ainda pior para mostrar arquivos multimdia que
saem de um servidor remoto de vdeo. Um problema que o usurio deve fazer as cha-
madas read precisamente espaadas no tempo. Um segundo problema que o servidor
de vdeo deve ser capaz de fornecer os blocos de dados sem atraso - algo difcil de se
conseguir quando as requisies vierem de modo no planejado e no houver recursos
reservados antecipadamente.
Para resolver esses problemas, os servidores de arquivos multimdia usam um para-
digma completamente diferente: eles agem como se fossem aparelhos de videocassete
(Video Cassete Recorders - VCR). Para ler um arquivo multimdia, um processo-usurio
emite uma chamada ao sistema start, especificando o arquivo a ser lido e vrios outros
parmetros - por exemplo, quais trilhas de udio e de legenda devem ser usadas. O ser-
vidor de vdeo comea, ento, a enviar os quadros na taxa de quadros requisitada. Fica
para o usurio trat-los na taxa que os quadros vierem. Se o usurio ficar cansado do
filme, a chamada ao sistema stop terminar o fluxo. Servidores de arquivos com esse
modelo de fluxo so chamados de servidores push (pois eles empurram os dados para
o usurio) e so diferentes dos tradicionais servidores pull, nos quais o usurio deve
puxar os dados, um bloco de cada vez, chamando repetidamente o read para obter um
bloco aps o outro. A diferena entre esses dois modelos ilustrada na Figura:

Figura: (a) Um servidor pull. (b) Um servidor push.
14.5.1 FUNES DE CONTROLE VCR
A maioria dos servidores de vdeo implementa tambm funes-padro de controle
VCR, inclusive pausa, avano rpido e rebobinamento. A pausa bastante clara. O usu-
rio envia uma mensagem para o servidor de vdeo pedindo que pare. Nesse caso, o que o
servidor deve fazer lembrar qual o prximo quadro. Quando o usurio pedir para que
o servidor prossiga, ele apenas continuar de onde parou.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
148
Contudo, h uma complicao. Para obter um desempenho aceitvel, o servidor pode
reservar recursos como largura de banda de disco e buffers de memria para cada fluxo
de sada. Continuar retendo esses recursos enquanto um filme est em pausa desperdia
recursos, especialmente se o usurio demorar. Claro que os recursos podem ser facil-
mente liberados quando estiverem em pausa, mas, se o usurio tentar continuar, haver
o perigo de no poder mais readquiri-los.
O rebobinamento bem fcil. Tudo o que o servidor precisa fazer lembrar que o
prximo quadro a ser enviado o 0. O que poderia ser mais simples? Contudo, o avano
e o retrocesso rpidos (isto , reproduzir enquanto rebobina) so mais complicados. Se
no fosse pela compresso, uma maneira de avanar em dez vezes a velocidade normal
seria apenas exibir um quadro a cada dez. Para avanar em 20 vezes seria preciso mos-
trar um quadro a cada 20. Na verdade, sem compresso, avanar ou retroceder em
qualquer velocidade fcil. Para reproduzir em k vezes a velocidade normal, s mos-
trar um quadro a cada k quadros. Para fazer o retrocesso rpido k vezes a velocidade
normal s fazer a mesma coisa na outra direo. Esse sistema funciona igualmente
bem, tanto para os servidores pull quanto para os servidores push.
A compresso complica o movimento rpido para frente ou para trs. Com uma fita
de vdeo digital, para a qual cada quadro comprimido independentemente de todos os
outros, possvel usar essa estratgia, desde que o quadro necessrio possa ser encon-
trado rapidamente. Como a compresso de um quadro depende de seu contedo, cada
quadro tem um tamanho diferente; portanto, saltar k quadros no arquivo no pode ser
feito por um clculo numrico. Alm disso, a compresso de udio independente da
compresso de vdeo; assim, para cada quadro de vdeo exibido no modo de alta veloci-
dade deve ser encontrado tambm o quadro correto de udio (a menos que o som seja
desligado quando estiver reproduzindo em um modo mais rpido que o normal). Portan-
to, o avano rpido de um arquivo de vdeo digital requer um ndice que permita que os
quadros sejam localizados rapidamente. Isso at na teoria bastante complicado.
14.5.2 VDEO QUASE SOB DEMANDA
Ter k usurios assistindo ao mesmo filme impe, essencialmente, a mesma carga so-
bre o servidor que t-los assistindo a k filmes diferentes. Contudo, com uma pequena
mudana no modelo so possveis grandes ganhos de desempenho. O problema do vdeo
sob demanda que os usurios podem comear o fluxo de um novo filme em um mo-
mento arbitrrio; portanto, se houver cem usurios, todos comeando a ver algum novo
filme por volta das 20h, h a possibilidade de que nunca dois usurios iniciem exatamen-
te no mesmo instante - assim, eles no podem compartilhar um fluxo. A alterao que
possibilita a otimizao consiste em informar a todos os usurios que os filmes comeam
somente na hora cheia e depois de cada cinco minutos, por exemplo. Portanto, se um
usurio quiser ver um filme s 20h02, ele ter de esperar at as 20h05.
A vantagem que, para um filme de duas horas, so necessrios somente 24 fluxos,
no importando o nmero de consumidores. Conforme ilustra a Figura a seguir, o primei-
ro fluxo comea s 20h. s 20h05, quando o primeiro fluxo estiver no quadro 9000, o
fluxo 2 se iniciar. s 20h10, quando o primeiro fluxo estiver no quadro 18000 e o fluxo
2 no quadro 9000, o fluxo 3 comear e assim ir at o fluxo 24, que se inicia s 21h55.
s 22h, o fluxo 1 termina e comea com o quadro 0. Esse esquema chamado de vdeo
quase sob demanda (near video on demand) porque o vdeo no comea no momento
da requisio, mas um pouco depois dela.
De certo modo, o vdeo sob demanda como usar um txi: voc chama e ele vem. O
vdeo quase sob demanda como usar um nibus: h uma escala fixa de horrios e
preciso esperar pelo prximo horrio. Mas o trnsito em massa s faz sentido se houver
a massa. No centro das cidades, um nibus que passe a cada cinco minutos pode contar
com pelo menos alguns passageiros. Um nibus viajando pelas estradas do interior pode
estar quase sempre vazio. Da mesma maneira, o lanamento do ltimo filme do David
Linch pode atrair clientes suficientes para garantir o incio de um novo fluxo a cada cinco
minutos; em contrapartida, em relao a E o Vento Levou talvez seja melhor simples-
mente oferec-lo sob demanda.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
149

Figura: O vdeo quase sob demanda tem um novo fluxo iniciando em intervalos regulares;
no exemplo dado, a cada cinco minutos (9000 quadros)
No vdeo quase sob demanda, os usurios no tm controles VCR. Nenhum usurio
pode dar uma pausa no filme para uma excurso cozinha. O melhor que pode ser feito
, quando retornar da cozinha, entrar em um fluxo que tenha comeado depois, por isso
alguns minutos do vdeo estaro repetidos.
14.6 ALOCAO DE ARQUIVOS EM DISCOS
Os arquivos multimdia so bastante grandes e com freqncia so escritos somente
uma vez, mas lidos muitas vezes e em geral sofrem acessos seqenciais. Suas reprodu-
es devem cumprir critrios estritos de qualidade de servio. Juntas, essas exigncias
sugerem esquemas de sistemas de arquivos diferentes dos usados pelos sistemas opera-
cionais tradicionais. Discutiremos alguns desses assuntos a seguir, partindo do contexto
de um nico disco e ento para mltiplos discos.
14.6.1 ALOCAO DE UM ARQUIVO EM UM NICO DISCO
A exigncia mais importante que os dados, na forma de fluxos, possam fluir para a
rede ou para um dispositivo de sada, na velocidade necessria e sem jitter. Por isso, ter
vrias buscas em disco (seeks) durante um quadro altamente indesejvel. Um modo de
eliminar buscas intra-arquivos em servidores de vdeo usar arquivos contguos. Nor-
malmente, arquivos contguos no funcionam bem, mas em servidores de vdeo, que so
carregados antecipadamente com filmes que no mudaro mais, isso pode funcionar.
No entanto, uma complicao a presena de vdeo, udio e texto. Mesmo que esses
elementos estejam armazenados separadamente em arquivos contguos, ser necessria
uma busca para ir do arquivo de vdeo para um arquivo de udio e de l para um arquivo
de texto se este ltimo for necessrio. Isso sugere um segundo arranjo possvel, com o
vdeo, o udio e o texto intercalados conforme mostra a Figura, mas todo o arquivo ainda
contguo. Na figura, o vdeo para o quadro 1 seguido diretamente pelas diversas tri-
lhas de udio do quadro 1 e ento pelas vrias trilhas de texto do quadro 1. Dependendo
de quantas trilhas de udio e texto houver, poder ser mais simples apenas ler todas as
partes de cada quadro em uma nica operao de leitura de disco e transmitir somente
as partes que o usurio precisa.
Essa organizao requer uma E/S adicional de disco para leitura de udio e texto que
no sejam desejados e um espao extra de buffer em memria para armazen-los. Con-
tudo, ela elimina todas as buscas (em um sistema monousurio) e no requer custo ex-
tra para saber onde no disco est localizado determinado quadro, pois todo o filme um
arquivo contguo. O acesso aleatrio impossvel com esse esquema, mas, como ele no
necessrio, sua perda no grave. Da mesma maneira, o 'avano rpido' e o 'retroces-
so rpido' tomam-se impossveis sem o acrscimo de estruturas de dados e complexida-
de.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
150

Figura: Intercalao de vdeo, udio e texto em um nico arquivo contnuo por filme
A vantagem de um filme inteiro como um nico arquivo contguo perdida em um
servidor de vdeo com vrios fluxos concorrentes de sada, pois, depois de ler um quadro
de um filme, os quadros de muitos outros filmes tero de ser lidos antes do primeiro ser
lido novamente. Alm disso, difcil - e nada til implementar um sistema em que os
filmes estejam sendo escritos e lidos (por exemplo, um sistema usado para produo ou
edio de vdeo) usando enormes arquivos contguos.
14.6.2 DUAS ESTRATGIAS ALTERNATIVAS DE ORGANIZAO DE ARQUIVOS
Essas observaes levam a duas outras organizaes de alocao de arquivos multi-
mdia. A primeira dessas organizaes, o modelo de bloco pequeno, ilustrada na Figura
(a). Nela, o tamanho do bloco de disco consideravelmente menor que o tamanho mdio
de um quadro. A idia ter uma estrutura de dados - o ndice de quadros - por filme
com uma entrada para cada quadro apontando para seu incio. Cada quadro constitudo
de todas as trilhas de vdeo, udio e texto daquele quadro, dispostas em blocos de discos
contguos, conforme ilustrado. Dessa maneira, a leitura de k quadros consiste em encon-
trar a k entrada no ndice de quadros e ento ler o quadro inteiro em uma operao de
disco. Como diferentes quadros tm tamanhos diferentes, necessrio que o tamanho
do quadro (em blocos) esteja no ndice, mas, mesmo que os blocos de disco fossem de 1
KB, um campo de 8 bits conseguiria tratar um quadro de at 255 KB que o suficiente
para um quadro NTSC sem compresso e at mesmo com muitas trilhas de udio.

Figura: Armazenamento no-contguo de filmes. (a) Pequenos blocos de disco. (b) Grandes blocos de disco.
Outra maneira de armazenar o filme usar um bloco de disco grande (por exemplo,
256 KB) e colocar vrios quadros em cada bloco, conforme ilustra a Figura (b). Ainda
necessrio um ndice, mas agora trata-se de um ndice de blocos e no de um ndice de
quadros. Em geral, um bloco no conter um nmero inteiro de quadros; portanto, algo
deve ser feito para lidar com esse problema. Existem duas opes.
Na primeira opo, que ilustrada na Figura (b), se o prximo quadro no couber no
bloco atual, deixa-se o restante do bloco vazio. O espao desperdiado a fragmentao
interna, a mesma dos sistemas de memria virtual com pginas de tamanho fixo. Por
outro lado, nunca ser necessrio fazer uma busca no meio de um quadro.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
151
A outra opo preencher cada bloco at o final, dividindo-se os quadros entre os
blocos. Essa opo gera necessidade de buscas no meio dos quadros, o que pode preju-
dicar o desempenho, mas economiza espao em disco, eliminando a fragmentao inter-
na.
14.6.3 ALOCAO DE ARQUIVOS PARA VDEO QUASE SOB DEMANDA
At agora temos estudado estratgias de alocao para vdeo sob demanda. Para v-
deo quase sob demanda, h uma estratgia diferente de alocao que mais eficiente.
Lembre-se de que o mesmo filme est saindo em fluxos de vrios estgios. Mesmo que
um filme seja armazenado como um arquivo contguo, necessrio buscar cada fluxo.
Chen e Thapar (1997) inventaram uma estratgia de alocao de arquivos para eliminar
quase todas as buscas. Sua aplicao ilustrada na Figura abaixo, para um filme sendo
reproduzido em 30 quadros/s com um novo fluxo se iniciando a cada cinco minutos. Com
esses parmetros, so necessrios 24 fluxos concorrentes para um filme de duas horas.

Figura: Alocao tima de quadros para vdeo quase sob demanda.
Nessa alocao, conjuntos de 24 quadros so concatenados e escritos no disco como
um nico registro. Eles podem tambm ser lidos em uma s operao de leitura. Consi-
dere o instante em que o fluxo 24 tenha acabado de comear. O quadro 0 ser necess-
rio. O fluxo 23, que comeou cinco minutos antes, precisar do quadro 9000. O fluxo 22
precisar do quadro 18000 e assim por diante at o fluxo 0, que precisar do quadro
207000. Dispondo esses quadros consecutivamente em uma trilha de disco, o servidor
pode satisfazer todos os 24 fluxos em ordem inversa somente com uma busca (para o
quadro 0). Claro que os quadros podem estar em ordem inversa no disco se houver al-
gum motivo para servir os fluxos em ordem ascendente. Depois de servir o ltimo fluxo,
o brao do disco pode mover-se para a trilha 2 e preparar todo o servio novamente.
Esse esquema no exige que todo o arquivo seja contguo, mas ainda permite um bom
desempenho para vrios fluxos simultneos.
14.7 EXERCCIOS

205) Filmes, fotos e msica digitais esto se tornando, cada vez mais, meios co-
muns de apresentar informao e entretenimento usando um computador. Para
isso so utilizados arquivos de udio e vdeo, contudo suas caractersticas so
muito diferentes dos tradicionais arquivos de texto. Por qu?

206) Para viabilizar o vdeo sob demanda necessria uma infra-estrutura especial.
Quais os componentes dessa infra-estrutura?

207) H duas caractersticas fundamentais que devem ser muito bem entendidas
para trabalhar a multimdia adequadamente: (a) taxa de dados extremamente al-
tas e (b) reproduo em tempo real. Fale sobre tais caractersticas.

208) Diferencie NTSC de PAL/M.

209) O que jitter?

14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
152
210) Fale brevemente sobre a codificao de udio.

211) Vdeo em cores usa o mesmo padro de varredura do monocromtico, s que,
em vez de mostrar a imagem com um feixe em movimento, so empregados trs
feixes. Fale sobre isso.

212) Porque aceitvel que o algoritmo de codificao de vdeo seja lento e que e-
xija hardware sofisticado?

213) Descreva os passos para compresso JPEG.

214) Simule um escalonamento geral de tempo real, com os seguintes processos:

PROCESSO Taxa de Execuo Tcpu/quadro
A NTSC 10 ms
B PAL 15 ms
C NTSC 5 ms
D 20 vezes/s 20 ms

215) O algoritmo RMS pode ser usado para processo que satisfaam quais condi-
es?

216) Simule os escalonamentos RMS e EDF para os seguintes quadros:

PROCESSO Taxa de Execuo Tcpu/quadro
A NTSC 10 ms
B PAL 15 ms
C 10 vezes/s 5 ms
D 20 vezes/s 20 ms

PROCESSO Taxa de Execuo Tcpu/quadro
A 33 vezes/s 20 ms
B 25 vezes/s 15 ms
C 30 vezes/s 25 ms
D 20 vezes/s 30 ms

217) Diferencie Servidores Push de Servidores Pull

218) A maioria dos servidores de vdeo implementa tambm funes-padro de
controle VCR, inclusive pausa, avano rpido e rebobinamento. Descreva o fun-
cionamento dessas trs funes.

219) Considere um padro NTSC utilizando o vdeo quase sob demanda, com a
transmisso iniciando a partir das 19:00 h e a cada 10 minutos. Quantos fluxos
sero necessrios para toda a transmisso? E para o padro PAL/M?

220) Fale sobre as duas estratgias alternativas de organizao de arquivos: o mo-
delo do bloco pequeno e o do bloco grande.



-x-

14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
153

Segurana


intelecto fraco, passarinho, eu gritei,
ou um verme duro nas suas entranhas to pequenas?
(W. S. Gilbert)

15.1 INTRODUO
medida que a computao pessoal e o e-business se expandem, organizaes ar-
mazenam informaes altamente confidenciais em seus computadores e transmitem in-
formaes sensveis pela Internet. Consumidores apresentam nmeros de cartes de
crdito a sites de e-commerce, e empresas expem dados proprietrios na Web. Ao
mesmo tempo, organizaes esto sofrendo um nmero cada vez maior de violaes da
segurana. Ambos, indivduos e empresas, so vulnerveis a roubos de dados e a ata-
ques que podem comprometer dados, corromper arquivos e provocar a queda de siste-
mas. A indstria da computao procura atender essas necessidades com suas organiza-
es, trabalhando para melhorar a segurana da Internet e de redes. Por exemplo, a ini-
ciativa computao confivel proposta pelo presidente da Microsoft, Bill Gates, um
esforo para concentrar a prioridade das empresas no fornecimento de aplicaes confi-
veis, disponveis e seguras.
Segurana de computadores aborda a questo da preveno do acesso no autoriza-
do a recursos e informaes mantidos em computadores. Sistemas de computador de-
vem fornecer mecanismos para gerenciar ameaas segurana originadas tanto exter-
namente ao computador (via conexo de rede), quanto internamente (via usurios e
softwares mal-intencionados). Segurana de computador comumente abrange garantir a
privacidade e a integridade de dados sensveis, restringir a utilizao de recursos de
computao e oferecer proteo contra tentativas de incapacitar o sistema. Proteo a-
brange mecanismos que protegem recursos como hardware e servios de sistemas ope-
racionais contra ataques. A segurana est se tornando rapidamente um dos tpicos
mais ricos e desafiadores da computao; a segurana do sistema operacional est no
mago de um sistema de computao seguro.
15.2 CRIPTOGRAFIA
Uma meta importante da computao disponibilizar quantidades macias de dados
com facilidade. Transmisso eletrnica de dados, especialmente por fiao pblica, ine-
rentemente insegura. Uma soluo para esse problema tornar os dados ilegveis, por
meio de criptografia, para qualquer usurio no autorizado. Muitos mecanismos de segu-
rana dependem da criptografia para proteger dados sensveis, como senhas.
Criptografia trata da codificao e decodificao de dados de modo que eles somente
possam ser interpretados pelos receptores pretendidos. Dados so transformados pela
utilizao de uma cifra, ou sistema criptogrfico um algoritmo matemtico para
criptografar mensagens. Uma chave, representada por uma cadeia de caracteres, a
entrada para a cifra. O algoritmo transforma os dados no criptografados, ou texto co-
mum, em dados criptografados, ou texto cifrado, usando as chaves como entrada -
chaves diferentes resultam em textos cifrados diferentes. O objetivo fazer com que os
dados fiquem incompreensveis para quaisquer receptores no pretendidos (os que no
possuem a chave de decriptao). Apenas os receptores pretendidos devem ter a chave
para decriptar o texto cifrado, transformando-o em texto comum.
A criptografia usada para proporcionar o seguinte:
Confidencialidade. Para garantir que os dados permaneam privados. Geralmente,
a confidencialidade obtida com a criptografia. Os algoritmos de criptografia (que usam
chaves de criptografia) so usados para converter texto sem formatao em texto codifi-
cado e o algoritmo de descriptografia equivalente usado para converter o texto codifi-
15
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
154
cado em texto sem formatao novamente. Os algoritmos de criptografia simtricos u-
sam a mesma chave para a criptografia e a descriptografia, enquanto que os algoritmos
assimtricos usam um par de chaves pblica/privada.
Integridade de dados. Para garantir que os dados sejam protegidos contra modifi-
cao acidental ou deliberada (mal-intencionada). A integridade, geralmente, fornecida
por cdigos de autenticao de mensagem ou hashes. Um valor de hash um valor nu-
mrico de comprimento fixo derivado de uma seqncia de dados. Os valores de hash
so usados para verificar a integridade dos dados enviados por canais no seguros. O
valor do hash de dados recebidos comparado ao valor do hash dos dados, conforme
eles foram enviados para determinar se foram alterados.
Autenticao. Para garantir que os dados se originem de uma parte especfica. Os
certificados digitais so usados para fornecer autenticao. As assinaturas digitais geral-
mente so aplicadas a valores de hash, uma vez que eles so significativamente menores
que os dados de origem que representam.
Sistemas criptogrficos modernos dependem de algoritmos que operam nos bits indi-
viduais ou blocos (um grupo de bits) de dados, e no em letras do alfabeto. Chaves crip-
togrficas e de decriptao so cadeias binrias com uma chave de tamanho determina-
do. Por exemplo, em sistemas criptogrficos de 128 bits, o tamanho da chave 128 bits.
Chaves maiores tm mais fora criptogrfica; preciso mais tempo e mais capacidade de
computao para quebrar a cifra. Chaves maiores tambm exigem mais tempo de pro-
cessamento para criptografar e decriptar dados, reduzindo o desempenho sistema. O
crescimento das redes de computadores tornou mais desafiadora a permuta seguran-
a/desempenho.
15.2.1 CRIPTOGRAFIA POR CHAVE SECRETA
Criptografia simtrica, tambm conhecida como criptografia por chave secreta, usa
a mesma chave secreta para criptografar e decriptar uma mensagem (Figura 15.1). Nes-
se caso, o emissor criptografa a mensagem utilizando a chave secreta, envia a mensa-
gem criptografada ao receptor pretendido, que decifra a mensagem usando a mesma
chave secreta. Uma limitao da criptografia por chave secreta que, antes que as duas
partes possam se comunicar com segurana, elas precisam encontrar um meio seguro de
passar a chave secreta uma para a outra.

Figura 15.1: Criptografia e decriptao de uma mensagem usando uma chave secreta
Uma soluo a chave ser entregue por um courier ou outro servio de correio. Em-
bora essa abordagem talvez seja vivel quando apenas duas partes se comunicam, no
fcil ampli-la para grandes redes. Alm do mais, a criptografia por chave secreta no
pode ser considerada completamente segura porque a privacidade e a integridade da
mensagem podem ser comprometidas se a chave for interceptada no caminho entre o
emissor e o receptor. E, tambm, porque ambas as partes da transao usam a mesma
chave para criptografar e decriptar uma mensagem, no possvel determinar qual das
partes criou uma mensagem, o que habilita uma terceira parte, que finge ser uma das
partes autorizadas, a criar uma mensagem aps capturar a chave. Por fim, para manter
privadas as comunicaes, um emissor precisa de uma chave diferente para cada recep-
tor. Conseqentemente, para ter computao segura em grandes organizaes, seria
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
155
preciso manter grandes nmeros de chaves secretas para cada usurio, o que exigiria
significativo armazenamento de dados.
Uma abordagem alternativa ao problema do intercmbio de chaves criar uma auto-
ridade central denominada central de distribuio de chaves (Key Distribution Center
- KDC), que compartilha uma chave secreta diferente com cada usurio da rede. Uma
central de distribuio de chaves gera uma chave de sesso a ser usada para uma
transao (Figura 15.2), ento entrega ao emissor e ao receptor a chave da sesso crip-
tografada com a chave secreta, que cada um compartilha com a central de distribuio
de chaves.

Figura 15.2: Distribuio de uma chave de sesso com uma Central de Distribuio de Chaves
Por exemplo, suponha que um comerciante e um cliente desejem realizar uma tran-
sao segura. Cada um compartilha a chave secreta exclusiva com a central de distribui-
o de chaves. A KDC gera uma chave de sesso para o comerciante e o cliente usarem
na transao; ela envia ao comerciante a chave de sesso para a transao criptografada
usando a chave reta que o comerciante j compartilha com a central. A KDC envia a
mesma chave de sesso ao cliente para a transao criptografada usando a chave secre-
ta que o cliente j compartilha com a KDC. Assim que o comerciante e o cliente obte-
nham a chave de sesso para a transao, eles podem se comunicar um com o outro
criptografando suas mensagens por meio da chave de sesso compartilhada.
Uma central de distribuio de chaves reduz o nmero de entregas de chaves secre-
tas por courier a cada usurio de a rede. Alm disso, d aos usurios uma nova chave
secreta para cada comunicao com outros usurios da rede. Todavia, se a segurana da
central de distribuio de chaves for comprometida, a segurana de toda a rede tambm
estar comprometida.
Um algoritmo de criptografia simtrica comumente usado o padro para cripto-
grafia de dados (Data Encryption Standard - DES). Horst Feistel da IBM criou o algo-
ritmo de Lcifer, que foi escolhido como o DES pelo governo e pela Agncia Nacional de
Segurana (National Security Agency - NSA) dos Estados Unidos na dcada de 1970. O
tamanho da chave do DES de 56 bits, e o algoritmo criptografa dados em blocos de 64
bits. Esse tipo de criptografia conhecido como cifra de bloco, porque cria grupos de
bits por meio de uma mensagem e, ento, aplica um algoritmo criptogrfico ao bloco
como um todo. Essa tcnica reduz a quantidade de capacidade de processamento do
computador e o tempo exigido para criptografar os dados.
Durante muitos anos, o DES foi o padro de criptografia determinado pelo governo
norte-americano e pelo American National Standards Institute (ANSI). Contudo, graas
aos avanos da tecnologia e da velocidade de computao, o DES j no mais conside-
rado seguro - no final da dcada de 1990 foram construdas mquinas especializadas em
quebrar DES que recuperavam as chaves do padro para criptografia de dados (DES)
aps um perodo de vrias horas. Consequentemente, o padro para a criptografia sim-
trica foi substitudo por Triple DES ou 3DES, uma variante do DES que consiste, essen-
cialmente, em trs sistemas DES em srie, cada um com uma chave secreta diferente
que opera sobre um bloco, Embora o 3DES seja mais seguro, as trs passagens pelo al-
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
156
goritmo DES aumentam a sobrecarga de criptografia, resultando em reduo do desem-
penho.
Em outubro de 2000, o governo dos Estados Unidos selecionou um padro mais segu-
ro para criptografia simtrica para substituir o DES, denominado padro avanado de
criptografia (Advanced Encryption Standard - AES). O National Institute of Standards
and Technology (NIST) - que estabelece os padres criptogrficos para o governo norte-
americano - escolheu o Rijndael como o mtodo de criptografia da AES. O Rijndael
uma cifra de bloco desenvolvida pela Dra. Joan Daemen e pelo Dr. Vincent Rijmen, da
Blgica. O Rijndael pode ser usado com chaves e blocos de 128, 192 ou 256 bits e foi
escolhido como AES, concorrendo com outros quatro finalistas pelo seu alto nvel de se-
gurana, desempenho, eficincia e flexibilidade e baixo requisito de memria para siste-
mas computacionais.
15.2.2 CRIPTOGRAFIA POR CHAVE PBLICA
Em 1976, Whitfield Diffie e Martin Hellman, pesquisadores da Stanford University, de-
senvolveram a criptografia por chave pblica para resolver o problema do intercm-
bio seguro de chaves simtricas. A criptografia por chave pblica assimtrica no senti-
do de que emprega duas chaves inversamente relacionadas: uma chave pblica e uma
chave privada. A chave privada mantida em segredo pelo seu proprietrio, e a chave
pblica distribuda livremente. Se a mensagem for cifrada com uma chave pblica, so-
mente a chave privada correspondente poder decifr-la (Figura 15.3) e vice-versa. Cada
parte da transao possui a chave pblica e a chave privada. Para transmitir uma men-
sagem com segurana, o emissor usa a chave pblica do receptor para criptografar a
mensagem. Ento o receptor decifra a mensagem utilizando sua chave privada exclusiva.
Admitindo que a chave privada seja mantida em segredo, a mensagem no pode ser lida
por ningum, exceto pelo receptor pretendido. Assim, o sistema garante a privacidade da
mensagem.

Figura 15.3: Criptografia e decriptao de uma mensagem usando chave pblica
Algoritmos de chave pblica seguros dependem de uma chave privada que, em ter-
mos computacionais, quase impossvel decifrar por meio da chave pblica em um per-
odo de tempo razovel. Esses algoritmos so denominados funes de uma via ou ar-
madilha, porque cifrar a mensagem usando a chave pblica requer pouca capacidade de
computao, mas decifr-la sem conhecer a chave privada exige capacidade computacio-
nal e tempo considerveis. Um nico computador levaria anos para decifrar um mtodo
criptogrfico moderadamente seguro. [Nota: O concurso RC5 da Distributed.net oferece um prmio
em dinheiro para quem decifrar uma mensagem criptografada por meio da funo de uma via. O concurso atrai
milhares de usurios que trabalham em paralelo para descobrir a chave. Recentemente, cerca de 300 mil parti-
cipantes dedicaram capacidade computacional para descobrir uma mensagem cifrada usando uma chave de 64
bits. A chave foi descoberta em agosto de 2002, aps 1.757 dias de computao equivalente a 46 mil proces-
sadores de 2 GHz trabalhando em paralelo. O computador mais potente na poca era o Earth Simulator, que
continha 5.120 processadores de 500 MHz.]
A segurana do sistema depende do segredo das chaves privadas. Portanto, se um
terceiro obtiver a chave privada usada na criptografia, a segurana de todo o sistema
estar comprometida. Se o sistema ficar comprometido, o usurio pode simplesmente
trocar a chave, em vez de trocar todo o algoritmo criptogrfico ou de decriptao.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
157
Tanto a chave pblica quanto a privada podem ser usadas para criptografar ou de-
criptar uma mensagem. Por exemplo, se um cliente usar a chave pblica de um comerci-
ante para criptografar uma mensagem, s o comerciante poder decifr-la, com a sua
prpria chave privada. Assim, a identidade do comerciante pode ser autenticada, porque
somente ele conhece a chave privada. Entretanto, o comerciante no pode validar a i-
dentidade do cliente porque a chave criptogrfica que o cliente usou est disponvel pu-
blicamente.
Se a chave de decriptao for a chave pblica do emissor e a chave criptogrfica for a
chave privada do emissor, o emissor da mensagem poder ser autenticado. Por exemplo,
suponha que um cliente envie a um comerciante uma mensagem criptografada usando a
chave privada do cliente. O comerciante decripta a mensagem por meio da chave pblica
do cliente. Porque o cliente criptografou a mensagem usando a sua prpria chave priva-
da, o comerciante poder ter certeza da identidade do cliente. Esse processo autentica o
emissor, mas no garante confidencialidade, pois qualquer terceiro poderia decifrar a
mensagem com a chave pblica do emissor. O problema de provar a propriedade de uma
chave pblica ser discutido posteriormente.
Esses dois mtodos de criptografia de chave pblica podem ser combinados para au-
tenticar ambos os participantes de uma comunicao (Figura 15.4). Suponha que um
comerciante deseje enviar uma mensagem com segurana a um cliente, de modo que
somente o cliente possa ler a mensagem, e tambm provar ao cliente que foi ele, o co-
merciante, quem enviou a mensagem. Primeiro, o comerciante criptografa a mensagem
usando a chave pblica do cliente. Essa etapa garante que somente o cliente pode ler a
mensagem. Ento o comerciante criptografa o resultado por meio de sua prpria chave
privada, o que comprova a sua identidade. O cliente decripta a mensagem em ordem
inversa. Primeiro, ele utiliza a chave pblica do comerciante. Porque somente o comerci-
ante poderia ter criptografado a mensagem com a chave privada inversamente relacio-
nada, essa etapa autentica o comerciante. O cliente ento usa sua prpria chave privada
para decriptar o prximo nvel da criptografia. Essa etapa assegura que o contedo da
mensagem continuou privado durante a transmisso, pois somente o cliente tem a chave
para decriptar a mensagem.

Figura 15.4: Autenticao com um algoritmo de chave pblica
O algoritmo de chave pblica mais comumente usado o RSA, um sistema criptogr-
fico desenvolvido em 1977. Seus produtos criptogrficos esto inseridos em centenas de
milhes de cpias das aplicaes mais populares da Internet incluindo navegadores Web,
servidores comerciais e sistemas de e-mail. A maioria das transaes seguras de e-
commerce e das comunicaes pela Internet usa produtos RSA.
15.3 AUTENTICAO
Identificar usurios e as aes que eles tm permisso de realizar vital para manter
a segurana de um sistema computacional. Um usurio pode ser identificado por:
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
158
Uma caracterstica exclusiva da pessoa (impresses digitais, impresses vocais,
varredura de retina e assinaturas);
Propriedades de um item (crachs, carteiras de identidade, chaves e cartes inte-
ligentes); e
Conhecimento do usurio (senhas, nmeros de identificao pessoal (PINs) e
combinaes de travas).
15.3.1 AUTENTICAO BSICA
O esquema de autenticao mais comum uma simples proteo por senha. O usu-
rio escolhe e memoriza uma senha e a registra no sistema para obter admisso a um
recurso ou sistema. A maioria dos sistemas suprime a exibio da senha na tela, substi-
tuindo seu texto por caracteres mascaradores ou ocultando a entrada da senha.
A proteo por senha introduz diversos pontos fracos em um sistema seguro. Usu-
rios tendem a escolher senhas fceis de lembrar, como o nome de um cnjuge ou de um
animal de estimao. Algum que tenha obtido informaes pessoais do usurio poderia
tentar o acesso ao sistema (login) vrias vezes, usando senhas correspondentes s ca-
ractersticas do usurio; vrias tentativas repetidas podem resultar em uma violao da
segurana. Alguns sistemas antigos limitavam o usurio a senhas curtas; esses eram
facilmente comprometidos simplesmente pela tentativa de todas as senhas possveis -
uma tcnica conhecida por quebra por fora bruta.
A maioria dos sistemas de hoje exige senhas mais longas que incluem caracteres al-
fabticos e numricos para frustrar as tentativas de invaso. Alguns sistemas at mesmo
probem a utilizao de palavras do dicionrio como valores de senhas. Contudo, senhas
longas no melhoram necessariamente a segurana de um sistema; se elas forem difceis
de lembrar os usurios ficaro mais inclinados a anot-las, facilitando a obteno da se-
nha por um intruso.
A invaso das defesas de um sistema operacional no precisa resultar necessaria-
mente em um comprometimento significativo da segurana. Por exemplo, suponha que
um intruso consiga obter acesso lista mestra de senhas de um sistema. Se o arquivo de
senhas estivesse armazenado em texto comum, essa invaso permitiria ao intruso o a-
cesso a qualquer informao do sistema, assumindo a identidade de qualquer usurio.
Para reduzir a efetividade de um arquivo de senhas roubado, muitos sistemas operacio-
nais criptografam o arquivo de senhas ou armazenam apenas valores de hash para cada
senha. Nesse caso, uma cpia do arquivo de senhas de pouca utilidade, a menos que o
intruso possa decript-las. Para frustrar ainda mais as tentativas de obter senhas, vrios
sistemas empregam o salpicamento de senha; uma tcnica que insere caracteres em
vrias posies da senha antes de criptograf-la (Tabela 15.1). Note como uma pequena
quantidade de salpicamento pode alterar significativamente um texto cifrado, mesmo
quando se estiver utilizando uma cifra fraca, como uma cifra de substituio (codificao
base 64). O salpicamento pode evitar que intrusos obtenham uma chave criptogrfica
com base em padres produzidos por senhas comuns aps a criptografia.

Texto Comum Texto Cifrado
password cGFzc3dvcmQ=
psassawlortd cHNhc2Fzd2xvcnRK
newpassword bmV3cGFzc3dvcmQ=
nsewaplatssewodrd bnN1d2FwbGFOc3N1d29kcmQ=
Tabela 15.1: Salpicando senhas (codificao base 64)
Usurios so incentivados a trocar suas senhas freqentemente; mesmo que um in-
truso obtenha uma senha, ela pode ser trocada antes que algum dano real seja causado.
Alguns sistemas exigem que os usurios escolham novas senhas periodicamente. Infe-
lizmente, alguns usurios reutilizaro duas ou trs senhas ciclicamente, o que reduz a
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
159
segurana geral. Como resposta, vrios sistemas de autenticao probem a reutilizao
das senhas escolhidas mais recentemente por um usurio.
Uma defesa simples contra a quebra por fora bruta e tentativas repetidas de entrar
a senha limitar o nmero de tentativas de acesso ao sistema que podem ser iniciadas
em um certo perodo de tempo de um nico terminal ou estao de trabalho (ou de uma
nica conta). claro que as pessoas cometem erros ao tentarem obter acesso ao siste-
ma, mas no razovel que algum que saiba a senha correta tenha de fazer dezenas,
centenas ou milhares de tentativas. Portanto, um sistema pode permitir trs ou quatro
tentativas e, ento, desconectar o terminal durante vrios segundos ou minutos. Aps
um perodo de espera, o terminal pode ser reconectado.
15.3.2 BIOMETRIA E CARTES INTELIGENTES
Uma inovao na segurana que era limitada aos filmes, mas que est se tomando
cada vez mais comum nos sistemas seguros atuais, a biometria. A biometria utiliza
informaes pessoais exclusivas - como impresses digitais, varreduras da ris ou varre-
duras da face - para identificar um usurio. O nmero de senhas que um usurio mdio
tem de lembrar aumentou em razo da proliferao de dados sensveis transmitidos por
canais no seguros. O resultado que as senhas se tomaram uma carga cada vez mais
pesada para a computao segura. Essa tendncia pode ser prejudicial segurana, pois
usurios registram senhas no papel ou empregam a mesma senha para diversas contas.
Conseqentemente, a biometria tornou-se uma alternativa atraente para as senhas, e o
custo dos dispositivos biomtricos caiu de modo significativo.
Dispositivos de varredura de impresses digitais, varredura da face e varredura da -
ris esto substituindo a utilizao de senhas para entrar em sistemas, verificar e-mail ou
ter acesso a informaes seguras em uma rede. As impresses digitais, a varredura da
face ou a varredura da ris de cada usurio so armazenadas em um banco de dados se-
guro. Cada vez que o usurio entra no sistema, a sua varredura comparada com o ban-
co de dados. Se houver correspondncia, o acesso bem-sucedido.
Embora as senhas sejam correntemente o meio predominante de autenticao em
sistemas de computador e e-commerce, vrias plataformas adotaram a biometria. Em
2000, a Microsoft anunciou a Biometric Application Prograrnrning lnterface (BAPI) inclu-
da nos seus sistemas operacionais Windows 2000 e Windows XP para simplificar a inte-
grao da biometria em sistemas pessoais e corporativos.
Um carto inteligente (smart card), projetado para parecer um carto de crdito,
normalmente usado para autenticao e armazenar dados. Os cartes inteligentes mais
populares so os de memria e os microprocessadores. Cartes de memria podem ar-
mazenar e transferir dados; cartes microprocessadores contm componentes de compu-
tador gerenciados por um sistema operacional que fornecem segurana e armazenamen-
to. Cartes inteligentes tambm so caracterizados por sua interface com dispositivos de
leitura. Uma delas a interface de contato, pela qual os cartes inteligentes so inseri-
dos em um dispositivo de leitura que requer o contato fsico entre o dispositivo e o carto
para transferir dados. Como alternativa, uma interface sem contato permite que dados
sejam transferidos sem contato fsico entre a leitora e o carto, quase sempre realizado
por um dispositivo sem fio embutido no carto.
Cartes inteligentes podem armazenar chaves privadas, certificados digitais e outras
informaes. Tambm podem armazenar nmeros de cartes de crdito, informaes
pessoais para contato e coisas semelhantes. Cada carto inteligente pode ser usado em
combinao com um PIN. Essa caracterstica fornece dois nveis de segurana, pois re-
quer que o usurio possua um carto inteligente e conhea o PIN correspondente para
ter acesso s informaes armazenadas no carto. Para reforar ainda mais a segurana,
alguns cartes microprocessadores apagaro ou corrompero dados armazenados caso
haja tentativa de violao do carto.
Autenticao de dois fatores emprega dois meios para autenticar o usurio, como
biometria ou um carto inteligente combinado com uma senha. Embora esse sistema
possa ser potencialmente comprometido, usar dois mtodos de autenticao normalmen-
te proporciona melhor segurana do que apenas senhas.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
160
15.3.3 KERBEROS
Ataques internos a computadores (ataques que se originam de um usurio vlido) so
comuns e podem ser extremamente danosos. Por exemplo, funcionrios descontentes
com acesso rede podem desabilitar a rede de uma organizao ou roubar informaes
proprietrias valiosas. Estima-se que 70% a 90% dos ataques a redes corporativas so
internos. Um sistema de autenticao centralizado, seguro, pode facilitar uma reao
rpida a esses ataques segurana. Kerberos, um protocolo de cdigo-fonte aberto,
desenvolvido no MIT, pode fornecer proteo contra ataques internos segurana; em-
prega criptografia de chave secreta para autenticar usurios de uma rede e manter a
integridade e a privacidade das comunicaes da rede.
No Kerberos, a autenticao tratada por um servidor de autenticao e um servio
secundrio de concesso de bilhetes de entrada (Ticket Granting Service - TGS). Esse
sistema semelhante s centrais de distribuio descritas na Seo 15.2.1, "Criptografia
por chave secreta". O servidor de autenticao autentica a identidade de um cliente para
o TGS; o TGS autentica os direitos de acesso do cliente a servios especficos de rede.
Cada cliente da rede compartilha uma chave secreta com o sistema Kerberos. Essa
chave secreta pode ser armazenada por vrios TGSs do sistema Kerberos. O sistema
Kerberos funciona da seguinte maneira:
1. O cliente comea apresentando um nome de usurio e uma senha ao servidor de
autenticao Kerberos.
2. O servidor de autenticao mantm um banco de dados de todos os clientes da re-
de. Se o nome e a senha forem vlidos, o servidor de autenticao retomar um bilhete
de concesso de entrada (Ticket-Granting Ticket - TGT) criptografado com a chave secre-
ta do cliente. Porque a chave secreta conhecida unicamente pelo servidor de autentica-
o e pelo cliente, apenas o cliente pode decriptar o TGT, autenticando, assim, a identi-
dade do cliente.
3. O cliente envia o TGT decriptado ao servio de concesso de bilhetes de entrada e
requisita um bilhete de servio. O bilhete de servio autoriza o acesso do cliente a servi-
os especficos de rede. Bilhetes de servio tm um prazo de expirao designado e po-
dem ser renovados ou revogados pelo TGS. Se o TGT for vlido, o TGS emitir um bilhe-
te de servio criptografado com a chave de sesso do cliente.
4. O cliente ento decripta o bilhete de servio e o apresenta para obter acesso aos
recursos da rede.
15.3.4 ASSINATURA NICA
Sistemas de assinatura nica simplificam o processo de autenticao, permitindo
que o usurio acesse o sistema somente uma vez, usando uma nica senha. Usurios
autenticados via sistema de assinatura nica, ento, podem ter acesso a vrias aplica-
es em vrios computadores. Senhas de assinatura nica devem ser guardadas com
muita segurana porque, se intrusos se apossarem de uma senha, todas as aplicaes
protegidas por aquela senha podem ser acessadas e atacadas.
Scripts de acesso de estaes de trabalho so as formas mais simples de assina-
tura nica. Usurios entram no sistema por suas estaes de trabalho e escolhem aplica-
es em um menu. O script de acesso envia a senha do usurio aos servidores de aplica-
o, autenticando o usurio para futuro acesso a essas aplicaes. Muitos scripts de a-
cesso de estaes de trabalho no proporcionam um nvel de segurana suficiente porque
as senhas de usurios em geral so armazenadas no computador cliente em texto co-
mum. Mesmo que o script use uma criptografia simples para a senha, aquele algoritmo
deve estar presente no sistema, o que significa que qualquer intruso que conseguir aces-
so ao computador poder comprometer a criptografia.
Scripts de servidor de autenticao autenticam usurios via servidor central. O
servidor central controla conexes entre o usurio e as aplicaes que o usurio deseja
acessar. Scripts de servidor de autenticao so mais seguros do que scripts de acesso
de estaes de trabalho, pois as senhas so mantidas no servidor, que geralmente
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
161
mais seguro do que o computador cliente. Contudo, se a segurana do servidor for com-
prometida, a segurana do sistema inteiro tambm ser.
Os sistemas mais avanados de assinatura nica empregam autenticao por ficha
(token). Quando um usurio autenticado, emitida uma nica ficha que habilita o u-
surio a acessar aplicaes especficas. A segurana do acesso ao sistema (login) que
cria a ficha garantida por criptografia ou senha nica. Por exemplo, o Kerberos usa au-
tenticao por ficha na qual o bilhete de servio age como a ficha. Um problema funda-
mental da autenticao por ficha que as aplicaes devem ser modificadas para aceitar
fichas em vez das tradicionais senhas de acesso ao sistema.
Correntemente, os trs lderes do desenvolvimento da tecnologia de assinatura nica
so o Liberty Alliance Project, a Microsoft e a Novell. O Liberty um consrcio de organi-
zaes de tecnologia e segurana que trabalham para criar uma soluo de assinatura
nica aberta. O .NET Passport da Microsoft e o SecureLogin da Novell tambm so solu-
es viveis, embora sejam proprietrias. Para proteger a privacidade de informaes
regidas por assinatura nica e outras aplicaes, a plataforma para preferncias pri-
vadas (Platform for Privacy Preferences - P3P) permite que os usurios controlem as
informaes pessoais que os sites coletam.
15.4 CONTROLE DE ACESSO
Na qualidade de gerenciador de recursos, o sistema operacional deve se defender
cuidadosamente contra utilizaes no intencionais e maliciosas de recursos de computa-
o. Conseqentemente, hoje os sistemas operacionais so projetados para proteger
servios de sistema operacional e informaes sensveis contra usurios e/ou softwares
que obtiveram acesso aos recursos do computador. Direitos de acesso protegem recursos
e servios do sistema contra usurios potencialmente perigosos, restringindo ou limitan-
do as aes que podem ser executadas no recurso. Esses direitos normalmente so ge-
renciados por listas de controle de acesso ou listas de capacidades.
15.4.1 DIREITO DE ACESSO E DOMNIOS DE PROTEO
A chave para a segurana do sistema operacional controlar o acesso a dados e re-
cursos internos. Direitos de acesso definem como vrios sujeitos podem acessar vrios
objetos. Sujeitos podem ser usurios, processos, programas ou outras entidades. Obje-
tos so recursos como hardware, software e dados; podem ser objetos fsicos como dis-
cos, processadores ou memria principal. Tambm podem ser objetos abstratos como
estruturas de dados, processos ou servios. Sujeitos tambm podem ser objetos do sis-
tema; um sujeito pode ter direitos de acesso a um outro. Sujeitos so entidades ativas;
objetos so entidades passivas. medida que um sistema executa, sua populao de
sujeitos e objetos tende a mudar. A maneira pela qual um sujeito pode ter acesso a um
objeto denominada privilgio e pode incluir leitura, escrita e impresso.
Objetos devem ser protegidos contra sujeitos. Caso fosse permitido que um processo
tivesse acesso a todos os recursos de um sistema, um usurio poderia inadvertida ou
mal-intencionadamente, comprometer a segurana do sistema ou causar a queda de ou-
tros programas. Para impedir que tais eventos ocorram, cada sujeito deve obter autori-
zao para acessar objetos dentro de um sistema.
Um domnio de proteo uma coleo de direitos de acesso. Cada direito de aces-
so de um domnio de proteo representado como um par ordenado com campos para
o nome do objeto e seus privilgios correspondentes. Um domnio de proteo exclusi-
vo de um sujeito. Por exemplo, se um usurio puder ler e escrever para o arquivo exem-
plo.txt, o par ordenado correspondente para o direito de acesso desse usurio poder
ser representado por <exemplo.txt, {read, write}>.
Os direitos de acesso mais comuns so ler, escrever e executar. Alguns sujeitos tam-
bm podem conceder direitos de acesso a outros sujeitos. Na maioria dos sistemas de
computao, o administrador possui todos os direitos de acesso e responsvel pelo
gerenciamento dos direitos de outros usurios.
Direitos de acesso podem ser copiados, transferidos ou propagados de um domnio
para outro. Copiar um direito de acesso implica simplesmente conceder um direito de um
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
162
usurio a outro usurio. Quando um direito de acesso transferido do sujeito A para o
sujeito B, o direito de acesso do sujeito A revogado quando a transferncia for conclu-
da. Propagar um direito de acesso similar a copiar um direito de acesso; contudo, alm
de compartilhar o direito de acesso original, ambos os sujeitos tambm podem copiar o
direito para outros sujeitos.
Quando um sujeito no precisa mais do acesso a um objeto, os direitos de acesso po-
dem ser revogados. Nesse caso surgem vrias questes - a revogao deve ser imediata
ou tardia? A revogao deve se aplicar a todos os objetos ou a uns poucos selecionados?
A revogao deve-se aplicar a sujeitos especficos ou a um domnio inteiro? A revogao
deve ser permanente ou temporria? Cada implementao de gerenciamento de direitos
de acesso aborda a revogao de maneira diferente
15.4.2 MODELOS E POLTICAS DE CONTROLE DE ACESSO
Controle de acesso pode ser dividido em trs nveis conceituais: modelos, polticas e
mecanismos. Um modelo de segurana define os sujeitos, objetos e privilgios de um
sistema. Uma poltica de segurana, que normalmente especificada pelo usurio
e/ou administrador do sistema, define quais privilgios a objetos so designados a sujei-
tos. O mecanismo de segurana o mtodo pelo qual o sistema implementa a poltica
de segurana. Em muitos sistemas, a poltica muda ao longo do tempo medida que
mudam o conjunto de recursos e os usurios do sistema, mas o modelo de segurana e
os mecanismos que implementam o controle de acesso no requerem modificao, por-
tanto, a poltica de segurana separada do mecanismo e do modelo.
Um modelo de segurana popular organiza usurios em classes. Uma desvantagem
que os direitos de acesso so armazenados em cada arquivo e especificam um nico pro-
prietrio e grupo, portanto, no mximo um grupo pode acessar um arquivo particular.
Alm disso, o sistema poderia precisar modificar permisses de grupo para diversos ar-
quivos ao designar novos direitos de acesso a um grupo de usurios - Um processo de-
morado e sujeito a erros.
No modelo de controle de acesso por funo (Role-based Access Control - RBAC)
so designadas funes aos usurios, cada uma representando normalmente um con-
junto de tarefas designadas a um membro de uma organizao. A cada funo desig-
nado um conjunto de privilgios que definem os objetos que os usurios podem acessar
em cada funo. Usurios podem pertencer a vrias funes; os administradores preci-
sam apenas modificar permisses para uma nica funo para alterar os direitos de a-
cesso de um grupo de usurios. A atratividade do RBAC que ele designa relaes signi-
ficativas entre sujeitos e objetos que no so limitadas por classes como proprietrios e
grupos.
Considere, por exemplo, um sistema formado por computadores de uma universidade
com as seguintes funes: os professores da universidade criam e do notas aos traba-
lhos escolares, estudantes apresentam seus trabalhos concludos e o pessoal administra-
tivo transfere as notas para os histricos dos estudantes. Sob o modelo RBAC esse sis-
tema consiste em trs funes (estudantes, professores e pessoal administrativo), dois
objetos (trabalhos escolares e notas) e trs permisses (ler, modificar e criar). Nesse
exemplo, os professores tm permisso para criar, ler e modificar trabalhos escolares e
notas; estudantes tm permisso para ler e modificar cpias de seus trabalhos e ler no-
tas; o pessoal administrativo tem permisso de ler e modificar notas.
Embora as polticas de segurana variem para atender s necessidades dos usurios
de um sistema, a maioria delas incorpora o princpio do mnimo privilgio - um sujeito
recebe permisso de acesso somente aos objetos de que necessita para executar suas
tarefas. Polticas tambm podem implementar controle de acesso discricionrio ou obri-
gatrio, dependendo das necessidades de segurana do ambiente. A maioria dos siste-
mas baseados em UNIX segue o modelo de controle de acesso discricionrio (Discre-
tionary Access Control - DAC), segundo o qual o criador de um objeto controla as per-
misses para aquele objeto. As polticas de controle de acesso obrigatrio (Mandatory
Access Control - MAC) definem previamente um esquema de permisso central pelo qual
todos os sujeitos e objetos so controlados. O MAC encontrado em muitas instalaes
de alta segurana, como sistemas governamentais confidenciais.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
163
15.4.3 MECANISMOS DE CONTROLE DE ACESSO
Nesta seo, discutiremos vrias tcnicas que um sistema operacional pode empregar
para gerenciar direitos de acesso. Matrizes de controle de acesso compatibilizam sujeitos
e objetos com os direitos de acesso adequados. O conceito que fundamenta o modelo
simples; contudo, a maioria dos sistemas contm muitos sujeitos e objetos, resultando
em uma matriz de grande porte que um meio ineficiente de controle de acesso. Listas
de controle de acesso e listas de capacidades so derivadas do princpio de mnimo privi-
lgio, e muitas vezes so mtodos mais eficientes e flexveis de gerenciar direitos de a-
cesso.
Matrizes de Controle de Acesso
Um modo de gerenciar direitos de acesso atravs de uma matriz de controle de
acesso. Os vrios sujeitos so listados nas linhas, e os objetos aos quais requerem aces-
so so listados nas colunas. Cada clula da matriz especifica as aes que um sujeito
(definido pela linha) pode executar sobre um objeto (definido pela coluna). Em uma ma-
triz de controle de acesso, os direitos de acesso so concedidos com base no mnimo pri-
vilgio, portanto, se um direito de acesso no estiver descrito explicitamente na matriz, o
usurio no ter nenhum direito de acesso ao objeto.
Porque uma matriz de controle de acesso coloca todas as informaes de permisso
em uma localizao central, ela deve ser uma das entidades mais bem protegidas de um
sistema operacional. Se a matriz for comprometida, quaisquer recursos que eram prote-
gidos pelos direitos de acesso definidos na matriz tambm sero suscetveis a ataques.
A matriz de controle de acesso da Figura 15.6 representa os direitos de acesso dos
usurios (Andr, Bruna, Celina, Geraldo e Convidado) aos objetos (Arquivo A, Arquivo B e Im-
pressora). Os privilgios que um usurio pode obter para um objeto so ler, escrever e im-
primir. Os direitos de acesso a ler e escrever aplicam-se somente aos arquivos do sistema,
nesse caso, Arquivo A e Arquivo B. Em alguns ambientes, nem todos os usurios tm aces-
so Impressora - um usurio tem de ter o privilgio explcito de imprimir para poder enviar
contedo Impressora. Qualquer direito de acesso marcado por um asterisco (*) pode ser
copiado de um usurio para outro. Nessa matriz de controle de acesso, Andr tem todos
os direitos de acesso, bem como a capacidade de atribuir esses direitos a outros usu-
rios. Geraldo no pode acessar o Arquivo A porque no h nenhuma entrada na clula cor-
respondente na matriz. A conta Convidado no contm nenhum direito de acesso por de-
fault. Um Convidado pode acessar recursos somente quando o direito for explicitamente
concedido por um outro usurio. Embora gerar e interpretar uma matriz de controle de
acesso seja uma operao direta, a matriz pode tornar-se grande e esparsamente povo-
ada.

Arquivo A Arquivo B Impressora
Andr Ler*
Escrever
Ler*
Escrever*
Imprimir*
Bruna Ler*
Escrever
Ler*
Escrever
Imprimir
Celina Ler Imprimir
Geraldo Ler
Convidado
Figura 15.6: Matriz de controle de acesso para um pequeno grupo de sujeitos e objetos
Listas de Controle de Acesso
Uma lista de controle de acesso armazena os mesmos dados que uma matriz de
controle de acesso, mas mantm um registro somente das entradas que especificam um
direito de acesso. A lista de controle de acesso de um sistema pode ser baseada nas li-
nhas (os sujeitos) ou nas colunas (os objetos) de uma matriz. Para cada objeto de um
sistema operacional, uma lista de controle de acesso contm entradas para cada sujeito
e os privilgios associados quele sujeito em relao quele objeto. Quando um sujeito
tenta acessar um objeto, o sistema procura pela lista de controle de acesso para aquele
objeto para identificar os privilgios daquele sujeito.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
164
O problema desse mtodo est na ineficincia com a qual o sistema operacional de-
termina os privilgios de usurio para determinado objeto. A lista de controle de acesso
para cada objeto contm uma entrada para cada sujeito com privilgios para aquele ob-
jeto - uma lista potencialmente grande. Toda vez que um objeto for acessado, o sistema
deve pesquisar a lista de sujeitos para encontrar os privilgios adequados. Quando se
usam listas de controle de acesso, difcil determinar quais direitos de acesso pertencem
a um certo domnio de proteo; preciso pesquisar a lista de acesso para cada objeto,
procurando entradas relativas quele objeto particular.
A lista de controle de acesso da Figura 15.7 representa um conjunto de direitos de
acesso que foram estabelecidos na matriz de controle de acesso da Figura 15.6. A im-
plementao menor porque as entradas vazias da matriz no esto presentes. Se um
objeto no contiver uma entrada para um usurio particular, esse usurio no ter ne-
nhum privilgio para o objeto.

1 Arquivo A:
2 <Andr, {ler*, escrever*}>
3 <Bruna, {ler*, escrever}>
4 <Celina, {ler}>
5 Arquivo B:
6 <Andr, {ler*, escrever*}>
7 <Bruna, {ler*, escrever}>
8 <Geraldo, {ler}>
9 Impressora:
10 <Andr, {imprimir*}>
11 <Bruna, {imprimir}>
12 <Celina, {imprimir}>
Figura 15.7: Lista de controle de acesso derivada da matriz de controle de acesso
Listas de Capacidades
Uma capacidade um ponteiro, ou ficha, que concede privilgios a um sujeito que a
possui. anloga a um bilhete de entrada usado para obter acesso a um evento esporti-
vo. Capacidades normalmente no so modificadas, mas podem ser reproduzidas. Lem-
bre-se de que um domnio de proteo define o conjunto de privilgios entre sujeitos e
objetos. Como alternativa, pode-se definir o domnio de proteo como o conjunto de
capacidades pertencentes a um sujeito.
Uma capacidade freqentemente implementada como um identificador exclusivo de
um objeto. Capacidades so concedidas a um sujeito, o qual apresenta a ficha para todos
os acessos subseqentes ao objeto. Capacidades so criadas por rotinas de sistemas o-
peracionais cuidadosamente protegidas. Um sujeito que possua uma capacidade pode
realizar certas operaes, entre elas criar cpias da capacidade ou pass-la como um
parmetro.
Quando um objeto criado, tambm criada uma capacidade para esse objeto. Essa
capacidade original inclui privilgios totais para o novo objeto. O sujeito que cria o objeto
pode passar cpias da capacidade a outros sujeitos. Da mesma maneira, um sujeito que
recebe a capacidade pode us-la para acessar o objeto ou pode criar cpias adicionais e
pass-las para outros sujeitos. Quando um sujeito passa uma capacidade para um outro
sujeito, pode reduzir os privilgios associados. Assim, medida que uma capacidade se
propaga pelo sistema, o tamanho do seu conjunto de privilgios pode permanecer o
mesmo ou ser reduzido.
Usurios devem ser impedidos de criar capacidades arbitrariamente, o que pode ser
conseguido armazenando capacidades em segmentos que os processos usurios no po-
dem acessar.
O identificador de uma capacidade pode ser implementado como um ponteiro para o
objeto desejado ou pode ser uma seqncia exclusiva de bits (uma ficha). Ponteiros sim-
plificam o acesso ao endereo no qual o objeto est armazenado, mas, se o objeto for
movimentado, todos os ponteiros desse tipo do sistema devem ser atualizados, o que
pode degradar o desempenho. Quando se usam fichas, as capacidades no dependem da
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
165
localizao do objeto na memria. Entretanto, porque uma ficha no especifica a localiza-
o de seu objeto correspondente, as fichas exigem que o endereo do objeto seja de-
terminado quando a capacidade for usada pela primeira vez. Um mecanismo de hash
implementa eficientemente capacidades por ficha; caches de alta velocidade em geral
reduzem a sobrecarga das referncias repetidas ao mesmo objeto.
Sistemas que empregam capacidades podem sofrer o problema do 'objeto perdido'.
Se a ltima capacidade remanescente para um objeto for destruda, o objeto associado
no poder mais ser acessado. Para evitar esse problema, muitos sistemas operacionais
garantem que o sistema mantenha sempre, no mnimo, uma capacidade para cada obje-
to.
Controlar a propagao de capacidades um problema difcil. Em geral, os sistemas
no permitem manipulao direta de capacidades pelos usurios; a manipulao da ca-
pacidade executada pelo sistema operacional em nome dos usurios. Monitorar capaci-
dades uma tarefa importante que se torna difcil em sistemas multiusurios que contm
um grande nmero de capacidades. Muitos sistemas empregam uma estrutura de diret-
rio para gerenciar suas capacidades.
15.5 ATAQUES SEGURANA
Recentes ciberataques contra empresas de comrcio eletrnico foram notcias de pri-
meira pgina em jornais do mundo inteiro. Ataques de recusa de servio (Denial-of-
Service - DoS), vrus e vermes tm custado bilhes de dlares s empresas e causado
incontveis horas de frustrao. Muitos desses ataques permitem que o perpetrador in-
vada uma rede ou sistema, o que pode levar a roubo de dados, corrupo de dados e
outros ataques. Nesta seo, discutiremos diversos tipos de ataques contra sistemas de
computador.
15.5.1 CRIPTOANLISE
Um ataque criptoanaltico tenta decriptar texto cifrado sem possuir a chave de de-
criptao. A forma mais comum de ataque criptoanaltico aquela em que o algoritmo
criptogrfico analisado para descobrir relaes entre bits da chave criptogrfica e bits
do texto cifrado. A meta desse tipo de ataque determinar a chave do texto cifrado.
Tendncias estatsticas fracas entre texto cifrado e chaves podem ser exploradas para
tentar descobrir a chave. Gerenciamento adequado de chaves e datas de expirao de
chaves podem reduzir a suscetibilidade a ataques criptoanalticos. Quanto mais tempo
uma chave criptogrfica for usada, mais texto cifrado um invasor pode usar para derivar
a chave. Se uma chave for recuperada ocultamente por um invasor, poder ser usada
para decriptar todas as mensagens que usarem aquela chave.
15.5.2 VRUS E VERMES
Um vrus um cdigo executvel - freqentemente enviado como um anexo de uma
mensagem por e-mail ou oculto em arquivos como clipes de udio, clipes de vdeo e jo-
gos -, que fica anexado a um arquivo ou sobrescreve outros arquivos para se reproduzir.
Vrus podem corromper arquivos, controlar aplicaes ou at mesmo apagar um disco
rgido. Hoje, os vrus podem ser propagados atravs de uma rede simplesmente compar-
tilhando arquivos 'infectados' inseridos em anexos de e-mail, documentos ou programas.
Um verme um cdigo executvel que se propaga infectando arquivos de uma rede.
A propagao de vermes raramente requer qualquer ao de usurio e eles tambm no
precisam ser anexados a um outro programa ou arquivo. Uma vez liberado, um vrus ou
um verme pode se propagar com rapidez, freqentemente infectando milhes de compu-
tadores no mundo inteiro em minutos ou horas.
Vrus podem ser classificados da seguinte maneira:
1. vrus de setor de boot: infecta o setor de boot do disco rgido do computador, o
que permite que seja carregado juntamente com o sistema operacional e potencialmente
controle o sistema.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
166
2. vrus transiente: fica anexado a um programa de computador particular. O vrus
ativado quando o programa executado, e desativado quando o programa encerra-
do.
3. vrus residente: uma vez carregado na memria de um computador, funciona at
que o computador seja desligado.
4. bomba lgica: executa seu cdigo, ou carga explosiva (payload) quando en-
contra determinada condio. Um exemplo de bomba lgica uma bomba-relgio, ati-
vada quando o relgio do computador coincide com um certo horrio ou data.
O cavalo-de-tria um programa mal-intencionado que se esconde dentro de um
programa autorizado ou simula um programa ou caracterstica legtima enquanto causa
dano ao computador ou rede quando executado. O nome cavalo-de-tria origina-se
da lenda da guerra entre Tria e Grcia [Nota: Nessa histria, guerreiros gregos esconderam-se den-
tro de um cavalo de madeira que os troianos recolheram para dentro das muralhas da cidade de Tria. Quando
a noite caiu e os troianos estavam dormindo, os guerreiros gregos saram de dentro do cavalo e abriram os
portes da cidade, permitindo que o exrcito grego entrasse e destrusse a cidade de Tria.] Pode ser parti-
cularmente difcil detectar programas desse tipo porque eles parecem ser aplicaes leg-
timas e operacionais.
Programas de porta dos fundos (backdoor) so vrus residentes que permitem ao
emissor acesso completo, no detectado, aos recursos do computador da vtima. Esses
tipos de vrus so especialmente ameaadores para a vtima, pois podem ser programa-
dos para registrar cada toque de teclado (capturando todas as senhas, nmeros de car-
tes de crdito etc.).
Vrus de Alta Propagao
Dois vrus que atraram significativa ateno dos meios de comunicao so os vrus
Melissa, que atacou em maro de 1999, e o ILOVEYOU, que atacou em maio de 2000.
Cada um causou bilhes de dlares de prejuzo. O Melissa propagou-se por documentos
Microsoft Word enviados por e-mail. Quando se abria o documento, o vrus era acionado
e, ento, acessava a agenda de endereos do Microsoft Outlook do usurio (uma lista de
endereos de e-mail) daquele computador e enviava o anexo Word infectado por e-mail a
um mximo de 50 pessoas que constavam da agenda de endereos do usurio. Toda vez
que um outro usurio abria o anexo, o vrus enviava at 50 mensagens adicionais. Uma
vez residente no sistema, o vrus continuava infectando quaisquer arquivos salvos usan-
do Microsoft Word.
O vrus ILOVEYOU era enviado como um anexo a um e-mail que fingia ser uma carta
de amor. A mensagem do e-mail era: "Favor verificar a carta de amor anexa enviada por
mim". Uma vez aberta a carta, o vrus acessava a agenda de endereos do Microsoft Ou-
tlook e enviava mensagens a cada endereo da lista, habilitando-o a se espalhar rapida-
mente pelo mundo inteiro. O vrus corrompia muitos tipos de arquivos, incluindo arquivos
de sistemas operacionais. Muitas redes ficaram desativadas durante dias por causa do
nmero macio de e-mails gerados.
Esse vrus exps as inadequaes da segurana dos e-mails, como a falta de um
software para fazer a varredura de anexos de arquivos em busca de ameaas seguran-
a antes que eles fossem abertos. Tambm ensinou os usurios a ficar mais atentos a e-
mails suspeitos, mesmo aos enviados por algum conhecido.
Vermes Sapphire/Slammer: anlise e implicaes
Vermes se propagam explorando pontos fracos nos canais de comunicao estabele-
cidos por softwares, seja por aplicaes, seja pelo sistema operacional. Uma vez desco-
berto um ponto fraco, um verme pode produzir trfego de rede suficiente para desativar
um nico computador ou uma rede de computadores. Alm disso, um verme pode ser
projetado para executar cdigo no computador que ele infecta, permitindo, potencial-
mente, que o criador do verme obtenha ou destrua informaes sensveis.
Entre os ataques de vermes que receberam a ateno dos meios de comunicao es-
to Nimda, Code Red e Sapphire, tambm denominado Slammer. O Slammer, que infec-
tou os computadores mais vulnerveis em dez minutos a partir da sua liberao em 25
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
167
de janeiro de 2003, dobrava o nmero de computadores infectados a cada 8,5 segundos.
[Nota: Computadores vulnerveis eram os que executavam o SQL Server 2000 da Microsoft aos quais no se
aplicava uma correo de segurana liberada pela Microsoft em julho de 2002.] A taxa de infeco eram
duas ordens de magnitude mais rpida do que a do seu famoso predecessor, o vrus Co-
de Red. Esse ltimo, um verme de 4 KB, instanciava vrios threads para criar conexes
TCP para infectar novos hospedeiros. O Slammer, ao contrrio, funcionava por UDP e sua
carga explosiva estava contida em um nico pacote UDP de 404 bytes. O protocolo UDP
sem conexo, aliado a um algoritmo de varredura aleatria para gerar endereos IP co-
mo alvos do ataque, fazia do Slammer um verme particularmente virulento. Um algo-
ritmo de varredura aleatria usa nmeros pseudo-aleatrios para gerar uma distribui-
o ampla de endereos IP como alvos para infectar.
O verme Slammer causou quedas de sistemas e redes em razo da saturao causa-
da por seus pacotes UDP. O interessante que o verme no portava nenhuma carga ex-
plosiva mal-intencionada e atacava a vulnerabilidade de uma aplicao de uso mundial
relativamente limitado. O verme Slammer tambm continha o que parecia ser um erro
lgico no seu algoritmo de varredura que limitava significativamente o nmero de ende-
reos IP que ele podia alcanar.
Softwares antivrus podem proteger contra vrus e alguns vermes. A maioria dos
softwares antivrus reativa, o que significa que podem atacar vrus conhecidos, mas
no proteger contra vrus desconhecidos ou futuros.
15.5.3 ATAQUES DE RECUSA DE SERVIO (DoS)
Um ataque de recusa de servio (Denial-of-Service -DoS) impede um sistema de a-
tender requisies legtimas. Em muitos ataques DoS, trfego no autorizado satura os
recursos de uma rede, restringindo o acesso a usurios legtimos. Normalmente o ataque
executado pela inundao dos servidores com pacotes de dados. Ataques de recusa de
servio em geral requerem que uma rede de computadores trabalhe simultaneamente,
embora seja possvel realizar alguns ataques habilidosos com uma nica mquina. Ata-
ques de recusa de servio podem fazer com que computadores em rede caiam ou sejam
desconectados, destruindo o servio de um site Web ou at mesmo desativando sistemas
crticos como telecomunicaes ou centrais de controle de trfego areo.
Um outro tipo de ataque de recusa de servio visa s tabelas de roteamento de uma
rede. Lembre-se de que tabelas de roteamento proporcionam uma viso da topologia da
rede e so usadas por um roteador para determinar para onde enviar os dados. Esse tipo
de ataque executado modificando as tabelas de roteamento e, assim, redirecionando
propositalmente a atividade da rede. Por exemplo, as tabelas de roteamento podem ser
modificadas para que passem a enviar todos os dados que chegam a um nico endereo
da rede. Um ataque semelhante, o ataque ao sistema de nome de domnio (Domain
Name System - DNS), pode modificar o endereo para o qual o trfego de um site Web
particular enviado. Ataques desses tipos podem ser usados para redirecionar usurios
de um site Web particular para um outro site, potencialmente mal-intencionado. Esses
ataques so particularmente perigosos se o site Web ilegtimo se fizer passar por um re-
al, levando usurios a revelar informaes sensveis ao invasor.
Em um ataque de recusa de servio distribudo, a inundao de pacotes vem de
vrios computadores ao mesmo tempo. Esses ataques normalmente so iniciados por um
indivduo que infectou diversos computadores com um vrus com o intuito de obter aces-
so no autorizado aos computadores para executar o ataque. Ataques de recusa de ser-
vio distribudo podem ser difceis de interromper porque no fcil determinar quais
requisies de uma rede so de usurios legtimos e quais so parte do ataque. Tambm
particularmente difcil identificar o perpetrador desses ataques porque eles no so
executados diretamente do computador do invasor.
Em fevereiro de 2000, ataques de recusa de servio distribudo desativaram vrios si-
tes Web de trfego intenso, entre eles Yahoo, eBay, CNN Interactive e Amazon. Nesse
caso, um nico usurio utilizou uma rede de computadores para inundar os sites Web
com trfego que afogou os computadores dos sites. Embora os ataques de recusa de
servio meramente interrompam o acesso a um site Web e no afetem os dados da vti-
ma, eles podem ser extremamente custosos. Por exemplo, quando o site Web do eBay
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
168
ficou fora do ar por 24 horas, em 6 de agosto de 1999, o valor de suas aes caiu verti-
ginosamente.
Quem responsvel por vrus e ataques de recusa de servio? Na maioria das vezes,
as partes responsveis so denominadas hackers, mas esse no um nome adequado.
Na rea de computadores, hacker se refere a um programador experiente, muitas vezes
um programador que faz programas tanto para seu prprio prazer quanto pela funciona-
lidade da aplicao. O verdadeiro termo para aquele tipo de pessoa cracker, que
algum que usa um computador de maneira mal-intencionada (e muitas vezes ilegal-
mente) para invadir um outro sistema ou faz-lo falhar.
15.5.4 EXPLORAO DE SOFTWARE
Um outro problema que assola as empresas de comrcio eletrnico a explorao de
software por crackers. Todo programa de uma mquina que funciona em rede deve ser
verificado em busca de vulnerabilidades. Entretanto, com milhes de produtos de softwa-
re disponveis e vulnerabilidades descobertas diariamente, essa tarefa se toma esmaga-
dora. Um mtodo comum de explorao de vulnerabilidade um transbordamento de
buffer, no qual um programa recebe entrada maior do que seu espao alocado.
Um transbordamento de buffer ocorre quando uma aplicao envia mais dados a um
buffer do que ele pode conter. Um ataque de transbordamento de buffer pode deslocar
os dados adicionais para buffers adjacentes, corrompendo ou sobrescrevendo dados exis-
tentes. Esse tipo de ataque, quando bem projetado, pode substituir cdigo executvel da
pilha de uma aplicao para alterar seu comportamento. Ataques de transbordamento de
buffer podem conter cdigo mal-intencionado que, ento, poder executar com os mes-
mos direitos de acesso que a aplicao atacada. Dependendo do usurio e da aplicao, o
invasor pode obter acesso ao sistema inteiro. BugTraq (www.securityfocus.com) foi criado
em 1993 para listar vulnerabilidades, como explor-las e como repar-las.
15.5.5 INVASO DE SISTEMA
O resultado de muitos ataques contra a segurana a invaso do sistema ou da rede.
Segundo um estudo comparativo do Computer Security Institute (www.gocsi.com), 40%
dos entrevistados relataram que um intruso tinha conseguido invadir seus sistemas. Aps
um invasor explorar um sistema operacional ou o software que est sendo executado no
computador, o sistema fica vulnervel a inmeros ataques - desde roubo e manipulao
de dados at uma queda de sistema. A invaso de sistema uma violao bem-
sucedida da segurana do computador por um usurio externo no autorizado. Toda in-
vaso de sistema potencialmente perigosa, embora uma reao rpida em geral consi-
ga frustrar o ataque de um intruso antes que seja causado qualquer dano significativo.
Muitos ataques, como roubo de dados e desfigurao da Web, dependem de uma invaso
bem-sucedida do sistema como fundamento.
Desfigurao da Web uma forma de ataque popular pela qual os crackers obtm
acesso ilegalmente para modificar o site Web de uma organizao e mudar o seu conte-
do. A desfigurao da Web tem atrado significativa ateno dos meios de comunicao.
Um caso notvel ocorreu em 1996, quando crackers suecos modificaram o site da Central
Intelligence Agency (CIA) para "Central Stupidity Agency". Os vndalos inseriram na p-
gina obscenidades, mensagens polticas, bilhetes para administradores de sistemas e
links com sites de contedo adulto. Muitos outros sites Web populares e de grande porte
sofreram desfigurao. Hoje, desfigurar sites Web tornou-se imensamente popular entre
os crackers, o que provocou o fechamento dos arquivos de registro de sites atacados
(que registravam mais de 15 mil sites vandalizados) em razo do volume de sites vanda-
lizados diariamente.
A invaso do sistema muitas vezes ocorre como resultado de um cavalo-de-tria, um
programa de porta dos fundos ou um erro explorado no software ou no sistema opera-
cional. Permitir que usurios externos obtenham acesso a aplicaes via Web proporciona
um outro canal para o intruso invadir o sistema. Vulnerabilidades em aplicaes de servi-
dores Web comuns, como o Microsoft Internet Information Services (IIS) e o Apache
HTTP Server, do aos invasores uma rota bem conhecida para invadir um sistema se os
administradores no aplicarem as correes necessrias. A invaso de sistemas tambm
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
169
pode ocorrer em computadores pessoais por meio de softwares conectados com a Inter-
net, como navegadores Web.
15.6 PREVENO DE ATAQUES E SOLUES DE SEGURANA
A seo anterior detalhou diversos ataques comuns contra a segurana de computa-
dores. Embora o nmero de ameaas segurana de computadores talvez parea esma-
gador, na prtica, bom senso e diligncia podem evitar um grande nmero de ataques.
Para reforar a segurana, hardware e software especializados em frustrar uma varieda-
de de ataques podem ser instalados em computadores e em redes.
15.6.1 FIREWALLS
O firewall protege uma rede local (LAN) contra intrusos de fora da rede e policia o
trfego que chega e que parte da LAN. Firewalls podem proibir todas as transmisses de
dados que no sejam expressamente permitidas ou permitir todas as transmisses de
dados que no sejam expressamente proibidas. A escolha entre esses dois modelos pode
ser determinada pelo administrador de segurana da rede; o primeiro proporciona um
alto grau de segurana, mas pode impedir a transferncia legtima de dados. O ltimo
deixa o sistema mais suscetvel a ataques, mas, em geral, no restringe transferncias
legtimas na rede. Cada LAN pode ser conectada Internet por meio de um gateway
(portal) que normalmente inclui um firewall. Durante anos, as ameaas mais significati-
vas segurana originaram-se de profissionais que estavam dentro do firewall. Agora
que todas as empresas dependem intensamente do acesso Internet, um nmero cada
vez maior de ameaas segurana se origina fora do firewall - das centenas de milhes
de pessoas conectadas rede da empresa via Internet.
H dois tipos primrios de firewalls. Um firewall de filtragem de pacotes examina
todos os dados enviados de fora da LAN e rejeita pacotes de dados com base em regras
predefinidas, como rejeitar pacotes que tenham endereos da rede local ou rejeitar paco-
tes de certos endereos ou portas. Por exemplo, suponha que um hacker de fora da rede
obtenha o endereo de um computador que pertena rede e tente passar um pacote de
dados prejudicial atravs de um firewall enviando um pacote que indique ter sido enviado
de um computador de dentro da rede. Nesse caso, um firewall de filtragem de pacotes
rejeitar o pacote de dados porque o endereo de retorno do pacote que pretende entrar
foi claramente modificado. Uma limitao dos firewalls de filtragem de pacote que eles
consideram apenas a origem dos pacotes de dados; no examinam os dados anexos. O
resultado que vrus mal-intencionados podem ser instalados no computador de um u-
surio autorizado, permitindo que o invasor tenha acesso rede sem o conhecimento
daquele usurio. A meta de um gateway de nvel de aplicao proteger a rede con-
tra os dados contidos em pacotes. Se a mensagem contiver um vrus, o gateway poder
bloque-lo e impedir que seja enviado ao receptor pretendido.
Instalar um firewall um dos modos mais efetivos e mais fceis de aumentar a segu-
rana de uma rede de pequeno porte. comum que pequenas empresas ou residncias
conectadas Internet por meio de conexes permanentes, como modem por cabo, no
empreguem fortes medidas de segurana. O resultado que seus computadores so al-
vos de primeira para a explorao dos crackers por ataques de recusa de servio ou rou-
bo de informaes. Entretanto, importante que todos os computadores conectados
Internet contenham um certo grau de segurana para seus sistemas. Muitos produtos
populares de rede, como roteadores, proporcionam capacidades de firewall, e certos sis-
temas operacionais como o Windows XP fornecem software de firewall. Na verdade, o
Windows XP Internet Connection Firewall (ICF) habilitado por default.
A tecnologia da camada de ar uma soluo de segurana de rede que comple-
menta o firewall. Proporciona segurana de dados privados contra trfego externo que
tem acesso rede interna. A camada de ar separa a rede interna da rede externa, e a
organizao decide quais informaes sero disponibilizadas para usurios externos. A
Whale Communications criou o e-Gap System, composto de dois servidores e um banco
de memria. O banco de memria no executa um sistema operacional, portanto, os
hackers no podem tirar proveito dos pontos fracos comuns dos sistemas operacionais
para acessar informaes da rede.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
170
A tecnologia da camada de ar no permite que usurios de fora vejam a estrutura da
rede, o que impede que os hackers pesquisem a rede em busca de pontos fracos. A tec-
nologia de camada de ar usada por organizaes de comrcio eletrnico para permitir
que seus clientes e parceiros acessem informaes com segurana transparente, redu-
zindo, assim, o custo do gerenciamento de estoque. Os setores militar, aeroespacial e
governamental, que armazenam informaes altamente sensveis, empregam a tecnolo-
gia de camada de ar.
15.6.2 SISTEMAS DE DETECO DE INTRUSOS (IDSs)
Sistemas de deteco de intrusos (lntrusion Detection Systems - IDSs) monito-
ram arquivos de registro (log files) de redes e aplicaes que registram informaes
sobre o comportamento da rede, como o horrio em que os servios do sistema opera-
cional so requisitados e o nome do processo que os requisita. IDSs examinam arquivos
de registro para alertar os administradores do sistema contra aplicaes e/ou comporta-
mentos suspeitos do sistema. Se uma aplicao exibir comportamento errtico ou mal-
intencionado, um IDSs pode interromper a execuo daquele processo.
Sistemas de deteco de intrusos baseada no hospedeiro monitoram arquivos de
registro do sistema e da aplicao, o que especialmente til para detectar cavalos-de-
tria. Softwares de deteco de intrusos baseada na rede monitoram o trfego de
uma rede em busca de padres fora do comum que poderiam indicar ataques DoS ou
acesso rede por um usurio no autorizado. Ento, os administradores do sistema po-
dem verificar seus arquivos de registro para determinar se houve uma invaso e, caso
isso tenha acontecido, rastrear o criminoso.
A deteco de intrusos via anlise esttica tenta detectar quando aplicaes foram
corrompidas por um hacker. A tcnica da anlise esttica admite que os hackers tentam
atacar um sistema usando chamadas ao sistema. Adotando essa premissa, o primeiro
passo para detectar intrusos construir um modelo do comportamento esperado de uma
aplicao (um padro das chamadas ao sistema normalmente geradas pela aplicao).
Ento, o padro de chamadas ao sistema da aplicao monitorado durante sua execu-
o; um ataque pode ser detectado se esse padro for diferente do padro do modelo
esttico.
O mtodo OCTAVE (Operationally Critical Threat, Asset and Vulnerability Evaluati-
on), desenvolvido pelo Software Engineering lnstitute da Camegie Mellon University, ava-
lia as ameaas segurana de um sistema. O OCTAVE tem trs fases: montagem de per-
fis de ameaas, identificao de vulnerabilidades e desenvolvimento de solues e planos
de segurana. No primeiro estgio, a organizao identifica suas informaes e ativos
importantes e avalia os nveis de segurana requeridos para sua proteo. Na segunda
fase, o sistema examinado em busca de pontos fracos que poderiam comprometer os
dados valiosos. A terceira fase o desenvolvimento de uma estratgia de segurana a-
conselhada por uma equipe de anlise formada por trs a cinco especialistas designados
pelo OCTAVE. Essa abordagem uma das primeiras desse tipo, na qual os proprietrios
dos sistemas de computador no somente obtm anlise profissional, mas tambm parti-
cipam da priorizao de informaes cruciais.
15.6.3 SOFTWARE ANTIVRUS
Como discutimos na Seo 15.5.2, vrus e vermes transformaram-se em uma ameaa
para usurios profissionais e tambm residenciais e custam bilhes de dlares s empre-
sas. O nmero de vrus reportados vem aumentando continuamente desde meados da
dcada de 1990. Em resposta, softwares antivrus tm sido desenvolvidos e modificados
para atender ao nmero e variedade crescentes de ataques de vrus em sistemas de
computador. Software antivrus tenta proteger um computador contra um vrus e/ou i-
dentificar e eliminar vrus presentes naquele computador. H uma variedade de tcnicas
que os softwares antivrus podem usar para detectar e eliminar vrus presentes em um
sistema; contudo, nenhum deles pode oferecer proteo completa.
Deteco de vrus por verificao de assinatura depende de conhecer a estrutu-
ra do cdigo do vrus de computador. Por exemplo, muitos programas antivrus mantm
uma lista de vrus conhecidos e de seus cdigos. Todos os vrus contm uma regio de-
nominada assinatura do vrus que no muda durante a propagao do vrus. Na prtica,
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
171
a maioria das listas de vrus conhecidos mantm uma lista de assinaturas de vrus. Nesse
caso, o software de deteco de vrus verifica o computador e compara dados de arqui-
vos com cdigos de vrus.
Um ponto fraco das listas de vrus conhecidos que elas podem se tornar proibitiva-
mente grandes medida que os vrus proliferam. A lista de vrus deve ser atualizada pe-
riodicamente para identificar com sucesso os vrus emergentes. Talvez o ponto fraco
mais srio dessas listas seja que elas podem reconhecer somente vrus que j foram pre-
viamente identificados pelo provedor da lista. Por isso, elas em geral no protegem con-
tra vrus novos e no identificados.
Uma lista de vrus conhecidos pode ser particularmente ineficaz contra vrus variantes
e polimrficos. Um vrus variante aquele cujo cdigo foi modificado em relao sua
forma original, mas ainda retm sua carga explosiva perniciosa. Um vrus polimrfico
muda seu cdigo (por exemplo, via criptografia, substituio, insero e coisas seme-
lhantes) enquanto se propaga, para escapar das listas de vrus conhecidos (Figura 15.8).

Figura 15.8: Vrus Polimrficos
Embora assinaturas de vrus melhorem a capacidade de um verificador de vrus de-
tectar vrus e suas variantes, tambm introduzem a possibilidade de deteco falsa posi-
tiva ou falsa negativa de vrus. Alertas de vrus falsos positivos indicam incorretamente
que um vrus reside em um arquivo, ao passo que alertas falsos negativos determinam
incorretamente que um arquivo infectado est limpo. Esses resultados incorretos tomam-
se mais freqentes medida que o tamanho da assinatura de um vrus fica menor. O
problema de evitar leituras falsas positivas ou falsas negativas durante a verificao de
vrus desafiador, pois j se demonstrou que podem ser criadas assinaturas de vrus de
apenas dois bytes.
Uma alternativa para a verificao de vrus a verificao heurstica. Vrus so ca-
racterizados por replicao, residncia na memria e/ou cdigo destrutivo. Verificaes
heursticas podem evitar a propagao de vrus detectando ou suspendendo qualquer
programa que exiba esse comportamento. A fora primordial da verificao heurstica
que ela pode detectar vrus que ainda no foram identificados. Entretanto, do mesmo
modo que a verificao de assinatura, a verificao heurstica tambm suscetvel a re-
sultados falsos. A maioria dos softwares antivrus emprega uma combinao de verifica-
o de assinatura e verificao heurstica.
Todos os vrus (com exceo dos vermes) tm de modificar um arquivo para infectar
um computador. Conseqentemente, uma outra tcnica antivrus monitorar mudanas
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
172
em arquivos verificando a sua consistncia. A maioria das verificaes de consistncia
implementada como somas de verificao (checksum) de arquivos protegidos. Manter um
registro de consistncia de arquivos em um sistema que experimenta um alto volume de
E/S de arquivos no uma opo vivel se os usurios esperam tempos de resposta r-
pidos. Conseqentemente, muitos programas antivrus asseguram consistncia de arqui-
vo para um conjunto limitado de arquivos (normalmente os arquivos do sistema opera-
cional). Entretanto, verificaes de consistncia de arquivos no podem proteger contra
vrus que residem no computador antes da instalao do software antivrus. Alguns sis-
temas operacionais como o Windows XP executam verificaes de consistncia em siste-
mas de arquivos vitais e os substituem se forem alterados para proteger a integridade do
sistema.
Alm das tcnicas de verificao, os softwares antivrus podem ser caracterizados pe-
lo comportamento do seu programa. Por exemplo, verificadores de tempo real so
residentes na memria e evitam vrus ativamente, ao passo que outros softwares antiv-
rus devem ser carregados manualmente e servem apenas para identificar vrus. Alguns
programas antivrus avisam o usurio para entrar em ao quando um vrus detectado,
ao passo que outros eliminam o vrus sem a interao do usurio.
15.6.4 CORREES DE SEGURANA
Sistemas Operacionais e outros softwares contm falhas de segurana que no so
descobertas seno depois de muitos usurios os terem instalado. Para tratar falhas de
segurana de maneira oportuna, os desenvolvedores de software devem:
Descobrir falhas anteriormente desconhecidas;
Liberar rapidamente correes (patches) para as falhas; e
Estabelecer fortes linhas de comunicao com o usurio.
Para reduzir o dano causado por falhas de segurana, desenvolvedores devem abor-
dar as que j foram exploradas e procurar e sanar ativamente as que no foram explora-
das. A liberao de um cdigo que aborda uma falha de segurana denominada corre-
o de segurana (security patch).
Muitas vezes, simplesmente liberar uma correo para uma falha de segurana in-
suficiente para melhorar a segurana. Por exemplo, o verme Slammer explorava uma
falha de segurana para a qual tinha sido liberada uma correo seis meses antes. por-
tanto, desenvolvedores de software devem tratar falhas de segurana notificando seus
usurios rapidamente e disponibilizando software para facilitar o processo de aplicao
de correes de segurana.
15.6.5 SISTEMA DE ARQUIVOS SEGUROS
Acesso a recursos de sistemas, incluindo dados armazenados em um arquivo do sis-
tema, pode ser regulamentado pela poltica de controle do acesso ao sistema. Todavia,
esses mecanismos no evitam, necessariamente, o acesso a dados armazenados no disco
rgido quando esse for acessado por um sistema operacional diferente. Como conseqn-
cia, vrios dos sistemas operacionais de hoje suportam sistemas de arquivos seguros que
protegem dados sensveis independentemente do modo como os dados so acessados. O
Windows XP emprega o New Technology File System (NTFS) que protege arquivos via
controle de acesso e criptografia.
O sistema de criptografia de arquivos (Encrypting File System - EFS) usa cripto-
grafia para proteger arquivos e pastas em um sistema de arquivo NTFS. O EFS usa crip-
tografia por chave secreta e por chave pblica para garantir a segurana dos arquivos.
Cada usurio recebe um par de chaves e um certificado, usados para garantir que so-
mente o usurio que criptografou os arquivos possa ter acesso a eles. Os dados do ar-
quivo sero perdidos se a chave for perdida. O EFS em geral implementado em siste-
mas multiusurios ou sistemas mveis para assegurar que os arquivos protegidos no
estejam acessveis a algum que esteja usando uma mquina roubada ou perdida.
Criptografia pode ser aplicada a arquivos individuais ou a pastas inteiras; no ltimo
caso, cada arquivo da pasta criptografado. Aplicar criptografia no nvel de pasta muitas
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
173
vezes obtm um nvel mais alto de segurana por impedir que os programas criem arqui-
vos temporrios em texto comum.
15.6.6 O LIVRO LARANJA DA SEGURANA
Para avaliar as caractersticas de segurana de sistemas operacionais, o Departamen-
to de Defesa dos Estados Unidos (DoD) publicou um documento intitulado Department of
Defense Trusted Computer System Evaluation Criteria (Critrios Confiveis de Avaliao
de Sistemas de Computador), tambm conhecido como Orange Book (Livro Laranja) em
dezembro de 1985. Esse documento ainda usado para definir nveis de segurana de
sistemas operacionais. O Livro Laranja, originalmente elaborado para avaliar sistemas
militares, classifica-os em quatro nveis, A, B, C, e D. O nvel mais baixo de segurana
D e o mais alto A. Os requisitos de cada nvel so os seguintes:
Nvel D: Qualquer sistema que no cumpra todos os requisitos de qualquer dos
outros nveis. Sistemas categorizados como nvel D em geral so inseguros.
Nvel C: Este nvel contm dois subnveis. Subnvel C 1 requer que o sistema ope-
racional separe usurios de dados, o que significa que indivduos e grupos devem regis-
trar um nome de usurio ou de grupo e uma senha para usar o sistema. A segurana das
informaes privadas pertencentes a um indivduo ou grupo garantida, impedindo que
outros indivduos e grupos as leiam ou modifiquem. As primeiras verses do UNIX per-
tencem a esse nvel. O Nvel C2 suporta apenas acesso individual com senha, o que sig-
nifica que usurios no podem ter acesso ao sistema com um nome de grupo. Indivduos
autorizados podem acessar somente certos arquivos e programas. Ambos, C1 e C2, per-
mitem que indivduos controlem o acesso a seus arquivos e informaes privadas, o que
significa que requerem apenas controle de acesso discricionrio. A maioria dos sistemas
operacionais, como Windows NT, sistemas UNIX modernos e o IBM OS/400, est nessa
categoria.
Nvel B: Neste nvel exigido controle de acesso obrigatrio, o que significa que o
sistema operacional requer um esquema de permisso central predefinido para determi-
nar as permisses designadas a sujeitos. O criador de um objeto no controla as permis-
ses para aquele objeto. Este nvel contm trs subnveis. Alm dos requisitos de C2, o
nvel B1 requer que o sistema operacional contenha um esquema de permisso central
predefinido e aplique etiquetas de sensibilidade (por exemplo, 'Confidencial') a sujeitos e
objetos. O mecanismo de controle de acesso deve usar essas etiquetas de sensibilidade
para determinar permisses. Entre os sistemas operacionais que satisfazem os requisitos
de B1 esto HP-UX BLS, SEVMS e CS/SX. O nvel B2 requer que a linha de comunicao
entre o usurio e o sistema operacional para autenticao seja segura, alm dos requisi-
tos B1. Exemplos de sistemas que satisfazem os requisitos B2 so o Multics e o VSLAN. O
nvel B3 requer todas as caractersticas presentes em B2 alm da implementao de do-
mnios de proteo, fornecendo mecanismos de recuperao seguros (recuperao sem
comprometimento da proteo aps uma falha de sistema) e monitorando todos os aces-
sos a sujeitos e objetos para anlise. O sistema operacional XTS-300 satisfaz os requisi-
tos B3.
Nvel A: Este nvel contm dois subnveis. O subnvel A1 requer todas as caracte-
rsticas providas por B3 e exige que a segurana do sistema operacional seja formalmen-
te verificada. Um exemplo de sistema operacional que satisfaz os requisitos A1 o Boe-
ing MLS LAN. Os requisitos de A2 so reservados para uso futuro.
15.7 COMUNICAO SEGURA
O comrcio eletrnico lucrou muito com o crescimento rpido do nmero de consumi-
dores cujos computadores tm conexes com a Internet. Todavia, medida que o nme-
ro de transaes on-line aumenta, tambm aumenta o volume de dados sensveis trans-
mitidos pela Internet. Aplicaes que processam transaes requerem conexes seguras
pelas quais dados sensveis possam ser transmitidos. Diversos mtodos para fornecer
transaes seguras foram desenvolvidos nos ltimos anos. H cinco requisitos para uma
transao bem-sucedida e segura:
privacidade
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
174
integridade
autenticao
autorizao
no-rejeio
A questo da privacidade : como garantir que a informao que voc transmite pe-
la Internet no seja capturada ou passada a um terceiro sem o seu conhecimento? A
questo da integridade : como assegurar que a informao que voc envia ou recebe
no seja comprometida nem alterada? A questo da autenticao : como o emissor e
o receptor de uma mensagem verificam reciprocamente suas identidades? A questo da
autorizao : como voc gerencia o acesso a recursos protegidos com base em cre-
denciais do usurio que consistem em identidade (por exemplo, nome do usurio) e pro-
va de identidade (por exemplo, senha)? A questo da no-rejeio : como voc prova
legalmente que uma mensagem foi enviada ou recebida? A segurana de redes tambm
deve abordar a questo da disponibilidade: como assegurar que a rede e os sistemas de
computador que ela conecta funcionaro continuamente?
15.8 ESTEGANOGRAFIA
Esteganografia, derivada da raiz grega que significa 'escrita oculta', a prtica de
ocultar informao dentro de outra informao. Como a criptografia, a esteganografia
tem sido usada desde a Antigidade. Ela pode ser utilizada para ocultar uma informao,
como uma mensagem ou imagem, com uma outra imagem, mensagem ou outra forma
de multimdia.
Considere um simples exemplo textual: suponha que o cliente de um corretor de a-
es deseje realizar uma transao via canal no seguro. O cliente poderia enviar a men-
sagem "BURIED UNDER YARD" (enterrado no ptio). Se o cliente e o corretor tiverem
combinado antes que a mensagem estaria contida nas primeiras letras de cada palavra, o
corretor extrairia "BUY" (compre).
Uma aplicao cada vez mais popular da esteganografia so as marcas-d'gua digi-
tais para proteo da propriedade intelectual. A esteganografia digital explora pores
no utilizadas de arquivos codificados usando formatos particulares como em imagens ou
de discos removveis. O espao insignificante armazena a mensagem oculta, enquanto o
arquivo digital mantm sua semntica pretendida. Uma marca-d'gua digital pode ser
visvel ou invisvel. Usualmente o logotipo de uma empresa, uma declarao de direitos
autorais ou uma outra marca ou mensagem que indique o proprietrio de um documen-
to. O proprietrio de um documento poderia mostrar a marca-d'gua oculta em tribunais,
por exemplo, para provar que o item portador da marca-dgua foi roubado.
A marca-dgua digital pode causar um impacto substancial no comrcio eletrnico.
Considere a indstria musical. Distribuidores de msica e filmes esto preocupados que
as tecnologias MP3 e o MPEG facilitem a distribuio ilegal de material protegido por di-
reitos autorais. Conseqentemente, muito editores hesitam em publicar contedo on-
line, pois contedo digital fcil de copiar. E mais, porque CD-ROMs e DVD-ROMs arma-
zenam informaes digitais, usurios podem copiar arquivos multimdia e os compartilhar
via Web. Usando marcas-d'gua digitais, editores musicais podem fazer mudanas im-
perceptveis em uma certa parte de uma cano em uma freqncia que no audvel
para seres humanos para mostrar que a cano foi, de fato, copiada.
15.9 ESTUDO DE CASO: SEGURANA DE SISTEMAS UNIX
Sistemas UNIX so projetados para incentivar interao de usurios, o que pode fazer
com que fique mais difcil garantir sua segurana. Sistemas UNIX pretendem ser abertos;
suas especificaes e cdigos-fonte so amplamente disponveis.
O arquivo de senhas do UNIX criptografado. Quando um usurio digita uma senha,
ela criptografada e comparada com o arquivo de senhas criptografadas. Assim, as se-
nhas so irrecuperveis at mesmo pelo administrador do sistema. Sistemas UNIX usam
salpicamento na criptografia das senhas. O salpicamento uma cadeia de dois caracteres
selecionada aleatoriamente via funo do horrio e do ID do processo. Ento, 12 bits do
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
175
salpicamento modificam o algoritmo criptogrfico. Assim, usurios que escolhem a mes-
ma senha (por coincidncia ou intencionalmente) tero senhas criptografadas diferentes
(com alta probabilidade). Algumas instalaes modificam o programa de senhas para
impedir que usurios utilizem senhas fracas.
O arquivo de senhas deve ser legvel para qualquer usurio porque contm outras in-
formaes cruciais (por exemplo, nomes de usurios, ID de usurios e assemelhados)
requeridas por muitas ferramentas UNIX. Por exemplo, porque diretrios empregam IDs
de usurios para registrar propriedade de arquivo, ls (a ferramenta que lista contedo de
diretrios e propriedade de arquivos) precisa ler o arquivo de senhas para determinar
nomes de usurios com base em IDs de usurios. Se crackers obtiverem o arquivo de
senhas, eles podero, potencialmente, quebrar a criptografia da senha. Para tratar essa
questo, o UNIX protege o arquivo de senhas contra crackers, armazenando quaisquer
informaes que no sejam as senhas criptografadas no arquivo normal de senhas e ar-
mazenando as senhas criptografadas em um arquivo-sombra de senhas que pode ser
acessado somente por usurios com privilgio de raiz.
Com a caracterstica de permisso setuid do UNIX, um programa pode ser executado
usando os privilgios de um outro usurio. Essa caracterstica poderosa contm falhas de
segurana, particularmente quando o privilgio resultante o de um superusurio (com
acesso a todos os arquivos de um sistema UNIX). Por exemplo, se um usurio regular
conseguir executar um interpretador de comandos que pertena ao superusurio e para o
qual o bit setuid foi configurado, ento, essencialmente, o usurio regular se tornar o
superusurio. Fica claro que o setuid deve ser empregado com cuidado. Usurios, inclu-
indo os que tm privilgios de superusurio, devem examinar periodicamente seus dire-
trios para confirmar a presena de arquivos setuid e detectar quaisquer arquivos que
no devam ser setuid.
Um meio relativamente simples de comprometer a segurana em sistemas UNIX (e
em outros sistemas operacionais) instalar um programa que imprima o aviso de acesso
ao sistema (login), copie o que o usurio digitar, finja acesso invlido e permita que o
usurio tente novamente. Sem se dar conta, o usurio entregou sua senha! Uma defesa
que, se voc tiver certeza de que digitou sua senha corretamente da primeira vez, de-
ver tentar novamente o acesso ao sistema em um terminal diferente e escolher uma
nova senha imediatamente.
Sistemas UNIX incluem o comando crypt, que permite que um usurio entre uma
chave e texto comum. A sada texto cifrado. A transformao pode ser revertida trivi-
almente com a mesma chave. Um problema com essa operao que usurios tendem a
usar a mesma chave repetidamente; uma vez descoberta a chave, todos os outros arqui-
vos criptografados com essa chave podem ser lidos. s vezes, os usurios se esquecem
de apagar seus arquivos de texto comum aps produzir verses criptografadas, o que
toma a descoberta da chave muito mais fcil.
Muitas vezes, o nmero de pessoas que recebem privilgios de superusurio dema-
siadamente grande. Restringir esses privilgios pode reduzir o risco da obteno do con-
trole de um sistema por invasores por erros cometidos por usurios inexperientes. Sis-
temas UNIX fornecem um comando de identidade de usurio substituta (su) para habili-
tar usurios a executar interpretadores de comando com credenciais de usurio diferen-
tes. Toda a atividade su deve ser registrada; esse comando permite que qualquer usurio
que digite uma senha correta de um outro usurio assuma a identidade daquele usurio,
possivelmente at mesmo adquirindo privilgios de superusurio.
Uma tcnica comum de cavalo-de-tria instalar um programa su falso que obtm a
senha do usurio, envia a senha ao invasor por e-mail e restaura o programa su regular.
Nunca permita que outros tenham permisso de escrita para seus arquivos, especialmen-
te para seus diretrios; se o fizer, est convidando algum a instalar um cavalo-de-tria.
Sistemas UNIX contm uma caracterstica denominada envelhecimento de senha
(password aging) que permite ao administrador determinar por quanto tempo as senhas
sero vlidas; quando uma senha expira, o usurio recebe uma mensagem solicitando
que digite uma nova senha. Essa caracterstica apresenta vrios problemas:
1. Usurios freqentemente fornecem senhas fceis de quebrar.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
176
2. O sistema muitas vezes impede um usurio de recorrer antiga (ou a qualquer ou-
tra) senha durante uma semana, para que ele no possa fortalecer uma senha fraca.
3. Usurios muitas vezes usam apenas duas senhas intercaladamente.
Senhas devem ser trocadas com freqncia. Um usurio pode monitorar todas as su-
as datas e horrios de acesso ao sistema para determinar se um usurio no autorizado
acessou o sistema (o que significa que sua senha foi descoberta). comum que arquivos
de registro de tentativas frustradas de acesso ao sistema armazenem senhas porque, s
vezes, os usurios digitam acidentalmente sua senha quando a inteno era digitar o seu
nome de usurio.
Alguns sistemas desabilitam contas aps um pequeno nmero de tentativas mal su-
cedidas de acesso ao sistema. Essa uma defesa contra o intruso que experimenta todas
as senhas possveis. Um intruso que tenha invadido o sistema pode usar essa caracters-
tica para desabilitar a conta ou contas de usurios, incluindo a do administrador do sis-
tema, que poderia tentar detectar a intruso.
O invasor que ganhar superprivilgios temporariamente pode instalar um programa-
armadilha com caractersticas no documentadas. Por exemplo, algum que tenha aces-
so ao cdigo-fonte poderia reescrever o programa de acesso ao sistema para aceitar um
determinado nome de acesso e conceder a esse usurio privilgios de superusurio sem
nem mesmo digitar uma senha.
possvel que usurios individuais 'se apossem' do sistema e impeam que outros
usurios obtenham acesso. Um usurio pode conseguir isso gerando milhares de proces-
sos, cada um dos quais abre centenas de arquivos, preenchendo assim todos os espaos
(slots) da tabela de arquivos abertos. Uma proteo que as instalaes podem imple-
mentar para se proteger contra isso determinar limites razoveis para o nmero de
processos que um pai pode gerar e para o nmero de arquivos que um processo pode
abrir de uma s vez; porm isso, por sua vez, poderia atrapalhar usurios legtimos que
precisam dos recursos adicionais.
15.10 EXERCCIOS

221) Por que segurana e proteo so importantes mesmo para computadores que
no contm dados sensveis?

222) Qual a diferena entre segurana e proteo?

223) Considere uma cifra que reordene aleatoriamente as letras de cada palavra de
uma mensagem. Por que essa cifra no apropriada para criptografia?

224) Qual o principal ponto fraco dos algoritmos restritos?

225) Discuta as vantagens e desvantagens da criptografia por chave secreta.

226) O que limita o potencial da maioria dos algoritmos criptogrficos?

227) Qual a diferena entre criptografia de chave secreta e criptografia de chave p-
blica?

228) Dos trs mtodos de identificao (caracterstica exclusiva da pessoa, proprie-
dades de um item, conhecimento do usurio), qual deles o menos provvel de
ser comprometido por intrometidos?

229) Como a segurana poderia ser comprometida em um sistema que requer so-
mente a propriedade de um item ou apenas o conhecimento do usurio para au-
tenticao?

230) verdade que senhas mais longas e mais complicadas garantem maior segu-
rana?
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
177

231) Como o salpicamento melhora a segurana por senhas?

232) Por que difcil para um usurio no autorizado obter acesso em um sistema
que usa biometria para segurana?

233) Explique uma desvantagem de armazenar informaes do usurio no criptogra-
fadas em um carto inteligente.

234) Por que a conexo entre clientes e o servidor deve ser segura na autenticao
Kerberos?

235) Por que adequado que os bilhetes tenham prazo de expirao?

236) Dos trs servios de assinatura nica qual o mais seguro?

237) De que modo os scripts de acesso de estaes de trabalho so mais seguros do
que os scripts de servidor de autenticao?

238) O termo sujeito sempre se refere a usurios de um sistema? Justifique.

239) Explique a diferena entre copiar direitos de acesso e propagar direitos de aces-
so.

240) Por que polticas e mecanismos de controle de acesso normalmente so separa-
dos?

241) Como o MAC poderia ser mais seguro do que o DAC?

242) Em que tipo de ambiente as listas de controle de acesso so mais apropriadas
do que matrizes de controle de acesso?

243) Discuta as vantagens e desvantagens das capacidades por ficha e por ponteiros.

244) Como datas de expirao reduzem a efetividade de ataques criptoanalticos?

245) Qual a diferena entre vermes e outros vrus?

246) Quais os pontos fracos de sistema de computadores que os vrus Melissa e ILO-
VEYOU expuseram?

247) Como os ataques DNS so prejudiciais?

248) Por que difcil detectar e interromper ataques de recusa de servio distribudo?

249) Por que ataques de transbordamento de buffer so perigosos?

250) Como ataques de transbordamento de buffer podem ser evitados?

251) Cite vrias tcnicas usadas por crackers para invadir sistemas.

252) Compare desfigurao da Web e ataque DNS.

253) mais provvel que um usurio residencial use um firewall para proibir todo o
fluxo de dados no permitido expressamente ou para permitir todos os dados no
proibidos expressamente?

254) Discuta a diferena entre firewalls de filtragem de pacotes e gateways de aplica-
o.
14 Multimdia
Sistemas Operacionais Lucilia Ribeiro
178

255) Cite uma importante desvantagem dos IDSs.

256) Explique a diferena entre IDSs baseados em hospedeiro e baseados em rede.

257) A verificao de assinatura ou a verificao heurstica proporcionam melhor pro-
teo contra vrus novos e no identificados?

258) Descreva diversos pontos fracos das listas de vrus conhecidos.

259) Por que importante estabelecer fortes linhas de comunicao entre desenvol-
vedores de software e clientes na liberao de correes de segurana?

260) Por que insuficiente tratar de falhas de segurana somente depois que elas fo-
ram exploradas?

261) Quando os mecanismos de controle de acesso so insuficientes para proteger
dados de arquivos?

262) Qual o risco primordial de implementar um sistema de arquivos criptografado?

263) Um sistema que pertence categoria C2 precisa satisfazer os requisitos do nvel
B?

264) Qual a diferena entre C2 e C1?

265) Para quais dos cinco requisitos fundamentais para uma transao segura, bem-
sucedida, a criptografia seria til?

266) Quais dos cinco requisitos fundamentais tratam do acesso do usurio ao siste-
ma?

267) Por que a caracterstica setuid deve ser usada com cautela?

268) Discuta como sistemas UNIX protegem contra acessos no autorizados ao sis-
tema e como invasores podem evitar e explorar esses mecanismos.



-x-

16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
179

Multiprocessamento


Obedea justa medida, pois o momento certo ,
Entre todas as coisas, o mais importante fator.
(Hesodo)


16.1 INTRODUO
Empresas e consumidores continuam demandando substancialmente mais capaci-
dade de computao do que um processador pode oferecer. O resultado que sistemas
multiprocessadores computadores que contm mais de um processador so empre-
gados em muitos ambientes de computao.
Earth Simulator (mais poderoso at jun/03) usa 5120 processadores, cada um
funcionando a 500Mhz. Executa 35,86 Tflops (trilhes de operaes de ponto flutuante
por segundo)
Assegurar:
o Todos os processadores fiquem ocupados
o Os processos sejam distribudos equitativamente por todo o sistema
o A execuo de processos relacionados seja sincronizada
o Os processadores operem sobre cpias consistentes de dados armazenados
em memria compartilhada
o Seja imposta a excluso mtua.
16.2 ARQUITETURA DE MULTIPROCESSADOR
Engloba qualquer sistema que contenha mais de um processador: computadores
pessoais de dois processadores, servidores de alta capacidade que contm muitos pro-
cessadores e grupos distribudos de estaes de trabalho que trabalham juntas para exe-
cutar tarefas.
16.2.1 CLASSIFICAO DE ARQUITETURAS SEQUENCIAIS E PARALELAS
Flynn desenvolveu esquema para classificar computadores em configuraes de
paralelismo: consiste em quatro categorias baseadas em tipos diferentes de fluxos usa-
dos por processadores.
Fluxo uma seqncia de bytes alimentada em um processador. Um processador
aceita dois fluxos um fluxo de instrues e um fluxo de dados.
Fluxo nico de instrues, fluxo nico de dados (SISD Single-Instruction-
Stream, Single-Data-Stream) so os monoprocessadores tradicionais nos quais um nico
processador busca uma instruo por vez e a executa sobre um nico item de dados.
Pipeline e multithread podem introduzir paralelismo em computadores SISD.
Fluxo mltiplo de instrues, fluxo nico de dados (MISD Multiple-
Instruction-Stream, Single-Data-Stream) no so comumente usados. Teria vrias uni-
dades de processamento que agiriam sobre um fluxo nico de dados. Cada unidade exe-
cutaria uma instruo diferente nos dados e passaria o resultado para a prxima unida-
de.
Fluxo nico de instrues, fluxo mltiplo de dados (SIMD Single-
Instruction-Stream, Multiple-Data-Stream) emitem instrues que agem sobre vrios
itens de dados. Consiste em uma ou mais unidades de processamento. Um processador
executa uma instruo SIMD processando-a em um bloco de dados (por exemplo, adicio-
nando um a todos os elementos de um arranjo). Se houver mais elementos de dados do
16
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
180
que unidades de processamento, essas buscaro elementos de dados adicionais para o
ciclo seguinte. Isso pode melhorar o desempenho em relao s arquiteturas SISD, que
exigiriam um lao para realizar a mesma operao em um elemento de dados por vez.
Um lao contm muitos testes condicionais e requer que o processador SISD decodifique
a mesma instruo vrias vezes e que o processador SISD leia dados uma palavra por
vez. Ao contrrio, arquiteturas SIMD lem um bloco de dados por vez, reduzindo dispen-
diosas transferncias de memria para o registrador. Arquiteturas SIMD so mais efeti-
vas em ambientes em que um sistema aplica a mesma instruo a grandes conjuntos de
dados.
Computadores de fluxo mltiplo de instrues, fluxo mltiplo de dados
(Multiple-Instruction-Stream, Multiple-Data-Stream - MIMD) so multiprocessadores nos
quais as unidades processadoras so completamente independentes e operam sobre flu-
xos de instrues separados. Todavia, esses sistemas normalmente contm hardware
que permite que os processadores sincronizem-se uns com os outros quando necessrio
tal como ao acessarem um dispositivo perifrico compartilhado.
16.2.2 ESQUEMA DE INTERCONEXO DE PROCESSADORES
O esquema de interconexo de um sistema multiprocessador descreve de que
modo os componentes do sistema, como um processador e mdulos de memria, so
conectados fisicamente. O esquema de interconexo uma questo fundamental para
projetistas de multiprocessadores porque afeta o desempenho, a confiabilidade e o custo
do sistema. Um sistema de interconexo consiste em nodos e enlaces. Nodos so com-
postos de componentes do sistema e/ou de chaves que roteiam mensagens entre com-
ponentes. Um enlace uma conexo entre dois nodos. Em muitos sistemas, um nico
nodo pode ter um ou mais processadores, seus caches associados, um mdulo de mem-
ria e uma chave. Em multiprocessadores de grande escala, s vezes abstramos o concei-
to de nodo e indicamos um grupo de nodos como um nico supernodo.
Os projetistas usam diversos parmetros para avaliar esquemas de interconexo.
O grau de um nodo o nmero de nodos ao qual ele est conectado. Eles procuram mi-
nimizar o grau de um nodo para reduzir sua complexidade e o custo de sua interface de
comunicao. Nodos de graus maiores requerem hardware de comunicao mais comple-
xo para suportar comunicao entre o nodo e seus nodos vizinhos (nodos conectados a
ele).
Uma tcnica para medir a tolerncia falha de um esquema de interconexo
contar o nmero de enlaces de comunicao que devem falhar antes que a rede no pos-
sa mais funcionar adequadamente. Isso pode ser quantificado por meio da largura de
bisseo - o nmero mnimo de enlaces que precisam ser cortados para dividir a rede
em duas metades no conectadas. Sistemas que tm larguras de bisseo maiores so
mais tolerantes falha do que os que tm larguras de bisseo menores, pois mais com-
ponentes tm de falhar antes que o sistema inteiro tenha problemas.
O desempenho de um esquema de interconexo depende, em grande parte, da la-
tncia de comunicao entre nodos, que pode ser medida de vrias maneiras, sendo uma
delas a latncia mdia. Uma outra medio de desempenho o dimetro da rede - a
distncia mais curta entre os dois nodos mais remotos do esquema de interconexo. Para
determinar o dimetro da rede, considere todos os pares de nodos da rede e identifique o
caminho de comprimento mais curto para cada par - calculado pela soma do nmero de
enlaces percorridos - e ento identifique o maior desses caminhos. Um dimetro de rede
pequeno indica baixa latncia de comunicao e desempenho mais alto. Por fim, arquite-
tos de sistemas tentam minimizar o custo de um esquema de interconexo, seme-
lhante ao nmero total de enlaces de uma rede.
Veremos agora diversos modelos bem-sucedidos de interconexo e os avaliamos
com base nos critrios precedentes. Muitos sistemas reais implementam variaes des-
ses modelos. Por exemplo, eles podem agregar enlaces de comunicao extras para au-
mentar a tolerncia falha (aumentando a largura de bisseo) e o desempenho (redu-
zindo o dimetro da rede).
Barramento Compartilhado
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
181
A organizao de rede de barramento compartilhado usa um nico caminho de
comunicao (a rota pela qual as mensagens transitam) entre todos os processadores e
mdulos de memria (Figura 16.1). As interfaces de barramento dos componentes mani-
pulam operaes de transferncia. O barramento passivo e os componentes arbitram
entre eles mesmos para utilizar o barramento. Somente uma transferncia por vez pode
ocorrer no barramento porque ele no pode transmitir dois sinais eltricos ao mesmo
tempo. Portanto, antes de um componente iniciar uma transferncia, ele deve verificar se
o barramento e tambm o componente destinatrio esto disponveis. Um problema dos
barramentos compartilhados - conteno - surge quando vrios componentes querem
usar o barramento ao mesmo tempo. Para reduzir conteno e trfego no barramento,
cada processador mantm seu prprio cache local, como mostra a Figura 16.1. Quando o
sistema puder atender a uma requisio de memria por meio do cache de um processa-
dor, o processador no precisar se comunicar com um mdulo de memria atravs do
barramento. Uma outra opo montar uma arquitetura de barramentos mltiplos
compartilhados, que reduz a conteno fornecendo vrios barramentos que atendem s
requisies de comunicao. Contudo, esse esquema requer uma lgica complexa de
arbitragem de barramento e enlaces adicionais, o que aumenta o custo do sistema.

Figura 16.1: Organizao de multiprocessador de barramento compartilhado
O barramento compartilhado um esquema simples e barato para conectar um
nmero pequeno de processadores. Novos componentes podem ser adicionados ao sis-
tema ligando-os ao barramento, e o software manipula a deteco e a identificao dos
componentes do barramento. Todavia, devido conteno pelo nico caminho de comu-
nicao, as organizaes de barramento compartilhado no podem ser escaladas para
mais do que um pequeno nmero de processadores (na prtica 16 ou 32 o mximo). A
conteno exacerbada pelo fato de a velocidade do processador ter aumentado mais
rapidamente do que a largura de banda do barramento. medida que os processadores
tomam-se mais velozes, preciso menos processadores para saturar um barramento.
Barramentos compartilhados so redes dinmicas, porque enlaces de comunicao
so formados e descartados (por meio do barramento compartilhado) durante a execu-
o. Portanto, os critrios utilizados para avaliar esquemas de interconexo que discuti-
mos anteriormente no se aplicam; esses critrios se baseiam em enlaces estticos, que
no mudam durante a execuo. Contudo, em comparao a outros esquemas de inter-
conexo, um barramento compartilhado com diversos processadores rpido e barato,
mas no particularmente tolerante falha - se o barramento compartilhado falhar, os
componentes no podero se comunicar.
Os projetistas podem alavancar os benefcios de barramentos compartilhados em
multiprocessadores com um nmero maior de processadores. Nesses sistemas, manter
um nico barramento compartilhado (ou vrios barramentos) que conectam todos os
processadores no prtico, porque o barramento fica saturado com facilidade. Entre-
tanto, eles podem dividir os recursos do sistema (por exemplo, processadores e mem-
ria) em diversos pequenos supernodos. Os recursos contidos em um supernodo comuni-
cam-se via barramento compartilhado, e os supernodos so conectados usando um dos
esquemas de interconexo mais escalveis descritos nas sees seguintes. Tais sistemas
tentam manter a maior parte do trfego de comunicaes dentro de um supernodo para
explorar a arquitetura veloz do barramento e, ao mesmo tempo, habilitar comunicao
entre supernodos. A maioria dos sistemas multiprocessadores com um pequeno nmero
de processadores, como os sistemas de dois processadores Pentium, da Intel, usa uma
arquitetura de barramento compartilhado.
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
182
Matriz de Comutao de Barras Cruzadas
Uma matriz de comutao de barras cruzadas fornece um caminho separado de
cada processador para cada mdulo de memria (Figura 16.2). Por exemplo, se houver n
processadores e m mdulos de memria, haver um total de n x m comutadores, que
conectam cada processador a cada mdulo de memria. Podemos imaginar os processa-
dores como as linhas da matriz, e os mdulos de memria como as colunas. Em redes
maiores, os nodos normalmente consistem em processadores e componentes de mem-
ria, o que melhora o desempenho de acesso memria (para os acessos entre um pro-
cessador e seu mdulo de memria associado). No caso de uma matriz de comutao de
barras cruzadas, isso reduz o custo do esquema de interconexo. Nesse projeto, cada
nodo se conecta com um comutador de grau p-1, onde p o nmero de nodos processa-
dor-memria do sistema (nesse caso m = n porque cada nodo contm o mesmo nmero
de processadores e mdulos de memria).

Figura 16.2: Organizao de multiprocessador por matriz de comutao de barras cruzadas
Uma matriz de comutao de barras cruzadas pode suportar transmisses de da-
dos para todos os nodos ao mesmo tempo, mas cada nodo pode aceitar, no mximo,
uma mensagem por vez. Compare esse esquema com o barramento compartilhado, que
suporta somente uma transmisso por vez. Um comutador usa um algoritmo de arbitra-
gem do tipo 'atenda o processador requisitante que tiver sido atendido menos recente-
mente neste comutador' para resolver requisies mltiplas. O projeto de comutao de
barras cruzadas fornece alto desempenho. Pelo fato de todos os nodos estarem ligados a
todos os outros nodos e a transmisso atravs de nodos de comutao ter um custo de
desempenho trivial, o dimetro da rede mede, essencialmente, um. Cada processador
est conectado a cada mdulo de memria, portanto, para dividir uma matriz de comuta-
o de barras cruzadas em duas metades iguais, preciso que seja cortada metade dos
enlaces entre processadores e mdulos de memria. O nmero de enlaces da matriz o
produto de n por m, portanto a largura de bisseo (n x m )/2, resultando em forte
tolerncia falha. Como a Figura 16.2 mostra, h muitos caminhos que uma comunica-
o pode tomar para chegar ao seu destino.
Rede em Malha 2-D
Em um esquema de interconexo por rede em malha 2-0, cada nodo consiste em
um ou mais processadores e um mdulo de memria. No caso mais simples (Figura
16.3), os nodos de uma rede em malha so organizados em um retngulo de n filas e m
colunas, e cada nodo conectado aos nodos diretamente ao norte, sul, leste e oeste de-
le. Esse arranjo denominado rede em malha 2-D de 4 conexes. Esse projeto mantm
pequeno o grau de cada nodo, independentemente do nmero de processadores de um
sistema - os nodos dos vrtices tm grau dois, os nodos das arestas tm grau trs e os
nodos internos tm grau quatro. Na Figura 16.3, onde n = 4 e m = 5, a rede em malha
2-D pode ser dividida em duas metades iguais cortando os cinco enlaces entre a segunda
e a terceira linha de nodos. Realmente, se n for par e m mpar, a largura de bisseo
ser m + 1 se m > n e, do contrrio, ser n. Se a malha 2-D contiver um nmero par de
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
183
linhas e colunas, a largura de bisseo ser a menor entre m e n. Embora no seja to
tolerante falha como uma matriz de comutao de barras cruzadas, uma rede em ma-
lha 2-D mais tolerante do que outros projetos simples, como um barramento comparti-
lhado. Como o grau mximo de um nodo quatro, o dimetro de uma rede em malha 2-
D ser demasiadamente substancial para sistemas de grande escala. Entretanto, redes
em malha tm sido usadas em grandes sistemas nos quais a comunicao ocorre princi-
palmente entre nodos vizinhos.

Figura 16.3: Rede em malha 2-D de 4 conexes
Hipercubo
Um hipercubo n-dimensional consiste em 2n nodos, cada um ligado a n nodos vi-
zinhos. Portanto, um hipercubo bidimensional uma rede em malha 2 x 2, e um hipercu-
bo tridimensional conceitualmente um cubo. A Figura 16.4 ilustra conexes entre nodos
em um hipercubo tridimensional (parte a) e em um hipercubo tetradimensional (parte b).
Note que um hipercubo tridimensional , na verdade, um par de cubos bidimensionais no
qual os nodos correspondentes de cada cubo bidimensional esto conectados. Similar-
nente, um hipercubo tetradimensional , na verdade, um par de hipercubos tridimensio-
nais no qual os nodos correspondentes de cada hipercubo tridimensional esto conecta-
dos.

Figura 16.4: Hipercubos tridimensionais e tetradimensionar
O desempenho de um hipercubo escala melhor do que o de uma rede em malha
2-D, pois cada nodo est conectado a outros nodos por n enlaces, o que reduz o dime-
tro relativo da rede a uma rede em malha 2-D. Por exemplo, considere um multiproces-
sador de 16 nodos implementado ou como uma rede em malha 4 x 4 ou como um hiper-
cubo tetradimensional. O dimetro de uma rede em malha 4 x 4 6, enquanto o de um
cubo tetradimensional 4. Em alguns hipercubos, os projetistas adicionam enlaces de
comunicao entre nodos no vizinhos para reduzir ainda mais o dimetro da rede. A
tolerncia falha do hipercubo tambm se compara favoravelmente com a de outros
projetos. Todavia, o maior nmero de enlaces por nodo aumenta o custo de um hipercu-
bo em relao ao de uma rede em malha.
O esquema de interconexo por hipercubo eficiente para conectar um nmero
modesto de processadores e mais econmico do que uma matriz de comutao de bar-
ras cruzadas. O sistema nCUBE usado para sistemas de mdia de tempo real e de propa-
ganda digital emprega hipercubos de at 13 dimenses (8.192 nodos).
Redes Multiestgios
Um esquema alternativo de interconexo de processadores uma rede multiest-
gio. Como acontece no projeto de matriz de comutao de barras cruzadas, alguns nodos
so comutadores, e no nodos processadores com memria local. Os nodos de comuta-
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
184
o so menores, mais simples e podem ser mais bem compactados, melhorando o de-
sempenho. Para entender os benefcios de uma rede multiestgio sobre uma matriz de
comutao de barras cruzadas, considere o problema de voar entre duas cidades. Em vez
de oferecer vos diretos entre cada par de cidades, as linhas areas usam cidades gran-
des como 'centrais de distribuio' (hubs). Um vo entre duas cidades pequenas nor-
malmente consiste em diversas 'pernas', nas quais o passageiro primeiramente voa at
uma central distribuidora, possivelmente viaja entre centrais distribuidoras e por fim voa
at seu aeroporto de destino. Desse modo, as empresas areas podem programar um
nmero menor de vos no total e ainda assim conectar qualquer cidade pequena que
tenha um aeroporto com qualquer outra. Os nodos de comutao de uma rede multies-
tgio agem como centrais distribuidoras para as comunicaes entre processos, exata-
mente como os aeroportos das grandes cidades para as linhas areas.
H muitos esquemas para construir uma rede multiestgio. A Figura 16.5 mostra
uma rede multiestgio popular denominada rede mega. Cada nodo da esquerda i-
gual ao nodo da direita. Quando um processador quer se comunicar com um outro, a
mensagem viaja por uma srie de comutadores. O comutador mais esquerda corres-
ponde ao bit menos significativo (o mais direita) do identificador (ID) do processador
destinatrio; o comutador do meio corresponde ao bit do meio; e o comutador mais
direita corresponde ao bit mais significativo (o mais esquerda).

Figura 16.5: Rede mega.
Por exemplo, considere que a CPU 011 queira ler uma palavra do mdulo de me-
mria 110. A CPU envia uma mensagem para a chave 1D contendo 110. A chave toma o
primeiro bit (mais esquerda) de 110 e usa-o para o roteamento. Um 0 roteia para a
sada superior e um 1 roteia para a sada inferior. Visto que esse bit 1, a mensagem
roteada pela sada inferior rumo a 2D.
Todas as chaves do segundo estgio, incluindo 2D, usam o segundo bit para o ro-
teamento. Este tambm 1, de modo que a mensagem agora encaminhada para a
sada inferior rumo a 3D. nesse estgio, verifica-se que o terceiro bit 0. Consequente-
mente, a mensagem vai pela sada superior e chega memria 110, conforme desejado.
O caminho seguido por essa mensagem marcado na Figura 16.5 pela letra a.
Redes multiestgios representam uma soluo de compromisso entre custo e de-
sempenho. Esse projeto emprega hardware simples para conectar grandes nmeros de
processadores. Qualquer processador pode se comunicar com qualquer outro sem rotear
a mensagem por processadores intermedirios. Entretanto, o dimetro de uma rede mul-
tiestgio maior, portanto, a comunicao mais lenta do que na matriz de comutao
de barras cruzadas - cada mensagem tem de passar por vrios comutadores. E, tambm,
pode se desenvolver conteno nos elementos de comutao, o que pode degradar o
desempenho.
16.2.3 SISTEMAS FRACAMENTE x FRACAMENTE ACOPLADOS
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
185
Uma outra caracterstica que define multiprocessadores como eles compartilham
recursos do sistema. Em um sistema fortemente acoplado (tightly coupled system)
(Figura 16.6), processadores compartilham a maioria dos recursos do sistema. Sistemas
fortemente acoplados freqentemente empregam barramentos compartilhados, e os pro-
cessadores usualmente se comunicam via memria compartilhada. Normalmente um
sistema operacional centralizado que gerencia os componentes do sistema. Sistemas
fracamente acoplados (llosely coupled systems) (Figura 16.7) normalmente conectam
componentes indiretamente por meio de enlaces de comunicao. s vezes os processa-
dores compartilham memria, mas muitas vezes cada processador mantm sua prpria
memria local, qual o seu acesso muito mais rpido do que ao resto da memria. Em
outros casos, passar mensagens a nica forma de comunicao entre processadores, e
a memria no compartilhada.

Figura 16.6: Sistema fortemente acoplado


Figura 16.7: Sistema fracamente acoplado
Em geral, sistemas fracamente acoplados so mais flexveis e escalveis do que
os fortemente acoplados. Quando os componentes so fracamente conectados, projetis-
tas podem adicionar ou remover componentes do sistema com facilidade. A fraca acopla-
gem tambm aumenta a tolerncia a falha porque os componentes podem funcionar in-
dependentemente uns dos outros. Todavia, sistemas fracamente acoplados normalmente
so menos eficientes porque se comunicam passando mensagens por um enlace de co-
municao, o que mais lento do que se comunicar por meio de memria compartilhada.
Isso tambm resulta em carga sobre os programadores de sistemas operacionais que
normalmente ocultam dos programadores de aplicaes a maior parte da complexidade
da passagem de mensagens. O Earth Simulator do Japo um exemplo de sistema fra-
camente acoplado.
Sistemas fortemente acoplados, ao contrrio, executam melhor, mas so menos
flexveis. Esses sistemas no escalam bem, pois a conteno por recursos compartilhados
aumenta rapidamente medida que so adicionados processadores. Por essa razo, a
maioria dos sistemas com um grande nmero de processadores fracamente acoplada.
Em um sistema fortemente acoplado, projetistas podem otimizar interaes entre com-
ponentes para aumentar o desempenho do sistema. Contudo, isso reduz a flexibilidade e
a tolerncia a falha do sistema, porque um componente depende de outros componentes.
Um sistema lntel Pentium de dois processadores um exemplo de sistema fortemente
acoplado.
16.3 ORGANIZAO DE SISTEMAS OPERACIONAIS MULTIPROCESSADORES
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
186
A organizao e a estrutura de sistemas operacionais multiprocessadores so sig-
nificativamente diferentes da organizao e estrutura de sistemas operacionais monopro-
cessadores. Nesta seo categorizaremos multiprocessadores com base no modo como
eles compartilham responsabilidades de sistema operacional. As organizaes bsicas de
sistemas operacionais multiprocessadores so mestre/escravo, ncleos separados para
cada processador e tratamento simtrico (ou annimo) de todos os processadores.
16.3.1 MESTRE/ESCRAVO
A organizao mestre/escravo de sistemas operacionais multiprocessadores de-
signa um processador como o mestre e os outros como escravos (Figura16.8). O mestre
executa cdigo de sistema operacional; os escravos executam somente, programas u-
surios. O mestre executa entrada/sada e clculos. Os escravos podem executar jobs
dirigidos a processador efetivamente, mas a execuo de jobs dirigidos a E/S em escra-
vos provoca chamadas freqentes a servios que somente o mestre pode executar. Do
ponto de vista da tolerncia a falha, quando um escravo falha, h uma certa perda de
capacidade de computao, mas o sistema continua a funcionar. A falha do processador
mestre catastrfica e pra o sistema. Sistemas mestre/escravo so fortemente acopla-
dos, pois todos os processadores escravos dependem do mestre.

Figura 16.8: Multiprocessamento mestre/escravo
O problema primordial do multiprocessamento mestre/escravo a assimetria de
hardware, porque somente o processador mestre executa o sistema operacional. Quando
um processo que est executando em um processador escravo requer a ateno do sis-
tema operacional, o processador escravo gera uma interrupo e espera que o mestre a
gerencie.
16.3.2 NCLEOS SEPARADOS
Na organizao de multiprocessadores de ncleos separados, cada processador
executa seu prprio sistema operacional e responde a interrupes de processos de mo-
do usurio que esto em execuo naquele processador. Um processo atribudo a um
processador em particular executa naquele processador at a concluso. Diversas estru-
turas de dados do sistema operacional contm informaes globais do sistema, como a
lista de processos conhecidos pelo sistema. O acesso a essas estruturas de dados deve
ser controlado com tcnicas de excluso mtua. Sistemas que utilizam a organizao de
ncleos separados so fracamente acoplados. Essa organizao mais tolerante a falha
do que a organizao mestre/escravo - se apenas um nico processador falhar, impro-
vvel que o sistema falhe. Todavia, os processos que estavam em execuo no proces-
sador que sofreu a falha no podem ser executados at que sejam reiniciados em outro
processador.
Na organizao de ncleos separados, cada processador controla seus prprios re-
cursos dedicados, como arquivos e dispositivos de E/S. Interrupes de E/S retornam
diretamente aos processadores que iniciaram essas interrupes.

Figura 16.9: Ncleo Separado
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
187
Essa organizao beneficia-se da mnima conteno pelos recursos do sistema o-
peracional, pois os recursos so distribudos entre os sistemas operacionais individuais
para seu prprio uso. Todavia, processadores no cooperam para executar um processo
individual, portanto alguns processadores podem ficar ociosos enquanto um processador
executa um processo multithread.
16.3.3 ORGANIZAO SIMTRICA
A organizao simtrica de multiprocessadores a mais complexa de implemen-
tar, mas tambm a mais poderosa. O sistema operacional gerencia um repositrio de
processadores idnticos, cada um dos quais pode controlar qualquer dispositivo de E/S
ou se referir a qualquer unidade de armazenamento. A simetria possibilita balancear a
carga de trabalho com maior preciso do que em outras organizaes.
Pelo fato de muitos processadores poderem executar o sistema operacional ao
mesmo tempo, a excluso mtua deve ser imposta sempre que o sistema operacional
modificar as estruturas de dados compartilhadas. As tcnicas de resoluo de conflitos de
hardware e software so importantes.
Organizaes simtricas de sistemas multiprocessadores em geral so mais tole-
rantes a falha. Quando um processador falha, o sistema operacional o elimina de seu
repositrio de processadores disponveis. O sistema se degrada graciosamente enquanto
os reparos so realizados. E, tambm, um processo que esteja sendo executado em uma
organizao simtrica de sistema pode ser despachado para qualquer processador. Con-
seqentemente, um processo no depende de um processador especfico como acontece
na organizao de ncleos separados. O sistema operacional 'flutua' de um processador
para o seguinte.

Figura 16.10: Organizao Simtrica
Uma desvantagem da organizao simtrica de multiprocessadores a conteno
pelos recursos do sistema operacional, como as estruturas de dados compartilhadas. Um
projeto cuidadoso das estruturas de dados do sistema essencial para evitar travamento
excessivo que impea que o sistema operacional execute em vrios processadores ao
mesmo tempo. Uma tcnica que minimiza a conteno dividir as estruturas de dados
do sistema em entidades separadas e independentes que podem ser travadas individu-
almente.
Mesmo em sistemas multiprocessadores completamente simtricos, adicionar no-
vos processadores no resulta em aumento do rendimento do sistema em virtude das
capacidades nominais dos novos processadores. H muitas razes para isso, entre elas
sobrecarga adicional do sistema operacional, aumento da conteno por recursos do sis-
tema e atrasos de hardware nas rotinas de chaveamento e roteamento entre um nmero
maior de componentes.
16.4 ARQUITETURAS DE ACESSO MEMRIA
At aqui classificamos sistemas multiprocessadores segundo as caractersticas do
hardware e segundo o modo como os processadores compartilham as responsabilidades
do sistema operacional. Tambm podemos classificar sistemas multiprocessadores pelo
modo como compartilham a memria. Por exemplo, considere um sistema com poucos
processadores e uma pequena quantidade de memria. Se o sistema contiver um grupo
de mdulos de memria facilmente acessvel por todos os processadores (via barramento
compartilhado), poder manter acesso rpido memria. Todavia, sistemas que tm
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
188
muitos processadores e mdulos de memria saturaro o barramento que fornece acesso
a esses mdulos de memria. Nesse caso, uma frao da memria pode ser vinculada a
um processador de modo que ele possa acessar sua memria mais eficientemente. Por-
tanto, projetistas devem ponderar as preocupaes com desempenho, custo e escalabili-
dade de um sistema ao determinar a arquitetura de acesso memria dele.
16.4.1 ACESSO UNIFORME MEMRIA
Arquiteturas de multiprocessador de acesso uniforme memria (Uniform-
Memory-Access multiprocessor - UMA) requerem que todos os processadores comparti-
lhem a memria principal do sistema (Figura 16.11). Essa uma extenso direta da ar-
quitetura de memria de um monoprocessador, mas com vrios processadores e mdu-
los de memria. Normalmente, cada processador mantm seu prprio cache para reduzir
a conteno no barramento e aumentar o desempenho. O tempo de acesso memria
uniforme para qualquer processador que acessar qualquer item de dado, exceto quando
esse estiver armazenado no cache de um processador ou quando houver conteno no
barramento. Sistemas UMA tambm so denominados sistemas multiprocessadores si-
mtricos (Symmetric MultiProcessor - SMP) porque qualquer processador pode ser desig-
nado para qualquer tarefa, e todos os processadores compartilham todos os recursos
(incluindo memria, dispositivos de EIS e processos). Multiprocessadores UMA com um
pequeno nmero de processadores normalmente usam uma interconexo de rede de
barramento compartilhado ou de matriz de comutao de barras cruzadas. Os dispositi-
vos de E/S so ligados diretamente rede de interconexo e igualmente acessveis a
todos os processadores.

Figura 16.11: Multiprocessador UMA
Arquiteturas UMA so encontradas normalmente em sistemas multiprocessadores
pequenos (de dois a oito processadores). Multiprocessadores UMA no escalam bem - um
barramento torna-se rapidamente saturado quando mais do que alguns processadores
acessam a memria principal simultaneamente, e matrizes de comutao de barras cru-
zadas ficam muito caras mesmo para sistemas de tamanhos modestos.
16.4.2 ACESSO NO UNIFORME MEMRIA
Arquiteturas de multiprocessador de acesso no uniforme memria (NonUni-
form-Memory-Access - NUMA) abordam os problemas de escalabilidade da UMA. O gar-
galo primrio de um sistema UMA de grande escala o acesso memria compartilhada
- o desempenho se degrada devido conteno entre numerosos processadores que es-
to tentando acessar a memria compartilhada. Se for usada uma matriz de comutao
de barras cruzadas, o custo do esquema de interconexo pode aumentar substancial-
mente para facilitar vrios caminhos memria compartilhada. Multiprocessadores NUMA
gerenciam esses problemas relaxando a restrio de uniformidade imposta aos tempos
de acesso memria para todos os processadores que esto acessando qualquer item de
dado.
Multiprocessadores NUMA mantm uma memria global compartilhada que pode
ser acessada por todos os processadores. A memria global fracionada em mdulos, e
cada nodo usa um desses mdulos de memria como a memria local do processador.
Na Figura 16.12, cada nodo contm um processador, mas isso no uma exigncia. Em-
bora a implementao do esquema de interconexo possa variar, os processadores so
conectados diretamente a seus mdulos de memria local e conectados indiretamente ao
restante da memria global. Esse arranjo proporciona acesso mais rpido memria lo-
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
189
cal do que ao restante da memria global porque o acesso memria global requer per-
correr a rede de interconexo.

Figura 16.12: Multiprocessador NUMA
A arquitetura NUMA tem alto grau de escalabilidade, pois reduz colises no bar-
ramento quando a memria local de um processador atende maioria das requisies de
memria do processador. Sistemas NUMA podem implementar uma estratgia que trans-
fere pginas para o processador no qual essas pginas so acessadas mais freqente-
mente - uma tcnica denominada migrao de pginas, que veremos posteriormente.
Normalmente, sistemas NUMA podem suportar um grande nmero de processadores,
mas seu projeto mais complexo do que o projeto dos UMAs, e a implementao de sis-
temas com muitos processadores pode ser cara.
16.4.3 ARQUITETURA DE MEMRIA SOMENTE DE CACHE
Como descrito anteriormente, cada nodo de um sistema NUMA mantm sua pr-
pria memria local, a qual os processadores de outros nodos podem acessar. Muitas ve-
zes, o acesso memria local radicalmente mais rpido do que o acesso memria
global (ou seja, acesso a um outro nodo da memria local). A latncia de falta de cache
(cache- miss latency) - o tempo requerido para recuperar dados que no esto no cache
- pode ser significativa quando o dado requisitado no estiver presente na memria local.
Um modo de reduzir a latncia de falta de cache reduzir o nmero de requisies de
memria atendidas por nodos remotos. Lembre-se de que sistemas NUMA colocam dados
na memria local do processador que acessa esses dados mais freqentemente, o que
no prtico para um compilador ou programador implementar, pois os padres de a-
cesso aos dados mudam dinamicamente. Sistemas operacionais podem executar essa
tarefa, mas podem transferir somente pores de dados do tamanho de uma pgina, o
que pode reduzir a velocidade de migrao de dados. E, tambm, itens de dados diferen-
tes em uma nica pgina muitas vezes so acessados por processadores em nodos dife-
rentes.
Multiprocessadores de arquitetura de memria somente de cache (Cache-Only
Memory Architecture - COMA) usam uma ligeira variao da NUMA para abordar essa
questo do posicionamento da memria (Figura 16.13). Multiprocessadores COMA tm
um ou mais processadores, cada um com seu cache associado e uma frao da memria
global compartilhada. Contudo, a memria associada com cada nodo organizada como
um grande cache conhecido como memria de atrao (MA), o que permite que o hard-
ware migre dados eficientemente na granularidade de uma linha de memria - equivalen-
te a uma linha de cache, mas na memria principal e, normalmente, de quatro ou oito
bytes. E, tambm, porque a memria local de cada processador vista como um cache,
MAs diferentes podem ter cpias da mesma linha de memria. Com essas modificaes
de projeto comum que os dados residam na memria local do processador que usa es-
ses dados mais freqentemente, o que reduz a latncia mdia de falta de cache. As per-
mutas so sobrecarga de memria devido duplicao dos itens de dados em vrios m-
dulos de memria e hardware e protocolos complicados para garantir que atualizaes da
memria sejam refletidas em cada MA do processador. Essa sobrecarga resulta em latn-
cia mais alta para as faltas de cache atendidas remotamente.
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
190

Figura 16.13: Multiprocessador COMA
16.4.4 SEM ACESSO MEMRIA REMOTA
Multiprocessadores UMA, NUMA e COMA so fortemente acoplados. Embora multi-
processadores NUMA (e COMA, em menor extenso) escalem bem, requerem software e
hardware complexos. O software controla o acesso a recursos compartilhados como a
memria; o hardware implementa o esquema de interconexo. Multiprocessadores sem
acesso memria remota (NO-Remote-Memory-Access - NORMA) so multiprocessado-
res fracamente acoplados que no fornecem nenhuma memria global compartilhada
(Figura 16.14). Cada nodo mantm sua prpria memria local, e multiprocessadores
NORMA freqentemente implementam uma memria virtual compartilhada (Shared Vir-
tual Memory - SVM) comum. Em um sistema SVM, quando um processo requisita uma
pgina que no est na memria local do seu processador, o sistema operacional carrega
a pgina na memria local por meio de um outro mdulo de memria (de um computa-
dor remoto atravs de uma rede) ou do armazenamento secundrio (por exemplo, um
disco). Nodos de sistemas NORMA que no suportam SVM devem compartilhar dados por
meio de passagem de mensagens explcita. O Google, que alimenta seu servio usando
15 mil servidores baratos localizados no mundo inteiro, um exemplo de sistema multi-
processador distribudo NORMA.

Figura 16.14: Multiprocessador NORMA
Sistemas NORMA so os mais simples de construir, porque no requerem um sis-
tema de interconexo complexo. Todavia, a ausncia de memria global compartilhada
requer que programadores de aplicaes implementem IPC via passagem de mensagem
e chamadas remotas de procedimentos. H muitos sistemas em que usar memria virtu-
al compartilhada ineficiente, pois o sistema teria de enviar pginas inteiras de dados de
um processador para o seguinte, e esses processadores nem sempre estariam na mesma
mquina fsica.
Como os multiprocessadores NORMA so fracamente acoplados, relativamente
fcil remover ou adicionar nodos. Esses multiprocessadores so sistemas distribudos
regidos por um nico sistema operacional, em vez de redes de computadores com seu
prprio sistema operacional. Se um nodo de um sistema NORMA falhar, basta o usurio
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
191
comutar para outro nodo e continuar trabalhando. Se 1% dos nodos falharem em um
multiprocessador NORMA, o sistema s executar 1% mais lentamente.
16.5 COMPARTILHAMENTO DE MEMRIA EM MULTIPROCESSADORES
Quando vrios processadores com caches privados ou memrias locais acessam
memria compartilhada, os projetistas tm de abordar o problema da coerncia de me-
mria. A memria coerente se o valor obtido da leitura de um endereo de memria for
sempre o valor escrito mais recentemente para aquele endereo. Por exemplo, considere
dois processadores que mantm uma cpia separada da mesma pgina em suas mem-
rias locais. Se um processador modificar sua cpia local, o sistema dever garantir que a
outra cpia da pgina seja atualizada para refletir as ltimas mudanas. Multiprocessado-
res que permitem que somente uma cpia de pgina resida no sistema por vez (como
sistemas UMA e sistemas NUMA pequenos) ainda assim devem garantir coerncia de ca-
che - ler uma entrada de cache reflete a atualizao mais recente daqueles dados. Sis-
temas de grande escala (como sistemas NORMA ou sistemas NUMA de grande escala)
muitas vezes permitem que a mesma pgina de memria resida na memria local de
diversos processadores. Esses sistemas devem integrar coerncia de memria em sua
implementao de memria virtual compartilhada.
Outras importantes consideraes de projeto so posicionamento e replicao de
pginas. O acesso memria local muito mais rpido do que o acesso memria glo-
bal, portanto, garantir que os dados acessados por um processador residam na memria
local daquele processador pode melhorar o desempenho. H duas estratgias comuns
para abordar essa questo. A replicao de pgina mantm vrias cpias de uma pgina
da memria, de modo que ela possa ser acessada rapidamente em vrios nodos. A mi-
grao de pgina transfere pginas para o nodo (ou nodos, quando usada com replicao
de pgina) no qual os processadores mais acessam uma pgina. Posteriormente, consi-
deraremos implementaes dessas duas estratgias.
16.5.1 COERNCIA DE CACHE
A coerncia de memria passou a ser uma considerao de projeto quando surgi-
ram os caches, porque as arquiteturas de computador permitiam caminhos de acesso
diferentes aos dados (ou seja, por meio da cpia do cache ou da cpia da memria prin-
cipal). Em sistemas multiprocessadores a coerncia complicada pelo fato de que cada
processador mantm um cache privado.
Coerncia de cache UMA
Implementar protocolos de coerncia de cache para multiprocessadores UMA
simples porque os caches so relativamente pequenos e o barramento que conecta a
memria compartilhada relativamente rpido. Quando um processador atualiza um
item de dado, o sistema tambm deve atualizar ou descartar todas as instncias daquele
dado nos caches de outros processadores e na memria principal, o que pode ser reali-
zado por escuta do barramento (tambm denominado escuta do cache). Nesse protocolo
um processador 'escuta' o barramento determinando se uma escrita requisitada de um
outro processador para um item de dado que est no cache do processador. Se o dado
residir no cache do processador, esse remove o item de dado do seu cache. A escuta de
barramento simples de implementar, mas gera trfego adicional no barramento com-
partilhado. Como alternativa, o sistema pode manter um diretrio centralizado que regis-
tre os itens que residem em cada cache e indique quando remover dados envelhecidos
(dados que no refletem a atualizao mais recente) de um cache. Uma outra opo o
sistema permitir que somente um processador faa o cache de um determinado item da
memria.
NUMA com cache coerente (CC-NUMA)
NUMAs com cache coerente (Cache-Coherent NUMAs -CC-NUMAs) so multipro-
cessadores NUMA que impem coerncia de cache. Em uma arquitetura CC-NUMA tpica,
cada endereo de memria fsica est associado a um nodo nativo responsvel por arma-
zenar o item de dado com aquele endereo de memria principal. (Muitas vezes o nodo
nativo simplesmente determinado pelos bits de ordem mais alta do endereo). Quando
ocorrer uma falta de cache em um nodo, este contacta o nodo hospedeiro associado ao
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
192
endereo de memria requisitado. Se o item de dado estiver limpo (se nenhum outro
nodo tiver uma verso modificada do item de dado em seu cache), o nodo nativo o des-
pachar para o cache do processador requisitante. Se o item de dado estiver sujo (se um
outro nodo escreveu para o item de dado desde a ltima vez que a entrada da memria
principal foi atualizada), o nodo nativo despachar a requisio para o nodo que tem a
cpia suja; esse nodo envia o item de dado para o requisitante e tambm para o nodo
nativo. Similarmente, requisies para modificar dados so realizadas via nodo nativo. O
nodo que desejar modificar dados em determinado endereo de memria requisita pro-
priedade exclusiva dos dados. A verso mais recente dos dados (se j no estiver no ca-
che do nodo modificador) obtida da mesma maneira que uma requisio de leitura.
Aps a modificao, o nodo nativo notifica a outros nodos com cpias dos dados que os
dados foram modificados.
Esse protocolo relativamente simples de implementar porque todas as leituras e
escritas contactam primeiramente o nodo nativo e, embora possa parecer ineficiente,
esse protocolo de coerncia requer o nmero mximo de apenas trs comunicaes de
rede. (Considere quanto trfego seria gerado se um nodo que est escrevendo tivesse de
contactar todos os outros nodos.) Esse protocolo tambm facilita a distribuio de carga
por todo o sistema - designando cada nodo como o nodo nativo de aproximadamente o
mesmo nmero de endereos -, o que aumenta a tolerncia a falha e reduz a conteno.
Contudo, esse protocolo pode ter mau desempenho se a maioria dos acessos aos dados
vier de nodos remotos.
16.5.2 REPLICAO E MIGRAO DE PGINAS
A latncia de acesso memria de sistemas NUMA mais alta do que a de multi-
processadores UMA, o que limita o desempenho do NUMA. Portanto, maximizar o nmero
de faltas de cache atendidas pela memria local uma considerao importante do pro-
jeto do NUMA. O projeto do COMA uma tentativa de resolver a questo da latncia do
NUMA. Sistemas CC-NUMA abordam a questo da latncia implementando estratgias de
migrao ou de replicao de pginas.
Replicar uma pgina uma operao direta. O sistema copia todos os dados de
uma pgina remota para uma pgina da memria local do processador requisitante. Para
manter coerncia de memria, o sistema usa uma estrutura de dados que registra onde
esto todas as pginas replicadas. A migrao de pginas ocorre de um modo similar,
exceto que, depois de uma pgina ter sido replicada, o nodo original apaga a pgina da
sua memria e descarrega qualquer TLB ou entradas de cache associadas.
Embora migrar e replicar pginas proporcione benefcios bvios, essas estratgias
podem degradar o desempenho se no forem implementadas corretamente. Por exem-
plo, referir-se a uma pgina remotamente mais rpido do que migrar ou replicar aquela
pgina. Portanto, se um processo se referir a uma pgina remota apenas uma vez, ser
mais eficiente no migrar nem replicar a pgina. Alm disso, algumas pginas so me-
lhores candidatas para replicao do que para migrao e vice-versa. Por exemplo, pgi-
nas lidas freqentemente por processos em diferentes processadores seriam beneficiadas
pela replicao, pois todos os processos ficariam habilitados a acessar aquela pgina da
memria local. E, tambm, a desvantagem da replicao - manter coerncia nas escritas
- no seria problema para uma pgina somente de leitura. Uma pgina freqentemente
modificada por um processo uma boa candidata para migrao; se outros processos
estiverem lendo daquela pgina no seria vivel replic-la porque esses processos teriam
de buscar atualizaes continuamente no nodo que est escrevendo. Pginas escritas
freqentemente por processos em mais de um processador no so boas candidatas nem
para replicao nem para migrao, pois elas sero migradas ou replicadas aps cada
operao de escrita.
Para ajudar a determinar a melhor estratgia, muitos sistemas mantm o histrico
de informaes de acesso de cada pgina. Um sistema poderia usar essas informaes
para determinar quais pginas so acessadas freqentemente - essas devem ser consi-
deradas para replicao ou migrao. A sobrecarga envolvida na replicao e na migra-
o de uma pgina no se justifica para pginas que no so acessadas com freqncia.
Um sistema tambm poderia manter informaes sobre quais processadores remotos
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
193
esto acessando a pgina e se esses processadores esto lendo a pgina ou escrevendo
para ela. Quanto mais informaes sobre o acesso s pginas o sistema reunir, melhores
decises poder tomar. Contudo, reunir esse histrico e transferi-lo durante a migrao
incorre em sobrecarga. Assim, o sistema deve coletar informaes suficientes para tomar
boas decises de replicao ou migrao sem provocar sobrecarga excessiva da manu-
teno dessas informaes.
16.5.3 MEMRIA VIRTUAL COMPARTILHADA
Compartilhar memria em multiprocessadores pequenos, fortemente acoplados,
como um multiprocessador UMA, uma extenso direta do compartilhamento de mem-
ria em monoprocessadores, pois todos os processadores acessam os mesmos endereos
fsicos com igual latncia de acesso. Essa estratgia invivel para multiprocessadores
NUMA de grande escala devido latncia de acesso memria remota, e impossvel
para multiprocessadores NORMA, que no compartilham memria fsica. Como a IPC por
meio de memria compartilhada mais fcil do que a IPC via troca de mensagem, mui-
tos sistemas habilitam processos a compartilhar memria localizada em diferentes nodos
(e talvez em diferentes espaos de endereamento fsico) pela memria virtual comparti-
lhada (Shared Virtual Memory - SVM). A SVM estende conceitos de memria virtual de
monoprocessador garantindo coerncia de memria para pginas acessadas por vrios
processadores. Duas questes que se apresentam aos projetistas de SVM so selecionar
qual protocolo de coerncia usar e quando aplic-lo. Os dois protocolos primordiais de
coerncia so a invalidao e a difuso de escrita. Primeiramente descreveremos esses
protocolos e, ento, consideraremos como implement-los.
Invalidao
Na abordagem da invalidao da coerncia de memria somente um processador
pode acessar a pgina enquanto ela est sendo modificada - o que denominado propri-
edade de pgina. Para obter propriedade de pgina, um processador deve primeiro inva-
lidar (negar acesso a) todas as outras cpias da pgina. Aps o processador obter a pro-
priedade, o modo de acesso da pgina modificado para leitura/escrita e o processador
copia a pgina para sua memria local antes de acess-la. Para obter acesso de leitura a
uma pgina, um processador deve requisitar que o processador que tem a propriedade
de acesso de leitura/escrita modifique seu modo de acesso para somente leitura. Se a
requisio for concedida, outros processos podem copiar a pgina para a memria local e
l-la. Normalmente o sistema emprega a poltica de sempre conceder requisies, a me-
nos que um processador esteja esperando para obter a propriedade da pgina; no caso
da negao de uma requisio, o requisitante deve esperar at que a pgina esteja dis-
ponvel. Note que vrios processos que modificam uma nica pgina concorrentemente
resultam em mau desempenho porque processadores que esto na disputa invalidam
repetidamente as cpias da pgina de outros processadores.
Difuso de Escrita
Na abordagem de coerncia de memria por difuso de escrita o processador que
est escrevendo comunica cada modificao a todo o sistema. Em uma das verses des-
sa tcnica somente um processador pode obter a propriedade de uma pgina. Em vez de
invalidar todas as outras cpias da pgina existentes, o processador atualiza todas essas
outras cpias. Em uma segunda verso, diversos processadores obtm acesso de escrita
para aumentar a eficincia. Como esse esquema no requer que escritores obtenham
propriedade de escrita, processadores devem assegurar que as diversas atualizaes de
uma pgina sejam aplicadas na ordem correta, o que pode incorrer em sobrecarga signi-
ficativa.
Implementao de Protocolos de Coerncia
H diversas maneiras de implementar um protocolo de coerncia de memria,
embora os projetistas devam tentar limitar o trfego de acessos memria no barra-
mento. Garantir que cada escrita seja refletida para todos os nodos logo que possvel
pode reduzir o desempenho; todavia, relaxar as restries de coerncia pode produzir
resultados errneos se os programas usarem dados ultrapassados. Em geral, uma im-
plementao deve equilibrar desempenho com integridade dos dados.
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
194
Sistemas que usam consistncia seqencial asseguram que todas as escritas
sejam imediatamente refletidas em todas as cpias da pgina. Esse esquema no escala
bem para sistemas grandes devido ao custo de comunicao e ao tamanho da pgina. A
comunicao internodos lenta em comparao com o acesso memria local; se um
processo atualizar repetidamente a mesma pgina, o resultado ser muitas comunica-
es desperdiadas. E tambm, porque o sistema operacional manipula pginas, as quais
muitas vezes contm muitos itens de dados, essa estratgia poderia resultar em falso
compartilhamento, no qual processos que estejam sendo executados em ns separa-
dos poderiam precisar de acesso a dados no relacionados na mesma pgina. Nesse ca-
so, a consistncia seqencial efetivamente requer que dois processos compartilhem a
pgina, mesmo que suas modificaes no afetem um ao outro.
Sistemas que utilizam consistncia relaxada executam operaes de coerncia
periodicamente. A premissa por trs dessa estratgia que o usurio no perceber se a
coerncia para dados remotos sofrer um atraso de alguns segundos e ela pode aumentar
o desempenho e reduzir o efeito de falso compartilhamento.
16.6 ESCALONAMENTO DE MULTIPROCESSADORES
As metas do escalonamento de multiprocessadores so as mesmas do escalona-
mento de monoprocessadores - o sistema tenta maximizar rendimento e minimizar tem-
pos de resposta para todos os processos. Alm disso, ele deve impor prioridade de esca-
lonamento.
Diferentemente dos algoritmos de escalonamento de monoprocessadores, que de-
terminam somente em que ordem os processos so despachados, os algoritmos de esca-
lonamento de multiprocessadores devem assegurar que os processadores no fiquem
ociosos enquanto esto esperando que os processos executem.
Ao determinar o processador no qual um processo executado, o escalonador
considera diversos fatores. Por exemplo, algumas estratgias focalizam o mximo parale-
lismo em um sistema para explorar a concorrncia de aplicaes. Sistemas freqente-
mente agrupam processos colaboradores em um job. Executar os processos de um job
em paralelo melhora o desempenho, habilitando esses processos a executar verdadeira-
mente de maneira simultnea. Esta seo apresenta diversos algoritmos de escalona-
mento de compartilhamento de tempo que tentam explorar tal paralelismo escalo-
nando processos colaborativos em diferentes processadores, o que habilita o processo a
sincronizar sua execuo concorrente e mais efetivamente.
Outras estratgias focalizam a afinidade de processador - a relao de um pro-
cesso com um processador particular e sua memria local e em cache. Um processo que
exibe alta afinidade de processador executa no mesmo processador durante quase todo,
ou todo, o seu ciclo de vida. A vantagem que o processo experimentar mais acertos
no cache, e, no caso de um projeto NUMA ou NORMA, possivelmente menos acessos a
pginas remotas do que se executasse em diversos processadores durante seu ciclo de
vida. Algoritmos de escalonamento que tentam escalonar um processo no mesmo pro-
cessador durante todo o seu ciclo de vida mantm uma afinidade flexvel, ao passo que
algoritmos que escalonam um processo somente em um processador mantm afinidade
restrita.
Algoritmos de escalonamento por partio de espao tentam maximizar a afi-
nidade do processador escalonando processos colaborativos em um nico processador
(ou um nico conjunto de processadores) sob a premissa de que processos colaborativos
acessaro os mesmos dados compartilhados, que provavelmente esto armazenados nos
caches e na memria local do processador. Portanto, escalonamento por partio de es-
pao aumenta acertos de cache e de memria local. Todavia, pode limitar o rendimento,
porque esses processos normalmente no executam simultaneamente.
Algoritmos de escalonamento de multiprocessadores em geral so classificados
como cegos aos jobs ou cientes de jobs. Polticas de escalonamento cego ao job incor-
rem em sobrecarga mnima de escalonamento porque no tentam melhorar o paralelismo
de um job ou a afinidade do processador. Escalonamento ciente de job avalia as pro-
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
195
priedades do job e tenta maximizar o paralelismo de cada job ou a afinidade do proces-
sador, o que aumenta o desempenho ao custo do aumento de sobrecarga.
Muitos algoritmos de escalonamento de multiprocessadores organizam processos
em filas globais de execuo. Cada fila global de execuo contm todos os processos
do sistema que esto prontos para executar. Essas filas podem ser utilizadas para orga-
nizar processos por prioridade, por job ou pelos processos que executaram mais recen-
temente.
Como alternativa, sistemas podem utilizar uma fila de execuo por processa-
dor, o que tpico de sistemas grandes, fracamente acoplados (como sistemas NORMA),
nos quais os acertos de cache e as referncias memria principal devem ser maximiza-
das. Nesse caso, processos so associados a um processador especfico e o sistema im-
plementa uma poltica de escalonamento para aquele processador. Alguns sistemas usam
filas de execuo por nodo. Cada nodo poderia conter mais do que um processador, o
que apropriado para um sistema no qual um processo est vinculado a um grupo parti-
cular de processadores. Descreveremos a questo relacionada migrao de processos,
que acarreta a transferncia de processos de uma fila por processador ou por nodo para
outra.
16.6.1 ESCALONAMENTO DE MULTIPROCESSADORES CEGOS AO JOB
Algoritmos de escalonamento de multiprocessadores cegos ao job escalonam jobs
ou processos em qualquer processador disponvel. Os trs algoritmos descritos nesta
seo so exemplos de algoritmos de escalonamento de processadores cegos ao job. Em
geral, qualquer algoritmo de escalonamento de multiprocessadores, como os descritos
em captulos anteriores, pode ser implementado como um algoritmo de escalonamento
de multiprocessadores cego ao job.
Escalonamento de Processo FCFS
O escalonamento de processo primeiro-a-chegar-primeiro-a-ser-atendido (First-
Come-First-Served - FCFS) coloca processos que chegam em uma fila global de execu-
o. Quando um processador torna-se disponvel, o escalonador despacha o processo que
est no incio da fila e o executa at que ele libere o processador.
FCFS trata todos os processos com justia, escalonando-os de acordo com seus
horrios de chegada. Contudo, o FCFS poderia ser considerado injusto, pois processos
longos fazem com que processos curtos esperem, e processos de baixa prioridade podem
fazer com que processos de alta prioridade esperem - embora uma verso preemptiva do
FCFS possa impedir que isso ocorra. Normalmente o FCFS no til para processos inte-
rativos porque no pode garantir tempos de respostas curtos. Contudo, um algoritmo
fcil de implementar e elimina a possibilidade de adiamento indefinido - uma vez que um
processo entre em uma fila, nenhum outro processo entrar na fila frente dele.
Escalonamento de Multiprocessadores por Alternncia Circular (RRprocess)
O escalonamento de processo por alternncia-circular (Round-Robin process - RR-
process) coloca cada processo pronto em uma fila global de execuo. O escalonamento
RRprocess semelhante ao escalonamento por revezamento de tempo de monoproces-
sadores - um processo executa durante no mximo um perodo antes de o escalonador
despachar um novo processo para execuo. O processo que estava executando anteri-
ormente colocado no final da fila global de execuo. O algoritmo impede adiamento
indefinido, mas no promove um alto grau de paralelismo ou de afinidade de processa-
dor, pois ignora as relaes entre processos.
Escalonamento de Multiprocessadores Processo-mais-curto-primeiro (SJF)
Um sistema tambm pode implementar o algoritmo de escalonamento processo-
mais-curto-primeiro (Shortest Job First - SJF), que despacha o processo que requer a
menor quantidade de tempo para executar at concluir. Ambas as verses do SJF, pre-
emptiva e no preemptiva, exibem mdias mais baixas de tempo de espera para proces-
sos interativos em relao ao FCFS, porque processos interativos normalmente so pro-
cessos 'curtos'. Contudo, um processo mais longo pode ser adiado indefinidamente se
processos mais curtos chegarem continuamente antes que ele possa obter um processa-
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
196
dor. Como acontece com algoritmos cegos ao job, o SJF no considera paralelismo nem
afinidade de processador.
16.6.2 ESCALONAMENTO DE MULTIPROCESSADORES CIENTES AO JOB
Embora algoritmos cegos ao job sejam fceis de implementar e incorram em so-
brecarga mnima, eles no consideram questes de desempenho especficas do escalo-
namento de multiprocessadores. Por exemplo, se dois processos que se comunicam com
freqncia no executarem simultaneamente, podem gastar significativa quantidade de
tempo em espera ociosa, o que degradar o desempenho geral do sistema. Alm do
mais, na maioria dos sistemas multiprocessadores cada processador mantm seu prprio
cache privado. Processos de um mesmo job muitas vezes acessam os mesmos itens de
memria, portanto, escalonar os processos de um job no mesmo processador tende a
aumentar os acertos de cache e melhorar o desempenho do acesso memria. Em geral,
algoritmos de escalonamento de processos cientes de job tentam maximizar paralelismo
ou afinidade de processador custa de maior complexidade do algoritmo de escalona-
mento.
Escalonamento de Menor-nmero-de-processos-primeiro (SNPF)
O algoritmo de escalonamento menor-nmero-de-processos-primeiro (Smallest-
Number-of-Processes-First - SNPF), que pode ser preemptivo ou no preemptivo, usa
uma fila global de prioridade de jobs. A prioridade de um job inversamente proporcio-
nal ao seu nmero de processos. Se os jobs contiverem o mesmo nmero de processos
disputando um processador, aquele que estiver esperando h mais tempo receber prio-
ridade. No escalonamento SNPF no preemptivo, quando um processador fica disponvel,
o escalonador seleciona um processo do job que est no incio da fila e permite que ele
execute at a concluso. No escalonamento SNPF preemptivo, se chegar um novo job
com menos processos, ele receber prioridade e seus processos sero despachados ime-
diatamente. Algoritmos SNPF melhoram o paralelismo porque processos que esto asso-
ciados ao mesmo job muitas vezes podem executar concorrentemente. Contudo, os algo-
ritmos SNPF no tentam melhorar a afinidade de processador. Alm disso, possvel que
jobs com muitos processos sejam adiados indefinidamente.
Escalonamento por alternncia circular de jobs (RRJob)
O escalonamento por alternncia circular de jobs (Round-Robin Job - RRJob) em-
prega uma fila global de jobs na qual cada job designado a um grupo de processadores
(embora no necessariamente o mesmo grupo cada vez que o job for escalonado). Cada
job mantm sua prpria fila de processos. Se o sistema contiver p processadores e usar
um quantum de tamanho q, um job receber um total p x q de tempo de processador
quando for despachado. Normalmente um job no contm exatamente p processos que
exaurem um quantum cada um (por exemplo, um processo pode bloquear antes que seu
quantum expire). Portanto, RRJobs usam escalonamento de alternncia circular para
despachar os processos do job at que este consuma todos os quanta p x q, ou conclua,
ou todos os seus processos bloqueiem. O algoritmo tambm pode dividir os quanta p x q
igualmente entre os processos do job, permitindo que cada um execute at exaurir seu
quantum, concluir ou bloquear. Como alternativa, se um job tiver mais do que p proces-
sos, ele poder selecionar p processos para executar durante um quantum de tamanho q
Similarmente ao escalonamento RRprocess, esse algoritmo evita adiamento inde-
finido. Alm disso, como os processos do mesmo job executam concorrentemente, esse
algoritmo promove paralelismo. Todavia, a sobrecarga adicional de chaveamento de con-
texto do escalonamento de alternncia circular pode reduzir o rendimento de jobs.
Coescalonamento
Algoritmos de coescalonamento (ou escalonamento de bando) empregam uma
fila global de execuo que acessada maneira da alternncia circular. O objetivo dos
algoritmos de coescalonamento executar processos do mesmo job concorrentemente
em vez de maximizar a afinidade de processador. H vrias implementaes de coesca-
lonamento: matricial, contnuo e no dividido. Apresentaremos somente o algoritmo no
dividido porque ele corrige algumas das deficincias dos algoritmos matricial e contnuo.
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
197
O algoritmo de coescalonamento no dividido coloca processos do mesmo
job em entradas adjacentes na fila global de execuo (Figura 16.15). O escalonador
mantm uma 'janela' igual ao nmero de processadores do sistema. Todos os processa-
dores em uma janela executam em paralelo por, no mnimo, um quantum. Aps escalo-
nar um grupo de processos, a janela passa para o prximo grupo de processos, que tam-
bm executa em paralelo durante um quantum. Para maximizar a utilizao do processa-
dor, se um processo da janela for suspenso, o algoritmo estender a janela corredia um
processo para a direita para permitir que outro processo executvel execute durante o
dado quantum, mesmo que ele no faa parte do job que esteja executando no momen-
to.
Como algoritmos de coescalonamento usam uma estratgia de alternncia circu-
lar, eles impedem adiamento indefinido, Alm disso, como os processos do mesmo job
com freqncia executam ao mesmo tempo, os algoritmos de coescalonamento permi-
tem que sejam projetados programas para executar em paralelo e tirar proveito de um
ambiente de multiprocessamento. Infelizmente, um processo pode ser despachado para
um processador diferente a cada vez, o que pode reduzir a afinidade de processador.

Figura 16.15: Coescalonamento (verso no dividido)
Partio dinmica
A partio dinmica minimiza a penalidade do desempenho associada a faltas de
cache mantendo alta afinidade de processador. O escalonador distribui processadores do
sistema eqitativamente entre jobs. O nmero de processadores alocados a um job
sempre menor ou igual ao nmero de processos executveis do job.
Por exemplo, considere um sistema que contenha 32 processadores e execute trs
jobs - o primeiro com 8 processos executveis, o segundo com 16 e o terceiro com 20.
Se o escalonador dividisse os processadores eqitativamente entre jobs, um job recebe-
ria 10 processadores e os outros dois receberiam 11. No caso em questo, o primeiro job
tem somente 8 processos, portanto o escalonador designa 8 processadores quele job e
distribui eqitativamente os 24 processadores remanescentes (12 para cada) ao segundo
e terceiro jobs (Exemplo 1 da Figura 16.16). Portanto, um certo job sempre executa em
um certo subconjunto de processadores, desde que nenhum job novo entre no sistema.
O algoritmo pode ser estendido de modo que um determinado processo sempre execute
no mesmo processador. Se cada job contiver apenas um nico processo, a partio di-
nmica ir se reduzir a um algoritmo de escalonamento de alternncia circular.
medida que novos jobs entram no sistema, esse atualiza dinamicamente a alo-
cao do processador. Suponha que um quarto job com 10 processos executveis (E-
xemplo 2 da Figura 16.16) entre no sistema, o primeiro job retm sua alocao de 8 pro-
cessadores, mas o segundo e o terceiro jobs devolvem 4 processadores cada para o
quarto job. Assim, os processadores so divididos eqitativamente entre os jobs - 8 pro-
cessadores por job. O algoritmo atualiza o nmero de processadores que cada job recebe
sempre que jobs entrem ou saiam do sistema, ou um processo dentro de um job mude
do estado em execuo para o estado de espera ou vice-versa. Embora o nmero de
processadores alocados a jobs mude, um job ainda assim executa ou em um subconjunto
ou em um superconjunto de sua alocao prvia, o que ajuda a manter afinidade de pro-
cessador. Para que a partio dinmica seja efetiva, o aumento do desempenho pela afi-
nidade de cache deve compensar o custo da repartio.

16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
198

Figura 16.16: Partio dinmica
16.7 MIGRAO DE PROCESSOS
Migrao de processos implica transferir um processo entre dois processadores.
Isso pode ocorrer, por exemplo, se um processador falhar ou estiver sobrecarregado.
A capacidade de executar processos em qualquer processador tem muitas vanta-
gens. A mais bvia que eles podem passar para processadores subutilizados para redu-
zir tempos de resposta de processo e aumentar o desempenho e o rendimento. A migra-
o de processos tambm promove a tolerncia a falha. Por exemplo, considere um pro-
grama que deva executar clculos intensivos, sem interrupo. Se a mquina que o esti-
ver executando precisar ser desligada ou ficar instvel, o progresso do programa poder
ser perdido. A migrao de processos permite que o programa passe para outra mquina
e continue o clculo em um ambiente talvez mais estvel.
Alm disso, migrao de processos promove compartilhamento de recursos. Em
sistemas de grande escala alguns recursos podem no estar replicados em cada nodo.
Por exemplo, em um sistema NORMA, processos podem executar em mquinas com su-
porte de dispositivo de hardware diferente. Um processo poderia requisitar acesso a um
arranjo RAID que esteja disponvel por meio de somente um computador. Nesse caso, o
processo deve migrar para o computador que tenha acesso ao arranjo RAID para melho-
rar o desempenho.
Por fim, migrao de processos melhora o desempenho da comunicao. Dois pro-
cessos que se comunicam com freqncia devem executar no mesmo nodo ou prximo
dele para reduzir a latncia de comunicao. Pelo fato de enlaces de comunicao muitas
vezes serem dinmicos, a migrao de processos pode ser usada para tomar dinmico o
posicionamento de processos.
16.7.1 FLUXO DE MIGRAO DE PROCESSOS
Embora as implementaes de migrao de processos variem entre arquiteturas,
muitas delas seguem as mesmas etapas gerais (Figura 16.17). Primeiro, um nodo emite
uma requisio de migrao para um nodo remoto. Na maioria dos esquemas, o emissor
inicia a migrao porque seu nodo est sobrecarregado ou um processo especfico preci-
sa acessar um recurso localizado em um nodo remoto. Em alguns esquemas um nodo
subutilizado pode requisitar processos de outros nodos. Se o emissor e o receptor con-
cordarem em migrar um processo, o emissor suspender o processo migrante e criar
uma fila de mensagens para reter todas as mensagens destinadas a ele. Ento, extrair o
estado do processo, o que incluir copiar o contedo da memria do processo (ou seja,
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
199
pginas marcadas como vlidas na memria virtual do processo), contedo de registra-
dores, estado de arquivos abertos e outras informaes especficas de processo. O emis-
sor transmitir o estado extrado para um processo 'fictcio' criado pelo receptor. Os dois
nodos notificaro a todos os processos a nova localizao do processo migrante. Por fim,
o receptor despachar a nova instncia do processo, o emissor transmitir as mensagens
que esto na fila do processo migrado e destruir a instncia local do processo.

Figura 16.17: Migrao de processos
16.7.2 CONCEITOS DE MIGRAO DE PROCESSOS
A transferncia de memria o elemento que mais consome tempo na migrao.
Para minimizar o custo de desempenho do processo de migrao, a dependncia residual
- dependncia do processo em relao ao seu nodo anterior - deve ser minimizada. Por
exemplo, o nodo anterior do processo poderia conter parte do grupo de trabalho do pro-
cesso ou poderia estar executando outros processos com os quais o processo migrado
estivesse se comunicando. Se a migrao resultar em muitas dependncias residuais, um
nodo receptor ter de se comunicar com o nodo emissor enquanto executa o processo
migrado, o que aumentar a IPC, gerando mais trfego na rede de interconexo, e de-
gradar o desempenho devido a altas latncias. E as dependncias residuais tambm
reduziro a tolerncia a falha porque a execuo do processo migrado depender do fun-
cionamento correto de ambos os nodos.
Muitas vezes, as estratgias que resultam no mais alto grau de dependncia resi-
dual transferem pginas do emissor somente quando o processo do nodo receptor se
refere a eles. Essas estratgias de migrao preguiosa (ou sob demanda) reduzem o
tempo de migrao inicial do processo - o tempo durante o qual o processo migrante fica
suspenso. Na migrao preguiosa, as informaes sobre o estado do processo (e outras
requeridas) so transferidas para o receptor, mas o nodo original retm as pginas do
processo. Enquanto executa no nodo remoto, o processo tem de iniciar uma transfern-
cia de memria para cada acesso a uma pgina que permanecer no nodo emissor. Embo-
ra essa tcnica resulte em uma rpida migrao inicial do processo, o acesso memria
pode reduzir seriamente o desempenho de uma aplicao. A migrao preguiosa mui-
to til quando o processo no requer acesso freqente ao espao de endereamento re-
moto.
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
200
Para que a migrao seja bem-sucedida, os processos devem exibir diversas ca-
ractersticas. Um processo migrado deve exibir transparncia - no deve ser afetado ad-
versamente pela migrao (exceto, talvez, um leve atraso no tempo de resposta). Em
outras palavras, o processo no deve perder nenhuma mensagem interprocessos nem os
arquivos abertos que manuseia. Um sistema tambm deve ser escalvel - se as depen-
dncias residuais crescerem com cada migrao, o sistema poder rapidamente ficar sa-
turado pelo trfego da rede medida que o processo requisitar pginas remotas. Por fim,
avanos na tecnologia de comunicao entre vrias arquiteturas criaram a necessidade
de migraes heterogneas - os processos devem poder migrar entre duas arquiteturas
de processador diferentes em sistemas distribudos. Isso implica que o estado do proces-
so deve ser armazenado em um formato independente de plataforma.
16.7.3 ESTRATGIAS DE MIGRAO DE PROCESSOS
Estratgias de migrao de processos devem equilibrar a penalidade incidente so-
bre o desempenho na transferncia de grandes quantidades de dados de processo com o
benefcio da minimizao da dependncia residual de um processo. Em alguns sistemas,
projetistas admitem que a maior parte do espao de endereamento de um processo
migrado ser acessada no seu novo nodo. Esses sistemas freqentemente implementam
a migrao vida, que transfere todas as pginas do processo durante a migrao inicial,
o que o habilita a executar to eficientemente em seu novo nodo quanto executava no
nodo anterior. Todavia, se o processo no acessar grande parte do seu espao de ende-
reamento, a latncia inicial e a largura de banda requeridas pela migrao vida incor-
rero em grande sobrecarga.
Para atenuar o custo inicial da migrao vida, a migrao vida suja transfere
somente as pginas sujas de um processo. Essa estratgia admite que haja um armaze-
namento secundrio comum (um disco ao qual ambos os nodos tm acesso). Todas as
pginas limpas so trazidas do armazenamento secundrio comum medida que o pro-
cesso se refere a elas no nodo remoto, o que reduz o tempo de transferncia inicial e
elimina a dependncia residual. Entretanto, cada acesso a uma pgina no residente leva
mais tempo do que levaria usando a migrao vida.
Uma desvantagem da migrao vida suja que o processo migrado deve usar
armazenamento secundrio para recuperar as pginas limpas do processo. A migrao
de cpia-sob-referncia semelhante migrao preguiosa suja, exceto que o processo
migrado pode requisitar pginas limpas ou do seu nodo anterior ou do armazenamento
secundrio comum. Essa estratgia tem os mesmos benefcios da migrao vida suja,
mas d ao gerenciador de memria mais controle sobre a localizao da qual requisitar
pginas o acesso memria remota pode ser mais rpido do que acesso ao disco. Con-
tudo, a migrao de cpia-sob-referncia pode adicionar sobrecarga de memria ao e-
missor.
A implementao de cpia preguiosa da cpia-sob-referncia transfere apenas in-
formaes mnimas durante o tempo da migrao inicial; muitas vezes nenhuma pgina
transferida, o que cria uma grande dependncia residual, fora o nodo anterior a man-
ter pginas na memria para o processo migrado e aumenta a latncia de acesso me-
mria em relao s estratgias que migram pginas sujas. Contudo, a estratgia de
cpia preguiosa elimina grande parte da latncia inicial da migrao. Essa latncia pode
ser inaceitvel para processos de tempo real e inadequada para a maioria dos proces-
sos.
Todas as estratgias discutidas at aqui criam dependncia residual ou incorrem
em grande latncia inicial de migrao. Um mtodo que elimina grande parte dessa la-
tncia a estratgia de descarga. Nessa estratgia o emissor escreve todas as pginas
da memria para um armazenamento secundrio quando a migrao inicia; o processo
migrante deve ser suspenso enquanto os dados esto sendo gravados no armazenamen-
to secundrio e, ento, o processo acessa as pginas do armazenamento secundrio con-
forme o necessrio. Portanto, no ocorre nenhuma migrao real de pgina que reduza a
velocidade da migrao inicial e o processo no tem nenhuma dependncia residual do
nodo anterior. Todavia, a estratgia de descarga reduz o desempenho do processo no
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
201
seu novo nodo porque ele no tem pginas na memria principal, o que resulta em falta
de pginas.
Uma outra estratgia para eliminar grande parte da latncia da imigrao inicial e
a dependncia residual o mtodo da cpia prvia, no qual o nodo emissor comea a
transferir pginas sujas antes da suspenso do processo original. Qualquer pgina trans-
ferida que o processo modificar antes da migrao marcada para retransmisso. Para
garantir que um processo eventualmente migre, o sistema define um patamar inferior
para o nmero de pginas sujas que devem remanescer antes que o processo migre.
Quando esse patamar alcanado o processo suspenso e migrado para um outro pro-
cessador. Com essa tcnica, o processo no precisa ficar suspenso por longo tempo (em
comparao com outras tcnicas como cpia preguiosa e cpia-sob-referncia) e o a-
cesso memria no novo nodo fcil, pois a maioria dos dados j foi copiada. E, tam-
bm, a dependncia residual mnima. O conjunto de trabalho do processo duplicado
durante um curto perodo de tempo (existe em ambos os nodos envolvidos na migrao),
mas essa uma desvantagem mnima.
16.8 BALANCEAMENTO DE CARGA
Uma medida da eficincia de sistemas multiprocessadores a utilizao geral dos
processadores. Em grande parte dos casos, se a utilizao dos processadores for alta, o
sistema estar desempenhando com mais eficincia. A maioria dos sistemas multiproces-
sadores (especialmente sistemas NUMA e NORMA) tenta maximizar a afinidade de pro-
cessadores. Isso aumenta a eficincia porque os processos no precisam acessar recur-
sos remotos com tanta freqncia, mas podem reduzir a utilizao se todos os processos
designados a um determinado processador forem concludos. Esse processador ficar
ocioso enquanto processos so despachados para outros processadores para explorar a
afinidade. Balanceamento de carga uma tcnica pela qual o sistema tenta distribuir
cargas de processamento eqitativamente entre processadores, o que aumenta a utiliza-
o de processadores e reduz filas de execuo de processadores sobrecarregados, dimi-
nuindo os tempos mdios de resposta dos processos.
Um algoritmo de balanceamento de carga pode designar um nmero fixo de pro-
cessadores a um job quando esse for escalonado pela primeira vez, o que denominado
balanceamento esttico de carga. Esse mtodo resulta em baixa sobrecarga de tem-
po de execuo porque os processadores gastam pouco tempo determinando os proces-
sadores nos quais um job deve executar. Contudo, o balanceamento esttico de carga
no leva em conta as populaes variveis de processos dentro de um job. Por exemplo,
um job pode incluir muitos processos inicialmente, mas manter apenas alguns durante o
restante da sua execuo, o que pode levar a filas de execuo desbalanceadas, que po-
dem resultar na ociosidade do processador.
O balanceamento dinmico de carga tenta abordar essa questo ajustando o
nmero de processadores designados a um job durante sua vida. Estudos demonstraram
que o balanceamento dinmico de carga resulta em melhor desempenho do que o balan-
ceamento esttico de carga quando o tempo de chaveamento de contexto baixo e a
carga do sistema alta.
16.8.1 BALANCEAMENTO ESTTICO DE CARGA
O balanceamento esttico de carga til em ambientes nos quais os jobs repetem
certos testes ou instrues e, portanto, exibem padres previsveis (por exemplo, com-
putao cientfica). Esses padres podem ser representados por grafos usados para mo-
delar o escalonamento. Considere os processos de um sistema como vrtices de um gra-
fo, e as comunicaes entre os processos como arestas. Por exemplo, se houver uma
aplicao na qual um processo armazene continuamente dados similares e, ento, passe
aqueles dados para outro processo, essa operao poder ser modelada como dois nodos
ligados por uma aresta. Pelo fato de essa relao ser consistente durante toda a vida da
aplicao, no haver necessidade de ajustar o grafo.
Devido ao compartilhamento da memria cache e da memria fsica, a comunica-
o entre processos no mesmo processador muito mais rpida do que a comunicao
entre processos em processadores diferentes. Portanto, os algoritmos de balanceamento
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
202
esttico de carga tentam dividir o grafo em subgrafos de tamanhos semelhantes (cada
processador tem um nmero similar de processos) minimizando, ao mesmo tempo, as
arestas entre os subgrafos para reduzir a comunicao entre processadores. Entretanto,
essa tcnica pode incorrer em sobrecarga significativa quando houver um grande nmero
de jobs. Considere o grafo da Figura 16.18. As duas linhas tracejadas representam os
possveis cortes para dividir processos, at certo ponto, eqitativamente. O Corte #1
resulta em quatro canais de comunicao interprocessos, ao passo que o Corte #2 resul-
ta em apenas dois, representando, assim, um melhor agrupamento de processos.

Figura 16.18: Balanceamento esttico de carga usando grafos
O balanceamento esttico de carga pode ser inadequado quando padres de co-
municao mudam dinamicamente e quando processos so concludos sem haver ne-
nhum processo para ocupar os seus lugares. O primeiro caso pode ter desempenho me-
nos eficientemente em virtude da alta latncia de comunicao. No segundo caso, a utili-
zao do processador poderia diminuir mesmo quando houvesse processos aguardando
para obter um processador. Nesses casos o balanceamento dinmico de carga pode me-
lhorar o desempenho.
16.8.2 BALANCEAMENTO DINMICO DE CARGA
Algoritmos de balanceamento dinmico de carga migram processos depois de eles
terem sido criados em resposta carga do sistema. O sistema operacional mantm in-
formaes estatsticas sobre a carga do processador, como o nmero de processos ativos
e bloqueados em um processador, a utilizao mdia do processador, o tempo de retorno
e a latncia. Se muitos dos processos de um processador estiverem bloqueados ou tive-
rem tempos de retorno altos, o processador muito provavelmente estar sobrecarregado.
Se um processador no tiver uma taxa de utilizao alta, provavelmente estar subcar-
regado.
Diversas polticas podem ser utilizadas para determinar quando migrar processos
no balanceamento dinmico de carga. A poltica iniciada pelo emissor entra em ao
quando o sistema determina que um processador contm uma carga pesada. Somente
ento o sistema pesquisar processadores subutilizados e migrar alguns dos jobs dos
processadores sobrecarregados para eles. Essa poltica melhor para sistemas com car-
gas leves, pois a migrao de processos dispendiosa e, nesse caso, a poltica raramen-
te ser ativada.
Ao contrrio, a poltica iniciada pelo receptor melhor para sistemas sobrecar-
regados. Nesse ambiente, o sistema inicia migrao de processos quando a utilizao de
um processador for baixa.
A maioria dos sistemas experimenta cargas leves e pesadas ao longo do tempo.
Para esses sistemas a poltica simtrica, que combina os dois mtodos anteriores, pro-
porciona o mximo de versatilidade para adaptao s condies ambientais. Por fim, a
poltica aleatria, na qual o sistema escolhe arbitrariamente um processador para re-
ceber um processo migrado, tem mostrado resultados decentes devido sua implemen-
tao simples e (na mdia) distribuio uniforme de processos. A motivao por trs da
poltica aleatria que o destino de um processo migrante ter, provavelmente, uma
carga menor do que sua origem, considerando que o processador original esteja seria-
mente sobrecarregado.
As subsees seguintes descrevem algoritmos comuns que determinam como pro-
cessos so migrados. Para todos os propsitos desta discusso, considere que o sistema
multiprocessador pode ser representado por um grafo no qual cada processador e sua
memria so um vrtice e cada ligao, uma aresta.
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
203
Algoritmo de Licitao
O algoritmo de licitao uma poltica simples de migrao iniciada pelo emissor.
Processadores com cargas menores 'licitam' ('do lances a') processos de processadores
sobrecarregados, algo muito parecido com o que se faz em leiles. O valor de um lance
baseado na carga corrente do processador licitante e na distncia entre os processadores
sobrecarregado e subcarregado no grafo. Para reduzir o custo do processo de migrao,
os caminhos mais diretos de comunicao com o processador sobrecarregado recebem os
lances de valores mais altos. O processador sobrecarregado aceita os lances dos proces-
sadores que esto dentro de uma certa distncia no grafo. Se o processador sobrecarre-
gado receber demasiados lances, ele reduzir a distncia; se receber muito poucos, au-
mentar a distncia e verificar novamente. O processo enviado para o processador
que der o lance mais alto.
Algoritmos de Recrutamento
O algoritmo de recrutamento uma poltica iniciada pelo receptor que classifica a
carga de cada processador como baixa, normal ou alta. Cada processador mantm uma
tabela que descreve as cargas dos outros processadores usando essas classificaes.
Muitas vezes, em sistemas de grande escala ou sistemas distribudos, processadores
mantm somente informaes sobre seus vizinhos. Toda vez que a carga de um proces-
sador muda de classificao, o processador transmite suas informaes atualizadas aos
processadores que esto na sua tabela de carga. Quando um processador recebe uma
dessas mensagens, ele anexa suas prprias informaes e transmite a mensagem aos
seus vizinhos. Desse modo, informaes sobre nveis de carga eventualmente chegam a
todos os nodos da rede. Processadores subutilizados usam essas informaes para requi-
sitar processos de processadores sobrecarregados.
Questes de Comunicao
Estratgias de comunicao ineficientes ou incorretas podem saturar um sistema.
Por exemplo, algumas implementaes de migrao empregam transmisso no mbito
do sistema. O dilvio de mensagens transmitidas pode saturar os canais de comunicao.
Devido a atrasos de comunicao, muitos processadores sobrecarregados poderiam re-
ceber a requisio de um processo ao mesmo tempo, e todos poderiam enviar seus pro-
cessos a um s processador subcarregado.
Diversas estratgias foram elaboradas para evitar esses problemas. Por exemplo,
o algoritmo poderia restringir a comunicao dos processadores somente com seus vizi-
nhos imediatos, o que reduziria o nmero de mensagens transmitidas, mas aumentaria o
tempo requerido para a informao chegar a todos os nodos do sistema. Como alternati-
va, os processadores poderiam selecionar periodicamente um processador aleatrio com
o qual trocar informaes. Nesse caso, os processos seriam migrados de um processador
cuja carga seria mais alta para um outro cuja carga seria mais baixa. Em casos em que
um processador esteja seriamente sobrecarregado e os restantes subcarregados, haver
uma rpida difuso do processo.
A Figura 16.19 ilustra a difuso de processo em um sistema no qual os nodos se
comunicam apenas com seus vizinhos. O processador sobrecarregado, representado pelo
vrtice do meio, tem 17 processos, enquanto todos os outros tm apenas um processo.
Aps uma iterao, o processador sobrecarregado comunica-se com seus vizinhos e en-
via 3 processos para cada um. Agora esses processadores tm 4 processos, trs a mais
do que alguns de seus vizinhos. Na segunda iterao, os processadores que tm 4 pro-
cessos enviam alguns a seus vizinhos. Por fim, na terceira iterao, o processador sobre-
carregado mais uma vez envia alguns processos a seus vizinhos, de modo que agora o
processador cuja carga a mais pesada tem somente 3 processos. Esse exemplo ilustra
que, mesmo quando as comunicaes so mantidas entre processadores vizinhos, o ba-
lanceamento de carga pode distribuir responsabilidades de processamento efetivamente
por todo o sistema.
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
204

Figura 16.19: Difuso de carga de processador
16.9 EXCLUSO MTUA EM MULTIPROCESSADORES
Muitos dos mecanismos de excluso mtua descritos anteriormente no so ade-
quados a sistemas multiprocessadores. Por exemplo, a desabilitao de interrupes, que
impede que outros processos executem desabilitando preempes em sistemas mono-
processadores, no garante a excluso mtua em multiprocessadores porque diversos
processos podem executar simultaneamente em processadores diferentes. Instrues
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
205
como teste-e-atualize (test-and-set) podem ser ineficientes quando os dados a que essas
instrues se referem esto localizados em memria remota. A instruo teste-e-atualize
tem uma outra vulnerabilidade, a saber, cada uma das operaes pendentes requer um
acesso separado memria. Os acessos so realizados seqencialmente porque, em ge-
ral, pode ocorrer apenas um acesso a uma localizao de memria por vez. Essas coli-
ses podem saturar rapidamente vrios tipos de redes de interconexo, causando srios
problemas de desempenho. Por causa dos custos de comunicaes no triviais e do fato
de que vrios processos executam ao mesmo tempo, projetistas desenvolveram diversas
tcnicas de excluso mtua para multiprocessadores.
16.9.1 TRAVAS GIRATRIAS
Sistemas operacionais multiprocessadores como o Windows XP e o Linux com fre-
qncia usam travas giratrias (spin locks) para excluso mtua de multiprocessador.
Uma trava giratria denominada 'trava' porque o processo que tiver uma trava giratria
reclamar acesso exclusivo ao recurso que a trava protege (por exemplo, uma estrutura
de dados compartilhada na memria ou uma seo crtica de um cdigo). Na verdade,
so os outros processos que ficam 'trancados' para fora do recurso. Outros processos que
querem usar o recurso 'giram' (ou seja, esperam ociosamente), testando continuamente
uma condio para determinar se o recurso est disponvel. Em sistemas monoprocessa-
dores as travas giratrias so um desperdcio porque consomem ciclos de processador
que poderiam ser usados por outros processos, incluindo o processo que detm a trava,
para realizar trabalho til. Em sistemas multiprocessadores, o processo que detm a tra-
va pode liber-la enquanto outro processo estiver em espera ociosa. Nesse caso, mais
eficiente para um processo esperar ociosamente se o tempo requerido pelo sistema para
executar um chaveamento de contexto para escalonar um outro processo for mais longo
do que o tempo mdio de espera ociosa. E, tambm, se um processador no contiver
nenhum outro processo em sua fila de execuo, far sentido manter o processo girando
para minimizar o tempo de resposta quando a trava giratria for liberada.
Quando um processo detm uma trava giratria durante um longo tempo (em re-
lao ao tempo de chaveamento de contexto), bloquear mais eficiente. O bloqueio
retardado uma tcnica na qual o processo gira por um curto perodo de tempo; se ele
no adquirir a trava durante aquele perodo, ser bloqueado. Uma trava de processo
anunciada (Advisable Process Lock - APL) apresenta uma soluo alternativa. Quando o
processo adquire uma APL, ele especifica a quantidade de tempo durante o qual deter a
trava. Com base no tempo especificado, outros processos que esto espera para adqui-
rir a APL podem determinar se mais eficiente esperar ociosamente pela trava ou blo-
quear.
Travas adaptativas (tambm denominadas travas configurveis) adicionam fle-
xibilidade a uma implementao de excluso mtua. Em certos momentos, como quando
h poucos processos ativos, as travas giratrias so preferveis, pois um processo pode
adquirir um recurso logo aps tomar-se disponvel. Em momentos em que a carga do
sistema for alta, girar perde valiosos ciclos de processador, e o bloqueio prefervel.
Travas adaptativas permitem que um processo mude dinamicamente o tipo de trava que
est em uso. Essas travas podem ser ajustadas para bloqueio, giro ou bloqueio retardado
e podem incorporar caractersticas de APL para personalizar a trava conforme a carga do
sistema e as necessidades da aplicao.
Quando vrios processos esperam simultaneamente pela liberao de uma trava
giratria, pode ocorrer adiamento indefinido. Sistemas operacionais podem evitar adia-
mento indefinido concedendo a trava giratria a processos na ordem 'primeiro a chegar,
primeiro a ser atendido', ou envelhecendo processos que esto espera pela trava gira-
tria.
16.9.2 TRAVAS DORMIR/ACORDAR
Uma trava dormir/acordar fornece sincronizao similar de uma trava giratria,
mas reduz o desperdcio de ciclos de processador e o trfego no barramento. Considere
os processos P1 e P2 ambos requisitando a utilizao de um recurso protegido por uma
trava dormir/acordar. P1 requisita o recurso em primeiro lugar e obtm a trava. Quando
P2 requisita o recurso possudo por P1 e no o recebe, P2 responde adormecendo (ou
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
206
seja, bloqueia). Assim que P1 libera a trava, ele acorda o processo de prioridade mais
alta que estiver esperando pelo recurso (nesse caso, P2). Ao contrrio das travas girat-
rias (que do a trava ao prximo processo que estiver espera), as travas dor-
mir/acordar podem usar o escalonador do processador para impor prioridades de proces-
so. Elas podem fazer com que processos que esto espera sejam adiados indefinida-
mente, dependendo da poltica de escalonamento do sistema.
Note que, diferentemente de uma implementao de monoprocessador, somente
acordado o processo que tiver a prioridade mais alta. Quando todos os threads so a-
cordados, pode ocorrer uma condio de disputa porque dois ou mais threads podem
acessar um recurso associado a uma trava em uma ordem no determinstica. Condies
de disputa devem ser evitadas porque podem causar erros imperceptveis em aplicaes
e so difceis de depurar. Em monoprocessadores, mesmo que todos os processos sejam
alertados, no pode haver uma condio de disputa, pois apenas um processo (o que
tiver a prioridade mais alta na maioria dos algoritmos de escalonamento) obter o con-
trole do processador e adquirir a trava. Em um ambiente multiprocessador, uma difuso
deve acordar muitos processos que esto competindo pela trava, criando uma condio
de corrida. O resultado disso tambm seria um processo obtendo a trava e muitos ou-
tros testando, bloqueando novamente e, conseqentemente, voltando a dormir e, assim,
desperdiando tempo de processador devido ao chaveamento de contexto. Esse fenme-
no conhecido como estouro da boiada.
16.9.3 TRAVAS DE LEITURA/ESCRITA
Impor acesso mutuamente exclusivo memria compartilhada em um sistema
multiprocessador pode degradar o desempenho. Somente escritores necessitam de aces-
so exclusivo ao recurso, ao passo que, em geral, vrios leitores podem acessar a mesma
localizao da memria ao mesmo tempo. Portanto, muitos sistemas protegem a mem-
ria compartilhada com uma trava de leitura/escrita mais verstil, em vez de uma tra-
va genrica de excluso mtua. Uma trava de leitura/escrita proporciona excluso mtua
similar apresentada no problema dos leitores/escritores. Uma trava de leitura/escrita
permite que vrios processos leitores (ou seja, processos que no alteraro os dados
compartilhados) entrem em suas sees crticas. Diferentemente do monoprocessamen-
to, todavia, as travas de leitura/escrita exigem que um escritor (um processo que altera-
r dados compartilhados) espere at no haver mais nenhum processo leitor ou escritor
em suas sees crticas antes de entrar na sua prpria seo crtica.
Para implementar essa abordagem de travamento de maneira eficiente, o meca-
nismo de excluso mtua deve usar memria compartilhada. Todavia, em ambientes nos
quais a memria no compartilhada, como em sistemas NORMA, deve ser utilizada a
troca de mensagem.

16.10 EXERCCIOS

269) Por que os multiprocessadores so to teis?

270) Quais as diferenas entre as responsabilidades de um Sistema Operacional multi-
processador e as de um sistema de um s processador?

271) Paralelismo no nvel de thread (TLP) refere-se execuo de mltiplos threads in-
dependentes em paralelo. Qual quitetura de multiprocessador explora TLP?

272) (V /F) Somente arquiteturas SIMD exploram paralelismo.

273) Uma rede em malha 2-D com 8 conexes inclui enlaces para nodos diagonais,
bem como os enlaces da Figura 16.3. Compare redes em malha 2-D de 8 cone-
xes e de 4 conexes.

274) Compare uma rede multiestgio com uma matriz de comutao de barras cruza-
das. Quais os benefcios e desvantagens de cada esquema de interconexo?
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
207

275) Por que muitos multiprocessadores pequenos so construdos como sistemas for-
temente acoplados? Por que muitos sistemas de grande escala so fracamente
acoplados?

276) Alguns sistemas consistem em vrios grupos de componentes conectados entre si
de um modo fortemente acoplado. Discuta algumas motivaes para esse esque-
ma.

277) (V/F) Multiprocessadores mestre/escravo escalam bem para sistemas de grande
escala.

278) Para que tipo de ambientes os multiprocessadores mestre/escravo so mais indi-
cados?

279) Por que a organizao de ncleos separados mais tolerante a falha do que a or-
ganizao mestre/escravo?

280) Para que tipo de ambiente os multiprocessadores de ncleos separados seriam -
teis?

281) Por que dobrar o nmero de processadores de uma organizao simtrica no do-
bra a capacidade total de processamento?

282) Cite alguns benefcios da organizao simtrica em relao s organizaes mes-
tre/escravo e de ncleos separados.

283) Por que redes em malha e hipercubos so esquemas de interconexo inadequados
para sistemas UMA?

284) Como um sistema UMA simtrico?

285) Cite algumas vantagens dos multiprocessadores NUMA em relao aos UMAs. Cite
algumas desvantagens.

286) Quais as questes que o projeto NUMA levanta para programadores e para proje-
tistas de sistemas operacionais?

287) Quais os problemas inerentes aos multiprocessadores NUMA abordados pelo pro-
jeto COMA?

288) (V /F) O projeto COMA sempre aumenta o desempenho em relao a um projeto
NUMA.

289) Por que multiprocessadores NORMA so ideais para agrupamentos de estaes de
trabalho (clusters)?

290) Em quais ambientes multiprocessadores NORMA no so teis?

291) Por que a coerncia de memria importante?

292) Quais as vantagens de permitir que existam vrias cpias da mesma pgina em
um sistema?

293) Quais as vantagens e desvantagens da escuta do barramento?

294) Por que difcil para o sistema estabelecer um nodo nativo para memria que
referida por diversos nodos diferentes ao longo do tempo? Como o protocolo CC-
16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
208
NUMA baseado no conceito de nodo nativo pode ser modificado para suportar esse
comportamento?

295) Como uma estratgia de migrao/replicao poderia degradar o desempenho?

296) Para que tipos de pginas a replicao apropriada? Quando a migrao apro-
priada?

297) Cite um benefcio da consistncia relaxada. E uma desvantagem.

298) Em muitas implementaes de consistncia relaxada os dados podem no estar
coerentes durante vrios segundos. Isso um problema para todos os ambientes?
D um exemplo no qual poderia ser um problema.

299) Que tipos de processos se beneficiam do escalonamento por tempo compartilha-
do? E do escalonamento por partio de espao?

300) Quando filas de execuo por nodo so mais apropriadas do que filas globais de
execuo?

301) Um sistema UMA ou NUMA mais adequado para escalonamento de multiproces-
sadores cego ao job?

302) Qual estratgia de escalonamento cego ao job discutida nesta seo mais apro-
priada para sistemas de processamento em lote e por qu?

303) Quais as similaridades entre RRJob e coescalonamento no dividido? E as diferen-
as?

304) Descreva algumas das permutas entre implementar uma poltica global de escalo-
namento que maximize a afinidade de processador, tal como a partio dinmica,
e filas de execuo por processador.

305) Cite alguns benefcios proporcionados pela migrao de processos.

306) Em que tipo de sistemas (UMA, NUMA ou NORMA) a migrao de processos
mais apropriada?

307) Cite alguns itens que compem o estado de um processo e que devem migrar
com um processo.

308) Que sobrecarga incorrida na migrao de processos?

309) Por que a dependncia residual indesejvel? Por que uma certa dependncia re-
sidual poderia ser benfica?

310) Como uma estratgia de migrao que resulta em dependncia residual significa-
tiva poderia no ser escalvel?

311) Quais estratgias de migrao devem ser usadas em processos de tempo real?

312) Embora o tempo de migrao inicial seja mnimo e haja pouca dependncia resi-
dual na estratgia de cpia prvia, voc consegue imaginar alguns custos 'ocultos'
incorridos nessa estratgia?

313) Cite alguns dos benefcios da implantao do balanceamento de carga.

314) Quais algoritmos de escalonamento se beneficiam do balanceamento de carga?

16 Multiprocessamento
Sistemas Operacionais Lucilia Ribeiro
209
315) Quando o balanceamento esttico de carga til? Quando no ?

316) Na Figura 16.18 h uma diferena substancial entre o Corte #1 e o Corte #2.
Considerando que difcil descobrir o corte mais efetivo quando h um grande
nmero de jobs, o que isso significa em relao s limitaes do balanceamento
esttico de carga?

317) Em que tipo de ambiente deve ser usada uma poltica dirigida ao emissor? E uma
poltica dirigida ao receptor? Justifique suas respostas.

318) Como uma alta latncia de comunicao atrapalha a efetividade do balanceamen-
to de carga?

319) De que modo girar pode ser til em um multiprocessador? Sob quais condies gi-
rar no desejvel em um multiprocessador? Por que o giro no til em um sis-
tema monoprocessador?

320) Por que uma APL pode no ser til em todas as situaes?

321) Cite uma vantagem e uma desvantagem da trava dormir/acordar em comparao
com a trava giratria.

322) De que modo a implementao de uma trava dormir/acordar diferente em am-
bientes multiprocessadores e ambientes monoprocessadores?

323) Em que situaes as travas de leitura/escrita so mais eficientes do que as travas
giratrias?

324) Uma implementao ingnua de uma trava de leitura/escrita permite que qual-
quer leitor entre em sua seo crtica quando nenhum escritor estiver em sua
prpria seo crtica. Como isso pode levar a adiamento indefinido para os escrito-
res? Qual seria uma implementao mais justa?


-x-


Sistemas Operacionais Lucilia Ribeiro
210


Bibliografia

"S sei que nada sei (Scrates)

















Esta apostila foi totalmente baseada nos livros:

DEITEL H. M., DEITEL P. J. e CHOFFNES D.R. Sistemas Operacionais. So
Paulo, 2005. Prentice Hall

TANEMBAUM, Andrew S. Sistemas Operacionais Modernos. So Paulo,
2003. Prentice Hall

MAIA, Luiz Paulo e MACHADO, Francis Berenger. Arquitetura de Sistemas
Operacionais. Rio de Janeiro, 2002. LTC.

Você também pode gostar