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.
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.
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?
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.
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.
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.
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).
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.
"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.
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:
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.
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.
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
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.
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:
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:
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:
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.
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:
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
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:
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.
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.
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.
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.