Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de...

52
Fundamentos em Sistemas de Computa¸ ao - Resumos 2014 - Aleardo Manacero Jr. DCCE/Ibilce/Unesp 1

Transcript of Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de...

Page 1: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Fundamentos

em

Sistemas de Computacao

- Resumos 2014 -

Aleardo Manacero Jr.

DCCE/Ibilce/Unesp

1

Page 2: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 1

Introducao

1. O que sao sistemas de computacao

2. O que e Computacao de Alto Desempenho

3. Como se pode obter CAD

4. CAD de baixo custo

5. Redes de computadores e sistemas distribuıdos

6. O restante da disciplina

1.1 Sistemas de Computacao

Nao existe uma definicao clara do que seriam sistemas de computacao. Para o CNPq,por exemplo, dentro de sistemas de computacao aparecem os sistemas digitais, com-piladores, etc. Em nosso caso consideraremos apenas os sistemas que servem deinterface entre o hardware e os programas aplicativos utilizados pelos usuarios dosistema.

Partindo desse ponto de vista fica claro que os sistemas de computacao englobamsistemas que permitem fazer um uso eficiente das maquinas, o que inclui sistemasoperacionais e protocolos de redes de computadores, entre outras coisas.

1.2 Computacao de Alto Desempenho

Entende-se Computacao de Alto Desempenho (CAD daqui por diante) como a areada computacao preocupada com a criacao de condicoes para que processamentos deelevada carga computacional possam ser executados em intervalos de tempo factıveis,isto e, permitir que programas que levariam anos para fornecerem resultados em umamaquina comum possam faze-lo em bem menos tempo (horas ou dias), por exemplo.

Alguns exemplos de areas que necessitam CAD sao:

• Fısica de Altas Energias, em que se analisam volumes gigantescos de dados(muito acima de Terabytes hoje em dia), coletados em meses de experimen-tos e que levariam alguns seculos para serem completamente examinados emequipamentos convencionais.

2

Page 3: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

• Bioinformatica, em que o volume de dados (em genomica, por exemplo) tambeme gigantesco.

• Controle de Energia Eletrica, em que e preciso analisar diversas possibilidadesde acao (em caso de curto-circuito, por exemplo) e tomar a decisao correta deforma quase que instantanea. Nesse caso, uma maquina convencional levariaalguns minutos para tomar a decisao, o que inviabiliza a sua execucao antesda piora da situacao.

• Mineracao de dados, em que o volume de dados e alto e o processo de analiseenvolve uma quantidade elevada de restricoes. Isso, por exemplo, e a base defuncionamento de mecanismos de busca como Google e outros.

1.3 Como obter CAD

CAD e obtida, sempre, atraves da paralelizacao das atividades a serem executadaspelo programa. Isto significa, por exemplo, fazer um programa que some duasmatrizes linha por linha e nao elemento por elemento, como fazemos. Para tanto,cada linha e entregue para um processador do sistema, que se encarrega de parte datarefa e devolve os resultados para quem estiver interessado neles.

Fica claro entao que uma condicao necessaria para a obtencao de CAD e aexistencia de varios elementos de processamento no sistema. A quantidade de ele-mentos vai depender do grau de paralelismo do problema resolvido e da disponibili-dade de recursos (dinheiro) existente. Maquinas com tal capacidade tem o seu precoiniciando em cerca de 500 mil dolares e indo bem alem dos 50 milhoes de dolares.

Deve ter ficado claro tambem, que outro componente importante em CAD eo mecanismo responsavel pela comunicacao entre os elementos de processamento.De forma simples, isso pode ser feito atraves do compartilhamento da memoria ouatraves de uma estrutura de rede de computadores.

Do ponto de vista de arquitetura essas maquinas podem ser classificadas de variasformas (como deve ser visto no curso de Organizacao e Arquitetura de Computado-res), sendo que para o nosso caso interessa apenas uma classificacao rudimentar entresistemas fortemente acoplados e sistemas fracamente acoplados, assim definidos:

• Fortemente acoplados: sao sistemas em que a conexao entre os varios ele-mentos de processamento e feita, em geral, atraves de memoria e barramentoscompartilhados. Isto implica em maquinas de alto custo e de grande velocidadede processamento global (gracas ao pouco tempo gasto em comunicacao).

• Fracamente acoplados: sao sistemas em que a conexao e feita atraves de redes(o que implica em atrasos consideraveis de comunicacao), trazendo uma grandereducao no custo do sistema. Nessa categoria temos os chamados clusters egrids, bem como clouds.

Atualmente a evolucao do hardware para CAD permite que se aplique solucoestipicamente de alto desempenho em aplicacoes relativamente ordinarias. O uso deprocessadores com varios nucleos (quase todos os atuais) e muitos nucleos (GPUs)tem tornado a computacao paralela algo nao apenas viavel como tambem necessariapara melhor usar os recursos disponıveis.

3

Page 4: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

1.4 CAD de baixo custo

Do item anterior pode ser percebido que e possıvel obter (dentro de certas restricoese claro) CAD a um baixo custo. Para tanto se usam sistemas fracamente acoplados,que possuem um custo menor de implantacao. Outras vantagens de tais sistemassao sua modularidade, que permite que o grau de paralelismo possa ser ampliadomaquina a maquina, e sua maior utilizacao, pois como temos maquinas individual-mente funcionais, podemos aproveitar a capacidade de processamento de cada umadelas, mesmo que a tarefa nao exija alto desempenho.

A principal desvantagem da utilizacao desses sistemas esta ligada ao custo alto decomunicacao. Essa comunicacao faz com que tais sistemas tenham um desempenhobastante inferior ao dos sistemas fortemente acoplados. Apesar disso, o seu uso temse tornado cada vez mais intenso atraves da popularizacao dos sistemas distribuıdos.

1.5 Sistemas distribuıdos

O uso de sistemas distribuıdos, que nada mais sao do que redes de computadorescom ambientes especialmente configurados para a paralelizacao de suas atividades eservicos, tem possibilitado o crescimento no numero de sistemas de alto desempenhoem uso. Entretanto, o funcionamento de um sistema distribuıdo e possıvel apenasgracas a um ambiente de hardware e software preparado para a interacao de progra-mas. Isso implica, em outras palavras, na necessidade de um sistema operacionalcapaz de operar sobre varias maquinas e na existencia de maquinas capazes de secomunicar entre si.

A infraestrutura de hardware e necessaria para que a comunicacao entre os pro-gramas paralelos possa ser feita de forma coordenada, sem a criacao de eventuaisproblemas relacionados com a heterogeneidade das maquinas paralelas. Isto implicana criacao de um protocolo de traducao entre as varias ”linguagens”faladas nasdiferentes maquinas.

Ja a infraestrutura de software e mais trabalhosa para ser obtida, uma vez quepara tanto e necessario que se transforme os mecanismos de gerenciamento de umsistema operacional convencional em mecanismos que operem sobre varias maquinas.Isto e feito para que o paralelismo possa ser aproveitado de modo transparente aousuario, isto e, deve ser possıvel ao usuario solicitar a execucao de um determinadoprograma e esse programa ser executado em qualquer maquina (ou mais de uma),sem que o usuario perceba que isso esta ocorrendo.

1.6 A disciplina

No restante desse curso examinaremos como e feita a construcao de um sistemaoperacional (convencional por simplicidade) e de uma rede de computadores (proto-colos de comunicacao). Ao final do semestre e esperado um bom domınio sobre essestopicos, de tal forma que o aluno possa posteriormente realizar o projeto completode um S.O. e estudar com mais profundidade os problemas relacionados aos sistemasdistribuıdos, alem de poder iniciar o projeto de uma rede de computadores.

A partir deste capıtulo introdutorio o curso prossegue, inicialmente examinando

4

Page 5: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

alguns dos requisitos basicos para a existencia de uma rede de computadores eposteriormente, em momentos adequados, sao examinados os mecanismos de geren-ciamento de um sistema operacional convencional, que serao mapeados futuramentepara o caso de um sistema distribuıdo.

1.6.1 Metodologia de ensino

Em cada aula os conceitos serao apresentados numa estrategia parecida com brains-torming, em que problemas serao apresentados e as suas solucoes deverao ser en-contradas atraves de discussoes em sala. Isso exige uma postura diferente por partedos alunos.

Assim, dos alunos espera-se sempre a leitura previa, nos livros indi-cados, dos topicos a serem examinados em sala de aula. Primeiro porgarantir uma melhor compreensao do que sera ali discutido e segundopor permitir uma maior familiaridade com os livros usados na disciplina.

5

Page 6: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 2

Redes - Conceitos gerais

1. Topologia

2. Protocolos

3. Camadas e pacotes

4. Concorrencia por servicos

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Computer Networks, Tanenbaum, cap. 1

• Redes de Computadores, Soares-Lemos-Colcher, cap. 1, 2 e 5

• Local & Metropolitan Area networks, Stallings, cap. 1, 2, 3 e 4

No capıtulo anterior constatou-se a necessidade da operacao eficiente de umarede de comunicacao para o funcionamento de um sistema distribuıdo. Isso leva anecessidade do estudo de redes de computadores, que sera iniciado aqui, atraves deseus conceitos mais gerais.

2.1 Topologia

Num primeiro momento o que se faz e apresentar conceitos de topologia de redes(anel, barramento, estrela, completa, etc.), que nada mais e do que a descricaoda forma de ligacao eletrica entre as varias maquinas que fazem parte da rede.Examina-se entao as diferencas entre essas topologias do ponto de vista de custo,tempo de transmissao e estabilidade.

2.2 Protocolos

A simples ligacao eletrica entre os varios computadores nao garante a comunicacaoentre os mesmos. Para que isso ocorra existe a necessidade de se definir um proto-colo para a comunicacao entre maquinas distintas. Isso significa definir um padrao

6

Page 7: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

organizado para o estabelecimento de uma conversa, tal como ocorre, por exemplo,em uma ligacao telefonica, quando a pessoa que inicia a chamada deve esperar porum sinal de linha, discar o numero desejado, esperar o sinal de chamando e peloatendimento no outro lado da linha, podendo entao iniciar de fato a comunicacao.Todos sabemos que nao e possıvel estabelecer uma comunicacao correta sem seguirtodos esses passos.

Para a comunicacao entre computadores isso se torna ainda mais crıtico pois taismaquinas sao essencialmente “burras”, alem de poderem falar “lınguas” distintas(usarem processadores e/ou sistemas operacionais diferentes).

Assim e fundamental a criacao de um protocolo de comunicacao que seja naoapenas possıvel mas tambem confiavel. Varios protocolos tem sido propostos, comdiversas implementacoes distintas para cada um deles. Em particular se destacamos protocolos IEEE 802-xx, o RM-OSI da ISO, o ATM e o TCP-IP.

E interessante notar que todos os protocolos tem em comum sua estruturacaoem camadas. Isso ocorre, primeiro, para tornar sua implementacao mais simples esegundo para possibilitar que cada tipo de problema durante a comunicacao possa serresolvido em um ponto diferente do processo. Durante essa disciplina examinaremoscom mais detalhes o RM-OSI, algumas variantes dos protocolos 802-xx e o TCO-IP,que na pratica e mais uma implementacao ad-hoc de protocolo criada com o UNIX.

2.3 Camadas e pacotes

As camadas dentro de um protocolo estao organizadas de forma vertical, isto e, umusuario ao iniciar um processo de comunicacao acessa a camada superior do proto-colo, que por sua vez acessa a camada imediatamente abaixo e assim por diante, ateque se chegue ao meio fısico que liga as duas maquinas envolvidas na comunicacao.No outro lado da linha o processo se repete, agora indo da camada mais baixa atea mais alta e, finalmente, ao destinatario da comunicacao. O fluxo da comunicacaoao longo das camadas e feito por pacotes de bits enviados sequencialmente. Assim,toda vez que existir algo para ser transmitido, essa informacao e transformada empacotes e esses pacotes sao passados de camada em camada atraves da prestacao deservicos por cada uma delas.

2.4 Concorrencia por servicos

Quando um processo de comunicacao ocorre da forma descrita acima e facil cons-tatar que possivelmente teremos varios pacotes sendo transferidos (servidos) entreas (pelas) camadas do protocolo. Em algumas camadas podemos servir mais doque um pacote simultaneamente. Entretanto, em outras camadas o servico deve seroferecido a apenas um pacote por vez.

Essa situacao caracteriza uma condicao de corrida pelo acesso ao servico, ouem outras palavras, a existencia de concorrencia por servicos. O tratamento dessaconcorrencia exige cuidados para evitar o acesso simultaneo ao servico (exclusaomutua) e tambem para obter a sincronizacao entre os servicos de camadas diferentes.Esses cuidados sao o objeto de estudo da “Programacao Concorrente”, sendoexaminados com maior rigor a seguir.

7

Page 8: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 3

Programacao Concorrente

1. Uma breve introducao aos processos

2. Mecanismos de exclusao mutua

3. Mecanismos de sincronismo

4. Tratamento de deadlocks

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Modern Operating Systems, Tanenbaum, cap. 2 e 6

• Operating Systems Concepts, Peterson/Silberschatz, cap. 5 e 6

• Outros bons livros de sistemas operacionais, nos capıtulos sobre processos ouconcorrencia

3.1 Preambulo

A compreensao correta do que sao processos, do que eles representam e como saotratados por um sistema computacional pode ser melhor entendida a partir da com-preensao da evolucao de sistemas operacionais. Esse topico sera muito rapidamentevisto em sala de aula, desde as maquinas que nao tinham SO ate os varios modelosde SO existentes atualmente, mas aconselha-se que esse tema seja melhor visto emalgum dos livros apontados como referencia.

3.2 Processos

Existe uma grande discussao quanto a definicao exata de processos. A definicao queadotaremos aqui e a de que processos nada mais sao do que programas em execucao,isto e, um programa passa a ser denominado processo quando e carregado paraexecucao. Neste momento diversos eventos ocorrem, dentre os quais o principal edefinir a identificacao desse processo durante a sua execucao.

A execucao coletiva de processos pode ser classificada como sequencial, quandoa execucao de cada processo for estritamente sequencial, ou concorrente, quando a

8

Page 9: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

execucao de dois ou mais processos puder ser feita de modo simultaneo, comparti-lhando ou nao recursos do sistema.

As interacoes entre execucoes de diversos processos podem ser representadaspor grafos de processos (que identificam quais processos ativam outros processos)e por grafos de precedencia (que identificam quais processos devem ser concluıdosantes do inıcio de um dado processo). O entendimento correto de como tais grafosdeterminam os processos e de grande importancia para a compreensao do conceitode concorrencia.

3.3 Exclusao mutua

A execucao de dois ou mais processos concorrentes pode ser feita com ou sem in-teracao entre eles. Quando nao existe interacao o tratamento dos mesmos e bastantesimples. Ja quando existe interacao entre os processos e preciso tomar cuidado comvarios detalhes. Um deles e a obtencao de exclusao mutua, que e necessaria quandodois ou mais processos tem que acessar um dado recurso que nao pode ser simulta-neamente compartilhado. Essa situacao pode levar a erros de execucao, que podemser evitados atraves de mecanismos como desabilitacao de interrupcoes, solucoes desoftware com espera ocupada (Dekker, Peterson, etc.) ou ainda por primitivas semespera ocupada (semaforos, block e wake-up, monitores, troca de mensagens, etc.).

3.4 Sincronismo

Um segundo problema no tratamento da interacao entre processos e a necessidadede sincronismo entre eles, em determinadas situacoes. O problema de sincronismosurge, por exemplo, em situacoes em que um processo produz informacao a ser con-sumida por outro processo. Nesse caso o primeiro nao pode produzir uma informacaonova antes que a anterior seja consumida e o segundo processo nao pode consumirnada que ainda nao tenha sido produzido. Solucoes para este problema podem serobtidas com o uso das mesmas primitivas sem espera ocupada listadas acima.

3.5 Deadlocks

Um ultimo, e bastante grave, problema no tratamento de processos concorrentes e aobtencao de processos livres de deadlock. Deadlocks ocorrem quando dois processosse travam na disputa por dois recursos, de tal forma que um dos processos possuio recurso A e espera pelo recurso B, enquanto o outro possui o recurso B e esperapelo A. Nessa situacao se torna impossıvel que um deles (P1 por exemplo) avance,uma vez que para isso e preciso que o outro (P2) libere o recurso que possui, o queapenas e feito se ele (P2) obtiver o outro recurso (de posse de P1) para avancar.Isso caracteriza o que chamamos de espera circular e pode ser tratada evitando quepelo menos uma das condicoes necessarias para deadlock ocorra. O tratamento dedeadlocks e realizado atraves de metodos como do avestruz, time-stamp, banqueiroou da padaria.

9

Page 10: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Problemas semelhantes sao o de starvation, quando um processo espera indefi-nidamente por algum recurso, e o de livelock, que e parecido com deadlock poremsem o bloqueio definitivo dos processos. O problema de starvation, em particular, ede grande interesse na analise de eficiencia dos varios mecanismos de gerenciamentodo SO, quando se procura identificar a possibilidade ou nao de sua ocorrencia.

10

Page 11: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 4

Gerenciamento de Processos

1. Estados de um processo

2. Tabela de processos

3. Mecanismos de escalonamento de processos

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Modern Operating Systems, Tanenbaum, cap. 2

• Operating Systems Concepts, Peterson/Silberschatz, cap. 4

• Outros bons livros de sistemas operacionais, nos capıtulos sobre gerenciamentoou escalonamento de processos

4.1 Estados de um processo

Do capıtulo anterior e possıvel perceber que os varios processos executando em umsistema estao sempre disputando o acesso a CPU. Com isso, e preciso definir umconjunto de estados para representar os processos em cada condicao. De modo geralos processos podem assumir os seguintes estados:

• Ativo (ou executando), quando estiver fisicamente ocupando a cpu;

• Pronto, quando estiver apenas esperando por uma chance de ocupar a cpu;

• Em espera (ou bloqueado), quando estiver esperando pela ocorrencia de al-gum evento externo que o permita ficar esperando apenas pela cpu;

• Inativo (ou morto), quando nao estiver executando.

Alem desses estados e possıvel diferenciar outros estados a partir do fato doprocesso estar ou nao fisicamente na memoria.

A passagem de um processo de um estado para outro ocorre em determinadascircunstancias, que sao:

11

Page 12: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

• Pronto para Ativo: quando o dispatcher (um dos componentes de um sistemaoperacional) escalonar o processo;

• Ativo para Pronto: quando o dispatcher decidir que outro processo deveocupar a cpu (por estouro do tempo de cpu, por exemplo);

• Ativo para Em espera: quando o processo solicitar uma operacao de en-trada/saıda ou for bloqueado por algum semaforo (ou outro mecanismo debloqueio);

• Ativo para Inativo: quando o processo for retirado da memoria ou terminarsua execucao;

• Inativo para Pronto: quando o scheduler (um dispatcher mais eficiente) tra-zer o processo do disco para a memoria;

• Em espera para Pronto: quando a operacao de E/S for completada ou oprocesso for desbloqueado.

4.2 Tabela de processos

Para que o sistema tenha condicoes de manipular os processos (e seus estados) enecessario que se tenha uma estrutura para armazenar informacoes de cada processo.Isso e feito por uma tabela, normalmente chamada de tabela de processos oubloco de controle de processos - BCP, que deve conter informacoes tais comoo numero do processo (PID), identificador de seu estado, instante de criacao, tempoacumulado de execucao, conteudo dos registradores da cpu por ele usados, enderecona memoria, pilha, etc.

E atraves da manipulacao desta tabela que o sistema operacional pode controlartodos os processos e, tambem, fornecer informacoes para os algoritmos de escalona-mento na cpu. Uma descricao mais detalhada dos dados de uma tabela de processospode ser vista nos livros de SO.

4.3 Mecanismos de escalonamento de processos

A ocupacao da cpu pelos processos que estejam no estado de pronto deve ser feita deforma organizada. Para tanto existem algoritmos de escalonamento que atuam deacordo com premissas estabelecidas pelo tipo de processo do sistema, necessidadesdo usuario, disponibilidade de recursos de hardware, etc. Esses algoritmos podem serclassificados em duas categorias principais: algoritmos sem preempcao (FCFS -primeiro a chegar primeiro a executar, SJF - primeiro o mais curto, etc.), e algo-ritmos com preempcao (Round-Robin, Prioridade, SRTF - primeiro quem faltamenos tempo, Filas multinıvel, etc.).

Os algoritmos sem preempcao nao permitem que um processo seja interrompidoapos assumir o controle da cpu, o que passa a ser permitido nos algoritmos compreempcao. A diferenca entre algoritmos com preempcao esta centrada exatamentenos motivos que originam a preempcao de um processo. De forma geral os algoritmos

12

Page 13: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

com preempcao sao muito mais eficientes do que os sem preempcao por fazer ummelhor uso da cpu.

A eficiencia de cada um desses algoritmos pode ser medida atraves de metricasde desempenho, tais como ocupacao da cpu, throughput (taxa de saıda ou vazao),tempos de espera, tempos de execucao medios (turnaround time), etc. A adocao deuma dessas medidas de desempenho e feita de acordo com a necessidade do usuario,sendo que cada algoritmo de escalonamento pode resultar em medidas bastantedistintas de desempenho para conjuntos de processos diferentes. Cabe ao usuario,portanto, escolher a medida que mais lhe interessa e determinar o algoritmo deescalonamento que melhor se adequa a sua situacao.

Por fim, e preciso observar que esse cenario vem mudando com o surgimentode threads e processadores multicore. Atualmente e possıvel executar varios th-reads simultaneamente, o que aumenta as possibilidades de escalonamento para ogerenciador. Assim, as versoes mais recentes dos SO disponıveis ja fazem uso dessacapacidade, permitindo um aumento no throughput do sistema.

13

Page 14: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 5

Gerenciamento de Entrada/Saıda

1. Responsabilidade

2. Forma de atuacao

3. Mecanismos de controle de E/S em disco

4. Problemas com dispositivos de entrada nao controlada

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Modern Operating Systems, Tanenbaum, cap. 5

• Operating Systems Concepts, Peterson/Silberschatz, cap. 9

• Outros bons livros de sistemas operacionais, nos capıtulos sobre gerenciamentode E/S ou gerenciamento de armazenamento em discos ou ainda gerenciamentode perifericos.

5.1 Responsabilidade

Na conclusao do ultimo capıtulo e indicado que as operacoes de E/S representamum fator preponderante no desempenho de um sistema operacional. Isso ocorreporque todo e qualquer processo depende de operacoes de entrada ou saıda de dadose elas sempre tomam tempo para serem realizadas. E possıvel realizar E/S devarias formas, quando a operacao e avaliada olhando-se para o responsavel pelo seugerenciamento. Nesse aspecto as formas sao:

1. E/S programada, em que toda a acao e comandada pelo proprio processoque quer fazer E/S;

2. E/S por interrupcao, em que a E/S e comandada por um processo especial,ativado por um sinal de interrupcao gerado pelo processo que quer fazer E/S;

3. E/S por roubo de ciclo, quando a operacao de E/S e controlada por umdispositivo especial (o DMA - Direct Memory Access), que rouba ciclos dorelogio da CPU para transferir blocos de bytes entre a memoria e o dispositivode E/S;

14

Page 15: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

4. E/S em cadeia, em que se permite que a fila de espera por operacoes de E/Sseja controlada pelo DMA e nao por algum mecanismo que execute na CPU.

As duas primeiras formas sao estrategias que consomem muito tempo de CPUe, portanto, valem apenas para aplicacoes dedicadas. Com elas e possıvel ao pro-gramador desenvolver formas otimas para se realizar a E/S. As duas ultimas saoequivalentes e tem amplo uso hoje em dia. Tem tambem a facilidade de esconderdo usuario o que realmente ocorre para se realizar a operacao.

5.2 Forma de atuacao

O gerenciamento de E/S, independente de quem o realiza, e feito em duas etapas ounıveis: controle de E/S e controle de perifericos. O primeiro, mais alto, se preocupacom aspectos administrativos das solicitacoes de E/S realizadas, enquanto o segundose preocupa com a operacionalizacao fısica desses pedidos.

Essa divisao faz com que o controle de perifericos trabalhe diretamente com ohardware envolvido, sendo necessario o desenvolvimento de uma interface diferentepara cada dispositivo especıfico (sao os drivers que instalamos no sistema). Ao fazerisso percebe-se que o S.O. nao influencia esse controle, sendo o estudo do mesmodeixado para areas mais ligadas a engenharia.

Ja o controle de E/S independe de caracterısticas eletricas/mecanicas do hard-ware por atuar apenas no controle logico dos mesmos. Isso significa, em outraspalavras, que o controle de E/S ira gerenciar filas de controle de acesso aos disposi-tivos de E/S e nao executar a atividade de E/S propriamente dita. Isto possibilita,portanto, que um mesmo controle possa ser aplicado para toda uma famılia de dis-positivos.

Esses dois nıveis de controle se diferenciam ainda na forma em que tratam dispo-sitivos que exijam acesso privativo (como impressoras, por exemplo) e dispositivoscom acesso compartilhado (como discos ou rede, por exemplo). Em qualquer dessescasos o controle de perifericos nao faz distincao entre essas categorias de disposi-tivos por ser apenas o executor da operacao de E/S. A diferenciacao entre o quepode ter acesso compartilhado ou nao e feita no controle de E/S, que e quem tratalogicamente todas as solicitacoes realizadas.

5.3 Mecanismos de controle de E/S em disco

O controle de E/S em disco e feito de forma a otimizar a movimentacao da cabecade leitura/escrita e do proprio disco. Existem varios algoritmos propostos para arealizacao dessa otimizacao, sendo que a maioria deles procura otimizar o chamadotempo de busca (seek time) pela informacao no disco. Para entender melhor essesalgoritmos e preciso antes entender como um disco e dividido fisicamente, ou seja,entender o que sao trilhas e setores de um disco e que os tempos de busca estaoassociados com o acesso as trilhas e os tempos de latencia com os setores. O tempode acesso ao disco e portanto a soma desses dois tempos. Como o primeiro e bemsuperior ao segundo, passa a ser a restricao mais importante no momento de escolherum algoritmo para controlar o acesso ao disco.

15

Page 16: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Os algoritmos de acesso a disco mais usados sao o FIFO (que escolhe o proximopedido a ser atendido pela ordem de requisicao), SSTF (shortest seek-time first,que atende o pedido para a trilha mais proxima da atual), o SCAN (que varre odisco atendendo os pedidos linearmente) e suas variacoes, como C-SCAN, LOOK,C-LOOK, Modified Scan, etc.

5.4 Problemas com entrada nao controlada

Fazer o gerenciamento de dispositivos de E/S nao envolve atividades muito comple-xas quando quem dispara a operacao for o sistema operacional. Entretanto isso naoe verdade para operacoes de entrada de dados com determinados dispositivos, comomouse, teclado e redes. Nesses casos o sistema deve prover algum mecanismo paraque a recepcao de dados ocorra sem perdas, pois nao se sabe quando eles chegarao,qual processo os deve receber, qual o tamanho do bloco de dados e como sinais decontrole devem ser tratados.

O tratamento de quem deve receber os dados e de quantos bytes virao e feitocom a identificacao atraves de um cabecalho (header) no bloco de dados (quandoestivermos usando rede) ou pela identificacao do dispositivo (quando nao for rede).Ja o tratamento de quando os dados chegarao pode ser feito com a criacao de bufferse sinais de interrupcao, com tecnicas como as de toggle buffers ou buffers circulares.

Por fim, o tratamento de sinais de controle pode ser feito de forma imediata(com deteccao dos mesmos) ou durante o esvaziamento do buffer (com a sua leiturapelo processo destinatario). Em qualquer das hipoteses existe perda de informacao,ficando a cargo do projetista do S.O. identificar qual tipo de informacao perdida emenos prejudicial aos sistemas em que ele sera aplicado.

16

Page 17: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 6

Camada Fısica

1. Introducao

2. Funcoes

3. Suporte fısico

4. Codificacao e modulacao

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Computer Networks, Tanenbaum, cap. 2

• Redes de Computadores, Soares et alii, caps. 3, 4, 6 e 9

• Outros bons livros de redes de computadores, nos capıtulos sobre camada fısicado protocolo OSI

6.1 Introducao

Apos a discussao sobre os problemas no gerenciamento de E/S para o dispositivo derede, se torna interessante voltarmos ao estudo dos protocolos de redes envolvidosefetivamente com o envio e recebimento de sinais na rede.

Como ja examinado, os protocolos de comunicacao sao estruturados em camadas.Comecaremos nosso estudo pela camada fısica, que e aquela que trata diretamentedas especificacoes de como as maquinas se conectam fisicamente para permitir acomunicacao.

6.2 Funcoes

Como a funcao primaria da camada fısica e o estabelecimento de regras para a ligacaomecanica/eletrica entre maquinas, pode-se estabelecer um conjunto de servicos quea mesma deve prover a camada de rede. Esses servicos dependem de algumas ca-racterısticas fısicas do ambiente de rede, como:

1. Definicao do suporte fısico

17

Page 18: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

2. Definicao de caracterısticas eletromecanicas dos conectores

3. Definicao de tecnicas de codificacao

4. Definicao de tecnicas de modulacao

Dessas caracterısticas nao examinaremos aqui os detalhes eletromecanicos dosconectores (RJ-45, RS-232, RS-449, RS-422, etc.), uma vez que sao dados tabeladose que nao interferem na especificacao conceitual de uma rede. As demais funcoesserao examinadas a seguir.

6.3 Suporte Fısico

Suporte fısico e, na realidade, o elemento no qual serao transmitidas as mensagenspela rede. Assim, os tipos de suporte fısico disponıveis sao o par trancado (cabosUTP), o cabo coaxial, a fibra otica, e o proprio ar. As diferentes capacidades detransmissao e de imunidade a ruıdos diferenciam a aplicacao de cada tipo de suporte.Outra restricao ao tipo de suporte esta ligada ao tipo de topologia adotado, umavez que nem sempre e conveniente usar um determinado tipo de cabeamento paradeterminados tipos de topologia.

Outros aspectos a serem considerados sao o custo do cabeamento, sua flexibili-dade e sua capacidade mecanica (resistencia fısica). Esse conjunto de fatores e quedetermina, no final das contas, qual tipo de suporte fısico sera adotado, exceto emaplicacoes especıficas, quando uma caracterıstica especial acaba sendo determinantesobre as demais.

Uma consequencia importante da escolha por um dado tipo de suporte fısico eda topologia usada e o mecanismo a ser adotado para o controle de acesso ao meio.Diferentes combinacoes de suporte e topologia demandam diferentes tecnicas paradefinir quem pode transmitir a cada instante. Os protocolos IEEE 802-xx fazemexatamente a definicao dessas tecnicas para redes em barramento, anel, sem-fio, etc.

6.4 Codificacao e modulacao

A transmissao de informacoes entre duas maquinas envolve, na pratica, o envio desinais (eletricos, eletromagneticos ou oticos) ao longo do suporte fısico. Temos entaoondas, que sofrem sempre alguma forma de atenuacao por parte do meio em queestao sendo transmitidas. Essa atenuacao e proporcional a dois fatores: a frequenciado sinal e do seu espectro de potencia.

A transmissao de sinais em banda basica, isto e, em frequencia e valores exa-tamente iguais ao sinal a ser transmitido, e a forma mais simples de se transmitirum sinal. Esse modo, porem, apresenta forte atenuacao em funcao de seu espectrode potencia. Isso faz com que o sinal em banda basica nao possa ser transmitidopara distancias maiores. Alem disso, no sinal em banda basica podemos ter lon-gas sequencias de zeros ou uns, o que fatalmente faria as maquinas comunicantesperderem o sincronismo entre si.

Para corrigir o problema de perda de sincronismo e do espectro de potencia ruimfaz-se a codificacao do sinal a ser transmitido. Existem varios codigos distintos que

18

Page 19: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

podem ser usados, como Manchester, Miller, Diferencial, etc. O interessante nessescodigos e que todos procuram provocar transicoes no sinal transmitido, mesmo queo valor do bit na infomacao permaneca constante

Finalmente, a modulacao do sinal corrige o problema de alcance em funcao dafrequencia do mesmo. A modulacao faz com que os sinais transmitidos sejam deuma frequencia maior (a portadora) e que o sinal modulado seja depois recebidopela maquina destinataria do sinal, que o demodularia para extrair o sinal real, numprocesso identico ao de transmissao de radio ou televisao. Essa modulacao pode serfeita classicamente em amplitude, em frequencia ou ainda em fase, conhecidos pelassiglas ASK, FSK e PSK. Alternativas mais recentes de modulacao para transmissaode dados envolvem tecnicas de telefonia celular, como CDMA, GSM, etc.

19

Page 20: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 7

Camada de Enlace

1. Introducao

2. Funcoes

3. Sub-camada de enlace logico (LLC)

4. Sub-camada de controle de acesso ao meio (MAC)

5. Bridges

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Computer Networks, Tanenbaum, cap. 3 e 4

• Redes de Computadores, Soares et alii, caps. 7, 8 e 9

• Outros bons livros de redes de computadores, nos capıtulos sobre camada deenlace do protocolo OSI

7.1 Introducao

Dando continuidade ao estudo dos protocolos de comunicacao, passamos para asegunda das camadas do protocolo OSI, que e, tambem, uma das mais importantespara um bom desempenho da rede.

Nesse capıtulo sera dado um enfoque especial em dois dos servicos prestadospela camada de enlace, que sao o controle de acesso ao meio e o controle de enlacelogico entre as estacoes que estiverem se comunicando. Esses servicos, dentro dosprotocolos IEEE 802-xx, estao definidos em duas subcamadas, que sao a LLC (Lo-gic Link Control) e a MAC (Medium Access Control), arranjadas de modo que asubcamada MAC fica abaixo da LLC, sendo responsavel pelas diferentes formas deacesso ao meio para as diferentes topologias existentes.

20

Page 21: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

7.2 Funcoes

A funcao primaria da camada de enlace e fazer a conexao entre as maquinas queestiverem trocando informacoes. Essa tarefa implica em alguns servicos que podemser oferecidos as camadas superiores que nao tem, na realidade, relacao direta com oenlace das maquinas. O principal deles e a verificacao, e possıvel correcao, de errosnos pacotes sendo transmitidos. As principais funcoes sao:

1. Definicao de como mensagens sao trocadas

2. Definicao de quadros (framing) a serem transmitidos

3. Definicao de como sao tratados os erros

4. Definicao de sincronismo entre pacotes na transmissao

5. Definicao de como os pacotes acessam o suporte fısico

Examinaremos aqui primeiro os detalhes do tratamento de erros e da definicaode quadros (itens 2 a 4), para entao concluir com um estudo do controle de acessoao suporte fısico (item 5).

7.3 Enlace logico

7.3.1 Deteccao de erros

A transmissao de um sinal ao longo da rede pode sofrer interferencias por variosmotivos. Independentemente do motivo, essas interferencias podem fazer com quevalores transmitidos cheguem trocados em seu destino. E preciso, portanto, umatecnica que determine se a mensagem recebida possui ou nao erros, para que oreceptor da mesma possa trata-la convenientemente. As formas de se fazer isso sao:

• Bits de paridade e paridade transveral

• Codigos de Redundancia Cıclica (CRC)

Em paralelo a deteccao de erros existem formas de recuperar erros que nao sejamde grandes proporcoes, tal como e feito usando-se o Codigo de Hamming.

7.3.2 Sincronismo de mensagens

Um problema comum em qualquer processo de comunicacao e identificar quem equando cada processo ”fala”. Esse problema e agravado na comunicacao entre duasmaquinas, pois podem ocorrer erros na transmissao dos bits que compoe os dados.Esses erros implicam na necessidade da maquina que transmite ter conhecimentosobre o sucesso ou nao da transmissao para que possa dar continuidade ao processode comunicacao. Isso pode ser feito atraves de varios protocolos distintos de controlede fluxo, entre os quais temos:

• Stop-and-wait

• Sliding window (janela deslizante)

21

Page 22: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

7.4 Controle de acesso ao meio

Ate agora temos examinado a transmissao de mensagens de forma nao concorrente,isso e, uma maquina usa o suporte fısico sem ter que disputa-lo com outras maquinas.Isso, no entanto, e completamente irreal (e ineficiente ou muito caro, dependendoda topologia usada).

A pratica e fazer com que o suporte fısico seja usado de modo concorrente,com tecnicas para controle de seu acesso dependendo da topologia usada na rede.Examinaremos aqui apenas protocolos para redes em barramento, anel e sem-fio,deixando as demais topologias entendidas como casos particulares dessas, que podemser resolvidos pelas mesmas tecnicas ou por tecnicas de roteamento.

• Redes em barramento

– Aloha

– Famılia CSMA

– Token bus

• Redes em anel

– Token

– Slotted

• Redes sem-fio

– MACAW

7.5 Bridges

Para concluir esse capıtulo e preciso que se fale em dispositivos que permitem ainterconexao de redes. Aqui, em particular, falaremos de um dispositivo chamadobridge, que nada mais e do que um conversor de protocolos que permite que osenderecos de maquinas tratados possam ser de redes vizinhas, bastando que essesenderecos sejam conhecidos pela bridge (e nao por todas as maquinas da rede. Ouso de bridges permite tambem a conversao de protocolos, permitindo que umamaquina localizada em uma rede em anel ”converse”com outra localizada numarede em barramento.

Um cuidado especial com o uso de bridges e evitar a formacao de lacos na conexaoentre sub-redes. Na realidade e impossıvel evitar a formacao fısica de tais lacos, umavez que nao temos como controlar quais redes estarao conectadas a quais outrasredes. O que se faz e evitar a formacao logica desses lacos, com a aplicacao dealgoritmos de arvores geradoras (spanning tree).

22

Page 23: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 8

Camada de Rede

1. Introducao

2. Funcoes

3. Estrategia de conexao

4. Roteamento

5. Congestionamento

6. Interconexao de redes

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Computer Networks, Tanenbaum, cap. 5

• Redes de Computadores, Soares et alii, caps. 10 e 11

• Outros bons livros de redes de computadores, nos capıtulos sobre camada derede do protocolo OSI

8.1 Introducao

A terceira camada do protocolo OSI e tambem a ultima em que todas as maquinasda sub-rede tomam parte. E na camada de rede que as maquinas determinam,finalmente, se a mensagem e de fato enderecada a ela ou nao.

Isso implica, na pratica, no desenvolvimento de atividades de enderecamento eroteamento, para que os pacotes de dados possam chegar corretamente aos seusdestinos e de forma eficiente.

8.2 Funcoes

Como a funcao primaria da camada de rede e o tratamento de enderecos, os servicospor ela prestados a camada de transporte sao:

23

Page 24: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

1. Definicao de enderecos

2. Definicao da estrategia de conexao

3. Definicao de rotas a serem seguidas pelos pacotes

4. Definicao de tecnicas para tratamento de congestionamentos

Dessas caracterısticas nao examinaremos aqui os detalhes de como se definemenderecos (e como eles sao tratados), deixando esse item para ser discutido dentroda camada de transporte, no contexto do protocolo TCP/IP. Nos concentraremosportanto no tratamento de rotas, o que envolve os itens 2 a 4.

8.3 Estrategia de Conexao

Como mencionado, a camada de rede se preocupa essencialmente com atividadesde enderecamento e roteamento. Entretanto, uma condicionante bastante severa aatividade de roteamento e a forma como se estabelecem conexoes entre as entidadesque irao se comunicar. Essa conexao diz respeito ao formato em que se define umcaminho na rede, o que pode ser feito de duas formas distintas:

1. Circuito Virtual, em que o caminho e definido no estabelecimento da co-nexao, nao sendo mais alterado a partir daı. Todos os pacotes seguem semprea mesma rota, independentemente de situacoes como perda de linha ou con-gestionamento. E uma forma mais simples de se fazer o roteamento.

2. Datagrama, em que o caminho e definido para cada pacote individualmente,sendo o pacote denominado datagrama. Aqui e possıvel tentar usar sempre omelhor caminho possıvel. Entretanto isso cria um custo computacional adici-onal, que nem sempre e desejavel.

8.4 Roteamento

A transmissao de informacoes entre duas maquinas apenas e possıvel se existiruma ligacao entre as mesmas. Se essas maquinas fizerem parte da mesma sub-rede(domınio) nao existe maior preocupacao em como se estabelecer tal conexao. Paramaquinas em sub-redes distintas, muitas vezes bem distantes uma da outra, e pre-ciso que se defina o caminho que deve ser percorrido pelos pacotes transferidos entrecada maquina. Ao processo de definicao do caminho denominamos roteamento, quee, na pratica, uma das operacoes mais caras no funcionamento de uma rede.

Existem diversas formas de se fazer o roteamento, tais como:

• Hot potato

• Flooding

• Caminho mınimo (Dijkstra, Bellman-Ford)

• Por tabelas estaticas (ou dinamicas), etc.

24

Page 25: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

8.5 Congestionamento

Um problema intrinsicamente associado ao roteamento e o de tratamento de con-gestionamentos. A relacao entre os dois e bastante obvia, pois um caminho e maisou menos eficiente dependendo de quantos pacotes estao trafegando por ele numdado instante. E natural que quanto mais pacotes trafegando, menor sera a folga docanal e, portanto, maior a possibilidade de reducao na velocidade do trafego naqueleponto da rede.

Dentro da camada de rede se estabelecem, portanto, servicos para o tratamentode congestionamentos, que podem tanto se aproveitar dos algoritmos de roteamento,quanto ter funcionamento dedicado e independente, como e o caso do algoritmo deLeaky Bucket.

8.6 Interconexao de redes

Como a camada de redes e a responsavel pelo roteamento de pacotes entre as variassub-redes, cabe a ela hospedar os dispositivos que executarao tal funcao. Essesdispositivos sao denominados roteadores (routers), possuindo um alto grau deprocessamento e “inteligencia”. O funcionamento estavel e eficiente de uma rededepende, fundamentalmente, da eficiencia dos roteadores. A velocidade do trafego,alem de restricoes locais, depende das capacidades de transferencia dos roteadores,uma vez que todo o trafego entre duas redes quaisquer deve, obrigatoriamente, passarpor um ou mais desses dispositivos.

Apenas como lembranca, vale dizer que enquanto um bridge se ocupa de apenasduas sub-redes, sendo portanto capaz de transferir dados de uma para outra, umroteador e capaz de identificar enderecos de redes que distam varios passos (conexoesentre sub-redes) entre si, estabelecendo rotas para se transferir pacotes entre uma eoutra, alem de poder conectar simultaneamente diversas sub-redes.

25

Page 26: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 9

Camada de Transporte e TCP/IP

1. Introducao

2. Funcoes

3. Conexao/desconexao

4. QoS

5. Enderecamento

6. Multiplexacao

7. TCP/IP

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Computer Networks, Tanenbaum, cap. 6

• Redes de Computadores, Soares et alii, cap. 12

• Outros bons livros de redes de computadores, nos capıtulos sobre camada detransporte do protocolo OSI e sobre TCP/IP

9.1 Introducao

A camada de transporte do protocolo OSI e a primeira em que apenas as duasentidades que querem se comunicar tomam parte. E por isso que uma de suasfuncoes e o estabelecimento de um padrao de qualidade de servico (QoS) sobre oqual a comunicacao deve ocorrer.

Alem do estabelecimento da qualidade de servico, cabe ainda a camada de trans-porte a definicao de como uma conexao deve ser estabelecida, mantida e encerrada.Tambem e na camada de transporte (em conjunto com a de rede) que se materializao protocolo TCP/IP, que e, sem sombra de duvida, o padrao dominante na Internet.

26

Page 27: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

9.2 Funcoes

A camada de transporte trata, fundamentalmente, do processo de conexao entreduas entidades que irao se comunicar. Nesse processo, as principais funcoes por elaoferecidas as camadas superiores sao:

1. Definicao da Qualidade de Servico (QoS)

2. Definicao do processo de conexao e desconexao de uma sessao

3. Definicao de enderecamento dos processos comunicantes associado ao protocoloTCP/IP

9.3 Protocolos de Conexao e desconexao

Como a camada de transporte e a primeira em que os pacotes transferidos entre asduas entidades que se comunicam so circulam nas maquinas em que estao execu-tando, cabe a ela fazer o controle da conexao e desconexao entre essas maquinas.Por apenas envolver as maquinas origem e destino, os protocolos dessa camada saochamados de protocolos ponto-a-ponto.

Dentro desse cenario a operacao do protocolo de conexao e bastante simples,requerendo apenas que se enviem mensagens solicitando a conexao, aceitando opedido e confirmando o estabelecimento da conexao apos acordos sobre o padraode QoS a ser admitido. Todo esse processo e bastante bem definido atraves deprimitivas chamadas TPDUs (Transport Protocol Data Unit), que possuem sintaxee relacoes de dependencia delimitadas.

Os problemas surgem, de fato, no momento da desconexao entre as duas maquinas,o que deve ocorrer de modo a evitar que uma delas permaneca acreditando que aconexao ainda esta em atividade. Isso ocorre pela falta de capacidade de se iden-tificar que o parceiro da comunicacao esta pronto para se desconectar sem que elelhe envie uma mensagem sobre isso. Ao receber tal mensagem, e o seu parceiro queficara na duvida sobre se voce recebeu, ou nao, a ultima mensagem enviada. Esseprocesso de duvidas prossegue ad infinitum caso um dos dois parceiros nao admita,sem necessidade de uma mensagem, que o outro esta pronto para a desconexao.

A esse problema se aplicam solucoes de concordancia (Agreement), em queo protocolo de desconexao deve ser feito de modo que, num dado ponto, um dosparceiros admita que o outro iniciou a desconexao real caso nao receba mensagemindicando o contrario.

9.4 QoS

Durante o processo de estabelecimento de uma conexao devem ser definidos algunsdetalhes sobre como a mesma transcorrera. Um desses detalhes e a definicao daqualidade de servico (QoS), a qual, na pratica, define os limites mınimos aceitaveispara certos parametros de desempenho para que a conexao seja mantida. Os valoresestabelecidos de QoS durante a fase de conexao sao, portanto, pisos de desempenhopara a conexao. Dentro do protocolo OSI se definem diversas classes de QoS, segundo

27

Page 28: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

patamares de erros e perdas de pacotes. A classe de uma rede (do ponto de vistade qualidade) e definido pela classificacao ISO.

Alem dos tipos de classe do protocolo OSI ainda se definem, durante o estabele-cimento da conexao, parametros de qualidade como:

1. Atraso de estabelecimento de conexao

2. Probabilidade de falha de estabelecimento de conexao

3. Vazao (velocidade) da rede

4. Atraso de transito

5. Prioridade

6. Resiliencia

7. Taxa de erros residuais

9.5 Enderecamento

O problema de enderecamento consiste em permitir que varias conexoes sejam esta-belecidas, por uma mesma maquina, com uma ou mais maquinas simultaneamente,ou seja, e preciso definir como cada processo envolvido em alguma conexao e diferen-ciado dos demais processos. Isso implica em que cada conexao devera ter enderecosespecıficos, que permitam a camada de transporte diferenciar entre uma conexao eoutra. Isso e feito atraves de enderecos de portas de servico, conhecidas por TSAP(Transport Service Access Point). As entidades que querem trocar informacoes de-vem, entao, especificar enderecos TSAP em que efetivarao tais trocas. No casoparticular do TCP/IP as TSAPs sao implementadas atraves de sockets para identi-ficar os pontos (portas) de acesso.

Em situacoes especıficas, como acesso a servicos considerados padroes na internet(acesso a um sistema de arquivos, por ex.), esse processo de enderecamento faz usode portas (TSAPs) pre-definidas para a conexao, que depois sao redirecionadas paraportas gerais. No protocolo TCP essas portas pre-definidas estao abaixo da porta49151, como por exemplo o servico de telnet na porta 23, ssh na porta 22 e http naporta 80.

9.6 Multiplexacao

Como a camada de aplicacao trata de multiplas conexoes simultaneas e as camadasabaixo dela podem tratar apenas de uma informacao por vez, e necessario definircomo isso pode ser acomodado. A tecnica usada e a de multiplexacao das conexoes,ficando a camada de aplicacao responsavel por definir qual porta (TSAP) acessaraa camada de rede por vez.

28

Page 29: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

9.7 TCP/IP

Finalmente, para concluir o estudo da camada de transporte falta examinar o fun-cionamento do protocolo TCP/IP. Na realidade, esse protocolo trabalha em cincocamadas, que sao as camadas fısica, de enlace, de rede, de transporte e de aplicacao.Dessas camadas todas e nas camadas de rede e de transporte que aparecem as dife-rencas significativas entre TCP/IP e OSI. Em especıfico, e na camada de rede queesta regulado o protocolo IP, enquanto o TCP funciona na camada de transportepara trocas de dados que demandem o estabelecimento de conexao. Alem do TCPexiste tambem na camada de transporte o protocolo UDP, usado quando nao existenecessidade de conexao.

9.7.1 IP

O protocolo IP e encarregado de definir enderecos das maquinas que participaraointegralmente do processo de comunicacao. Para essa tarefa se define um cabecalho(o IP header) contendo informacoes tais como enderecos internet da fonte e dodestino do pacote, tamanho e identificacao do pacote, opcoes de servico (como res-tricoes de roteamento, nıvel de seguranca, etc.), entre outros dados, que podem servistos com detalhes na maioria dos livros de redes de computadores.

Os enderecos IP sao enderecos de 32 bits (no caso do IPv4), divididos em classesde redes, que especificam o numero maximo de maquinas em uma rede especıfica.A classificacao de enderecos IP tambem pode ser vista em livros da area, assimcomo um detalhamento das especificacoes do IPv6 (nele os enderecos sao de 128bits). Vale observar que o protocolo IPv4 vem sendo substituıdo pelo IPv6, comenderecos de 128 bits e uma gama bastante maior de servicos oferecidos ao processode roteamento e identificacao de enderecos.

Como enderecos IP na realidade sao obtidos a partir de nomes, atraves de umservico de nomes de domınio, eles identificam uma maquina de forma logica. Alocalizacao fısica de uma maquina, ou o mapeamento entre endereco logico e fısico,e distinto do endereco IP. Na pratica cada maquina possui uma placa de rede quepossui um endereco Ethernet (48 bits, unico para cada placa existente no mundo).Entao e preciso que se transforme enderecos IP para enderecos Ethernet e vice-versa.Isso e feito por um par de protocolos definidos na camada de rede, chamados ARP(Address Resolution Protocol) e RARP (Reverse Address Resolution Protocol), quefazem, respectivamente, o mapeamento entre um endereco IP para um Ethernet eentre um endereco Ethernet para um IP.

9.7.2 TCP

O protocolo TCP faz a definicao dos servicos listados aqui para a camada de trans-porte, em especial os servicos de QoS e de enderecamento, alem de prover primitivasde controle de conexao (TPDUs para estabelecer, manter e fechar uma conexao).

Parte desse servico e definido atraves de um cabecalho (TCP header), quedefine as TSAPs envolvidas na comunicacao, padroes de qualidade para o servico,etc. (mais uma vez, a descricao completa do cabecalho pode ser vista nos bons livrosda area).

29

Page 30: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Uma observacao importante a fazer nesse ponto e que a camada de transportedeve fornecer servicos equivalentes para uma comunicacao quer seja ela orientadaa conexao quer nao seja. Em especıfico, dentro do TCP/IP, o servico orientado aconexao e provido pelo protocolo TCP, enquanto que o nao orientado a conexao(connectionless) e provido pelo protocolo UDP.

9.7.3 UDP

O protocolo UDP e utilizado para trocas de mensagens em que nao se necessite doestabelecimento previo de conexao entre as maquinas comunicantes. Existem variasaplicacoes em que isso e interessante e ate mesmo necessario, devendo ficar claro quequando a transmissao ocorre por UDP nao existe a garantia de que a mensagem foientregue com sucesso. Enderecos UDP sao os mesmos do TCP, sendo a diferencaapenas a necessidade de conexao previa. O cabecalho UDP tambem e descrito nosbons livros de redes de computadores, nao sendo detalhado aqui.

30

Page 31: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 10

Camada de Aplicacao

1. Introducao

2. Funcoes

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Computer Networks, Tanenbaum, cap. 7

• Redes de Computadores, Soares et alii, cap. 15

• Outros bons livros de redes de computadores, nos capıtulos sobre camada deaplicacao

10.1 Introducao

Antes de falar da camada de aplicacao e preciso mencionar que entre essa camadae a de transporte existem, no modelo OSI, outras duas camadas, responsaveis pelogerenciamento de uma sessao (a camada de sessao) e pelo gerenciamento do perfildessa sessao (a camada de apresentacao). A descricao dessas camadas pode ser vistanos livros que tratam mais detalhadamente o protocolo OSI. Aqui nao as trataremospois grande parte de seus servicos podem ser anexados aos servicos das camadas detransporte e de aplicacao, como e feito no protocolo TCP/IP, usado pela grandemaioria das redes em funcionamento.

Assumindo-se essa falta, voltamos nossa atencao a camada de aplicacao, quee a responsavel pela especificacao dos diferentes servicos de comunicacao a seremdisponibilizados para o usuario da rede. As funcoes a serem descritas a seguirresumem, na realidade, uma serie de aplicacoes em rede que permitem aos usuariosdesses servicos a realizacao de tarefas diversas.

Nao existem, portanto, servicos na camada de aplicacao que tenham a mesmafuncionalidade dos servicos presentes nas camadas anteriores. Em cada aplicacaosao definidos protocolos especıficos para a aplicacao, tendo em comum apenas ainterface com a camada inferior (apresentacao no protocolo OSI ou transporte noTCP/IP). Dessa forma, o estudo da camada de aplicacao pode ser entendido (e as-sim realizado) como o estudo de cada uma das aplicacoes existentes. Isso, e claro,

31

Page 32: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

requer um esforco grande demais para ser efetivo nesse ponto do curso. Assim,apenas listaremos algumas das aplicacoes existentes, com suas caracterısticas prin-cipais, deixando apenas a aplicacao de seguranca para ser discutida um pouco maisdetalhadamente no proximo capıtulo.

10.2 Funcoes

1. Transferencia de arquivos

O servico de transferencia de aquivos permite aos usuarios movimentar (car-regar ou depositar) arquivos de uma maquina para outra. Aplicativos dessacategoria incluem o ftp (ou sftp por razoes de seguranca) e, hoje em dia, na-vegadores web. O servico oferecido consiste em estabelecer a conexao entreduas maquinas, reconhecer as permissoes de acesso e transferir arquivos entreas maquinas atraves de pacotes de mensagens;

2. Troca de mensagens

Esse servico consiste em permitir que usuarios se comuniquem de forma assıncronaatraves de mensagens de texto (com ou sem imagens ou outros arquivos anexa-dos). Esse servico e provido por aplicativos como e-mail, usenet news (muitotempo atras) e twitter, entre outros.

Para e-mails o envio de uma mensagem exige que as maquinas que representamos enderecos fonte e destino se conectem para que o envio da mensagem ocorrade fato. O nao estabelecimento da conexao implica em colocar-se a mensagemnuma fila e tentar-se o seu envio repetidas vezes durante alguns dias.

No caso de servicos de news o envio de uma mensagem nao e feito para umusuario (ou lista deles) especıfico e sim para um mural, que pode ser consultadopor quem desejar. Funciona como um quadro de avisos (bulletin board), emque se afixam notas que sao lidas apenas pelos interessados. Essa e umaforma mais eficiente de se trabalhar com listas de distribuicao, embora exija aexistencia de um servidor (e muitos espelhos) para o mural;

Temos ainda servicos de troca de mensagem em tempo-real, tais como os chatsda internet, mas esses pouco se diferenciam dos mecanismos anteriores, excetopelo fato da troca ocorrer de modo mais instantaneo.

3. Acesso remoto

Permite aos usuarios acessarem maquinas remotamente. Os maiores proble-mas para acesso remoto estao ligados a seguranca e ao fornecimento de umambiente de trabalho confortavel ao usuario. A seguranca envolve aspectosbastante especıficos e nao serao tratados aqui e o ambiente de trabalho en-volve o fornecimento de caracterısticas de conversao entre terminais graficos,que serao tratados no proximo item. Aplicativos desse tipo incluem telnet (quedeve ser evitado) e ssh, entre outros;

4. Terminal virtual

32

Page 33: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Como dito acima, o servico de terminal virtual consiste em fornecer ao usuarioum ambiente em que ele possa fazer acesso remoto a uma determinada maquina,atraves da conversao de controles especıficos de interface (tela, teclado, mouse,etc.) da maquina em que se esta fisicamente o usuario e a maquina que e aces-sada remotamente. Terminais virtuais incluem xterm, vt100, etc.;

5. Execucao remota

Servicos de execucao remota sao, na realidade, uma especializacao do servicode acesso remoto em que o usuario apenas solicita que uma determinada tarefaseja executada remotamente. Eles sao uma das caracterısticas determinantesde sistemas distribuıdos, sendo representados, por exemplo, pelo servico deRPC (Remote Procedure Call) ou de RMI (Remote Method Invocation emJava);

6. Seguranca

Esse servico sera tratado com mais detalhes no proximo capıtulo. Entretanto,para nao deixar em falta o mınimo de informacao, e preciso dizer aqui queseguranca em redes de computadores significa fornecer meios de controle deacesso aos servicos da rede. Isso implica em controlar a autenticacao dosusuarios e das permissoes de acesso que esses usuarios terao aos conteudos,servicos e recursos disponıveis na rede.

33

Page 34: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 11

Seguranca em Sistemas deComputacao

1. Introducao

2. Autenticacao

3. Controle de permissoes

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Computer Networks, Tanenbaum, cap. 7

• Modern Operating Systems, Tanenbaum, cap. 4

• Operating Systems Concepts, Peterson/Silberschatz, cap. 11

• Outros bons livros de redes de computadores ou de sistemas operacionais, noscapıtulos sobre seguranca

11.1 Introducao

No capıtulo anterior mencionou-se que seguranca seria um dos servicos a seremprovidos pela camada de aplicacao de um protocolo de rede. Entretanto, a segurancade um sistema computacional nao difere muito se tratada do ponto de vista de redeou de uma maquina isolada, uma vez que o problema basico de seguranca e o controlede acesso, que pode ser dividido entre as atividades de autenticacao do usuario e decontrole de permissoes. Essas duas atividades, exceto pelo escopo de sua atuacao evulnerabilidade, sao semelhantes quer aplicadas para uma ou mais maquinas.

Nesse capıtulo faremos uma revisao rapida dos principais problemas envolvidosem fornecer seguranca a um sistema computacional (maquina ou rede), examinandoinicialmente os problemas envolvidos com autenticacao e depois aqueles referentes aocontrole de permissoes. Saliente-se que o exame desse topico aqui nao deve,nem pode, ser considerado como um curso introdutorio de seguranca decomputadores.

Assim sendo, e interessante comecar com uma lista de alguns dos tipos maiscomuns de ataques perpretados contra sistemas de computacao. Sao eles:

34

Page 35: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

1. Denial of Service (DoS) ou Distributed Denial of Service (DDoS), emque uma maquina recebe um numero exorbitante de solicitacoes de servicocausando sua paralizacao;

2. Brechas de sistema, em que se aproveita de bugs na implementacao de umsistema operacional para se ganhar acesso ao equipamento. Isso envolve, emgeral, uso de scanners que procuram na rede por sistemas que apresentem taisvulnerabilidades;

3. Sniffing, em que se escuta as mensagens circulando pela rede na busca denomes de usuarios e de suas senhas.

11.2 Autenticacao

O servico de autenticacao do usuario e o responsavel por permitir que o acessologico ao sistema seja habilitado em forma e grau determinados para cada usuario.Tanto do ponto de vista de acesso a rede quanto de uma maquina, o processo deautenticacao envolve a identificacao do usuario.

Dependendo do grau de restricao de acesso ao sistema, o processo de autenticacaoexige procedimentos distintos. Por exemplo, numa maquina isolada, instalada emum quarto de uma residencia, a autenticacao pode envolver simplesmente o acessofısico ao equipamento, atraves da chave da residencia. Ja num ambiente de maximaseguranca esse processo pode envolver mecanismos sofisticados, tais como verificacaode timbre vocal, iris do olho, impressao digital, DNA, etc.

Os problemas associados ao processo de autenticacao se restringem basicamentea possibilidade de burla de senhas ou outros mecanismos quaisquer. Numa maquinacabe ao usuario cuidar que sua senha nao seja facilmente descoberta e que a mesmaseja trocada com uma certa frequencia. Numa rede o problema e agravado com apossibilidade de escutas na rede (sniffers), que podem capturar nomes e senhas deusuarios que estejam fazendo acesso remoto. Esse problema pode ser minimizado seos mecanismos de acesso remoto fizerem uso de criptografia, como e o caso do ssh,por exemplo.

Na pratica, entao, o controle de autenticacao depende de um bom mecanismo deprotecao de informacoes, que vai desde servicos de criptografia (existem inumerastecnicas para se criptografar, como PGP, DES, RSA, etc.) ate mesmo ao cuidadodo usuario em evitar que sua senha seja obvia ou que o vejam digitando-a.

No contexto de redes de computadores, esses cuidados dever ser ampliados paraincluir autenticacao de maquinas. Isso significa garantir que as maquinas em conexaosao, de fato, as maquinas esperadas. Uma forma de se resolver isso e atraves do umservico de DNS reverso de encaminhamento confirmado (FRrDNS), que procuragarantir as identidades das maquinas envolvidas.

11.3 Controle de permissoes

Uma vez que o usuario tenha ganho acesso ao sistema ainda e preciso controlarsuas acoes dentro dele. Isso envolve basicamente a verificacao das permissoes dadas

35

Page 36: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

a ele, controlando o acesso do mesmo aos varios recursos do sistema (maquinas,aplicativos, comandos, arquivos) de acordo com tais permissoes.

O modo de se realizar esse controle varia de sistema para sistema e de recurso pararecurso. No caso de arquivos (e diretorios), por exemplo, o controle normalmente efeito atraves de informacoes armazenadas sobre cada arquivo, que dizem o tipo deacessibilidade que o mesmo tem. A mesma estrategia pode ser usada para o acessoa aplicativos e comandos do sistema.

Para o acesso a maquinas, a estrategia pode envolver o uso de mecanismos deautenticacao explıcitos ou ainda, como e o caso do UNIX, fazer uso de arquivosque delimitam o acesso de cada maquina ou aplicacao (arquivos .allow e .deny, porexemplo).

Vale ainda indicar aqui que no caso de uma maquina, todo esse controle deseguranca e feito pelo sistema operacional, atraves de seu modulo de gerenciamentode arquivos (o Sistema de Arquivos), que sera examinado no proximo capıtulo.

36

Page 37: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 12

Sistema de Arquivos

1. Introducao

2. Funcoes

3. Protecao

4. Nomes e enderecos

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Modern Operating Systems, Tanenbaum, cap. 4

• Operating Systems Concepts, Peterson/Silberschatz, cap. 10

• Outros bons livros de sistemas operacionais, nos capıtulos sobre sistema dearquivos

12.1 Introducao

O sistema de arquivos e o modulo responsavel, dentro do SO, pelo gerenciamento doconteudo dos discos do sistema. Esse gerenciamento inclui tanto o controle de acessoaos mesmos (seguranca), como o controle da localizacao e manuseio dos conteudosde cada arquivo.

Aqui nao examinaremos os aspectos relativos a seguranca do sistema, que foramapresentados no capıtulo anterior. Com isso nos concentraremos mais nos aspectosrelativos aos arquivos propriamente ditos, iniciando esse estudo pela definicao dasfuncoes do sistema de arquivos.

Uma ultima observacao e que varios dos conceitos examinados aqui podem sermapeados para os mecanismos de gerenciamento de memoria (proximo capıtulo),uma vez que este se ocupa tambem de controlar a localizacao e o acesso aos dadoscontidos na memoria.

37

Page 38: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

12.2 Funcoes

Como dito acima, as funcoes de um sistema de arquivos se concentram no controledos arquivos em disco. Dentro desse cenario as principais funcoes por ele desempe-nhadas sao:

1. Protecao

2. Mapeamento de nomes

3. Enderecamento

4. Seguranca

5. Contabilidade

Dessas funcoes examinaremos aqui as tres primeiras. A funcao de segurancafoi examinada no capıtulo anterior e faz, como foi visto, o servico de autenticacaode usuarios e de controle de permissoes.

Ja a funcao de contabilidade nao diz respeito especificamente aos arquivos.Ela e normalmente incluıda dentro do sistema de arquivos por nao se encaixar emnenhum outro modulo do SO e por ser mais facil executar os servicos de contabilidade(quem usou o sistema, por quanto tempo, fazendo o que, etc.) a partir dos arquivos(textos, aplicativos, comandos) acessados. Em geral os servicos de contabilidadeincluem a geracao de arquivos de registro (logs) sobre os eventos ocorridos no sistemae estao voltando a ter mais presenca com a introducao de ambientes de nuvem (cloudcomputing) e de hospedagem, em que se paga pelos recursos utilizados.

12.3 Protecao

O servico de protecao e muitas vezes confundido com o de seguranca. A principaldistincao a ser feita entre os dois e que seguranca se ocupa primordialmente de aces-sibilidade, enquanto protecao cuida de integridade (ou consistencia) dos arquivos.Com esse enfoque a protecao de arquivos em um sistema deve se preocupar comdois tipos de falha: aquela que corrompe grande parte dos arquivos (falha de disco)e aquela que corrompe um arquivo de forma individual (falha de gravacao).

Nas falhas de disco temos, normalmente, algum tipo de erro no disco em queo mesmo se torna ilegıvel. Problemas desse tipo ocorrem, em geral, por falhas deenergia eletrica, crashs de disco, etc. A solucao para os mesmos e o uso intensoe cuidadoso de backups, incluindo-se o armazenamento desses backups em locaisfisicamente distantes dos discos originais (evitando que se perca o disco e seu backupnum incendio, por exemplo).

Um sistema decente deve fornecer dois tipos de backup ao seu administrador,que sao os backups fısico e logico. No primeiro o backup e realizado copiando-sesequencialmente os bytes do disco, sem preocupacao com o conteudo de cada byte.No ultimo o backup e feito copiando-se arquivo por arquivo do disco. Com isso,o backup fısico e mais rapido mas forca que o sistema fique inativo enquanto eleestiver em andamento. Ja o backup logico e mais lento mas necessita apenas do

38

Page 39: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

bloqueio do arquivo sendo copiado durante o processo, permitindo que o restantedo sistema permaneca em atividade.

Independente do modo do backup e bastante importante que eles sejam progra-mados adequadamente. Embora o sistema de arquivos possa fornecer aplicativos querealizem essa operacao de modo automatico, cabe sempre ao administrador definira periodicidade em que ocorrem os backups e quais arquivos devem ser copiados acada vez. Isso permite que areas diferentes do disco tenham polıticas diferentes debackup, de acordo com a frequencia em que seus conteudos sao alterados.

Ja os problemas de falha de gravacao surgem quando um usuario esta salvandoum arquivo. Se no momento da gravacao ocorrer uma falha no sistema (falta deenergia, por exemplo), o arquivo provavelmente se tornara inconsistente pela perdade links entre suas diversas partes (blocos). Isto ocorre pois como o disco e divididoem trilhas e setores e um arquivo pode ter que ocupar diversas trilhas e muitossetores, e necessario saber a sequencia de setores ocupados. Essa sequencia e arma-zenada e gerenciada pelo sistema de arquivos, sendo que pode se tornar totalmenteinconsistente se uma falha ocorrer durante o processo de escrita do mesmo no disco.

Para diminuir (infelizmente nao da para eliminar) o risco de perda desse tipode informacao (trilhas e setores ocupados por um arquivo), usa-se tecnicas comoas paginas sombra (shadow pages), em que o salvamento de um arquivo em discopassa a ser feito em duas etapas. Na primeira criam-se as paginas sombra do quehavia sido anteriormente salvo em uma outra area do disco, juntando-se tambemas paginas novas do arquivo. Se essa fase terminar com sucesso entao passa-se amapear o arquivo para esse novo conjunto de paginas, eliminando-se sua versaoanterior. Desse modo, a unica possibilidade de perda de integridade e se a falhaocorrer durante o processo de mapear o arquivo para o novo conjunto de paginas.Em qualquer outro ponto do processo o prejuızo maximo e o de se perder o que foieditado apos a ultima operacao de salvamento do arquivo.

Finalmente, o ultimo problema de integridade de arquivos envolve o seu com-partilhamento de modo simultaneo. Essa situacao implica na existencia de diversascopias de um arquivo no sistema, o que exige cuidados para se garantir que todosos usuarios que o estejam acessando tenham copias atualizadas do mesmo e, ainda,que ao final do uso a copia resultante seja a realmente pretendida. Esse problemae ampliado em sistemas distribuıdos, quando podemos ter replicas de um mesmoarquivo espalhadas por varias maquinas.

12.4 Nomes e enderecos

Essas sao, sem duvida, as funcoes mais importantes prestadas pelo sistema de ar-quivos. Independentemente de haver controle de acesso ou garantia de integridadedos arquivos, e preciso localiza-los no disco. Isso e propiciado pelas funcoes demapeamento de nomes e de enderecamento.

12.4.1 Mapeamento de nomes

Consiste em identificar os arquivos de forma unica dentro de um disco, a partir dechamadas feitas pelos processos em execucao no sistema. Isso significa ter condicoes

39

Page 40: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

de diferenciar arquivos com mesmo nome que sejam de fato distintos (ou identificarum mesmo arquivo com nomes diferentes).

Parte desse trabalho e feito atraves da estruturacao de diretorios, que hoje emdia estao organizados na forma de arvores hierarquicas, com subdiretorios com per-missoes de acesso diferenciadas para cada usuario. Entao, quando um processosolicita um dado arquivo, o que se faz e buscar na estrutura de diretorios o arquivopedido (segundo algum caminho de busca pre-definido).

Outras formas de se organizar diretorios incluem diretorios planos (um unico raiz)e de usuarios (sem possibilidade de compartilhamento). Entretanto essas formas naosao mais usadas pois a estrutura em arvore e muito mais eficiente.

Uma outra tarefa do servico de nomes e permitir o compartilhamento de arqui-vos, ou mais precisamente, controlar a abertura de arquivos evitando que copiasdesnecessarias de um arquivo coexistam na memoria da maquina. Isso implica emverificar se o arquivo ja esta aberto no momento em que e solicitado (e com issomapear nomes a identificadores unicos desse arquivo) e controlar o seu fechamento,evitando que algum usuario perca o seu ponteiro para o arquivo.

12.4.2 Enderecamento

Trata de como os arquivos sao alocados (e localizados) ao longo do disco. Emgeral a tecnica para resolver esse problema e fazer com que a propria estrutura dediretorios possua algum tipo de mapeamento entre nomes e localizacao fısica nodisco. Isso e feito de forma diferente para cada sistema operacional, com vantagense desvantagens em cada uma delas.

Dentro desse enfoque, o primeiro obstaculo a ser resolvido e o de determinar comoos setores serao divididos. Como um arquivo pode nao caber em um unico setor, ea alocacao de um setor a um arquivo implica que todos os bytes do setor estariamreservados para esse arquivo (que pode nao ocupar nem 10% dele), e pratica comumdividir o setor em blocos (ou paginas) de tamanho fixo, alocando-se tais blocos aosarquivos.

Assim, ao armazenar um arquivo temos que, na realidade, armazenar tambemos enderecos dos blocos que ele ocupa (e a ordem desses blocos na sequencia logicado arquivo). O tamanho do bloco deve ser determinado de tal forma que nao sejagrande nem pequeno demais, pois blocos grandes desperdicam muito disco, apesarde serem mais faceis de gerenciar, e blocos pequenos dificultam o gerenciamento,apesar de ocuparem mais integralmente o disco. Tamanhos razoaveis, nos dias dehoje, vao de 1024 a 8192 bytes.

O segundo obstaculo e, entao, o mapeamento dos enderecos ocupados por umdado arquivo em disco. Como dito acima, isso e feito de maneira diferente em cadasistema.

No D.O.S. isso era feito atraves da FAT (File Allocation Table), que embora deimplementacao simples (a localizacao dos arquivos era feita por listas implementadaspor ındices de um vetor), era limitada e ineficiente para localizar paginas finais emarquivos grandes.

No UNIX isso e feito atraves da chamada I-list, que e uma lista cujos elementos(os I-nodes) ocupam, cada um, uma pagina do disco, independente de se referirema um arquivo comum ou a um diretorio. Nessa pagina aparecem os dados genericos

40

Page 41: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

do arquivo, tais como nome, data de criacao, alteracao, proprietario, permissoes deacesso, tamanho, etc. Tambem aparecem os enderecos das primeiras dez paginas doarquivo (ou dos primeiros dez i-nodes de arquivos de um diretorio). Para arquivosmaiores existem ainda outros tres enderecos, que funcionam em tres diferentes nıveisde indirecao, proporcionando o enderecamento rapido de ate 16 Gbytes num sistemacom paginas de 1024 bytes.

Ja as versoes mais recentes do Windows (a partir do XP) adotam esquemasintermediarios entre o D.O.S. e o UNIX, com varias das ideias presentes no UNIXmas ainda carregando o peso de ser compatıvel com a proposta da FAT. Neles adota-se o sistema NTFS, que e derivado do antigo Windows NT.

41

Page 42: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 13

Gerenciamento de Memoria

1. Introducao

2. Enderecamento

3. Alocacao

4. Memoria virtual

5. Desempenho

6. Visao global do sistema

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Modern Operating Systems, Tanenbaum, cap. 3

• Operating Systems Concepts, Peterson/Silberschatz, caps. 7 e 8

• Outros bons livros de sistemas operacionais, nos capıtulos sobre gerenciamentode memoria

13.1 Introducao

O gerenciamento de memoria, em conjunto com o gerenciamento de processos, formao que se pode chamar de coracao de um sistema operacional. Sua importanciareside fundamentalmente no fato do processador executar instrucoes trazidas damemoria, sobre dados trazidos da memoria e guardando resultados na memoria.Assim, passa a ser crucial o gerenciamento de como a memoria estara ocupada ecomo as informacoes nela serao reconhecidas pelo processador.

Isso se torna ainda mais crıtico se considerarmos que a memoria nao e apenas oconjunto de bytes disponıveis na chamada RAM do computador. Existem, na reali-dade, cinco diferentes nıveis de memoria, diferindo em tamanho, custo e velocidade,que sao:

1. Registradores internos da CPU

42

Page 43: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

2. Cache

3. Memoria principal

4. Memoria secundaria

5. Bibliotecas

O gerenciamento de memoria se ocupa da memoria principal e das suas interacoescom cache e memoria secundaria. O gerenciamento dos registradores e de boa parteda cache e feito pelo compilador, que ao gerar o executavel ja determina comoos registradores serao ocupados e como a cache pode ser ocupada para acelerar oprocessamento. Ja o gerenciamento das bibliotecas e feito pelo proprio usuario (ouadministrador) do sistema, enquanto boa parte do gerenciamento do disco e feitopelo sistema de arquivos, que foi o tema do capıtulo anterior.

Desse modo, o gerenciamento de memoria se ocupa fundamentalmente do con-trole de quais dados vao para a memoria, de que forma sao nela armazenados e comopodem ser acessados. Isso envolve atividades de enderecamento, em que se mapeiaenderecos de disco para enderecos de memoria, de alocacao, em que se determinaquais espacos serao ocupados por quem, e de memoria virtual, em que se ampliao conceito de memoria principal para um tamanho infinito. Trataremos cada umdesses pontos a seguir, fechando o capıtulo com um estudo de como caracterısticasde gerenciamento de memoria e processos influencia no desempenho de um sistema.

13.2 Enderecamento

O problema de enderecamento surge quando se percebe que os enderecos ocupadospor um programa no disco nao correspondem aos que ele ocupara na memoria.Isso fica ainda pior quando se examina o codigo do programa, em que apareceminstrucoes do tipo JMP 6000H (seis-zero-zero-zero em hexadecimal), em que apossicao 6000H se refere a um dado deslocamento a partir da origem do programa,que possivelmente nao se refere ao endereco 6000H da memoria. Esses diferentesconjuntos de enderecos recebem os nomes de espacos de enderecos logicos, no disco, eenderecos fısicos, na memoria. O problema de enderecamento passa a ser, portanto,determinar uma estrategia de conversao entre enderecos logicos e enderecos fısicos.Essa transformacao deve ser feita de forma que a execucao do programa seja efetivadacom sucesso ao carregar-se o mesmo na memoria. As estrategias para efetuar essemapeamento sao:

1. Enderecamento Absoluto, em que os enderecos fısicos sao absolutamenteiguais aos enderecos logicos;

2. Relocacao Estatica, em que os enderecos logicos sao transformados em en-derecos fısicos, recalculados a partir da diferenca entre as origens do programaem disco e na memoria, no instante do carregamento do programa;

3. Relocacao Dinamica, que faz o calculo do endereco fısico apenas no mo-mento da execucao de cada instrucao, a partir do conteudo de um registradorespecial (originalmente chamado de fence register);

43

Page 44: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

4. Segmentacao, que nada mais e do que o uso de relocacao dinamica aplicadoao conceito de se dividir o programa em partes menores, como codigo, dados,etc.

13.3 Alocacao

Tendo definido o metodo de conversao entre enderecos logicos e fısicos, e precisotratar algo que ocorre momentos antes de se carregar um arquivo ou programana memoria (observem que daqui por diante chamaremos programas e arquivosindistintamente como sendo segmentos). Para que se saiba o endereco base deum segmento e preciso que se defina em que lugar da memoria ele sera alocado.Essa alocacao deve ocorrer sob regras bastante bem definidas para que nao ocorramproblemas de interferencia entre os processos. Existem duas estruturas basicas dealocacao de memoria, que sao em espacos contıguos e em blocos, descritas aseguir:

13.3.1 Espacos contıguos

A alocacao de memoria em espacos contıguos e o modelo mais simples de alocacao,em que para o segmento ir para a memoria ele deve caber inteiro em um unico trechocontınuo, com todos os seus bytes alocados de modo consecutivo. Embora simplesesse modelo de alocacao tras diversos inconvenientes, como fragmentacao externa,necessidade de recompactacao, mapeamento complexo e dificuldade na escolha doespaco livre a ser ocupado. Como se pode observar, a alocacao em espacos contıguostras mais problemas do que vantagens.

Algumas solucoes tentadas para corrigir seus problemas envolvem a alocacao emsegmentos de tamanho fixo e segmentos de tamanho fixo reconfiguraveis (sistemasbuddy). Infelizmente, apesar de tais modificacoes terem facilitado o gerenciamento,elas nao eliminaram a fragmentacao externa e ainda criaram a fragmentacao interna.

13.3.2 Blocos

A solucao para o problema de fragmentacao veio com a organizacao de espacosusada em discos. Ao dividir-se a memoria em blocos de tamanho fixo, e permitir-se que um segmento seja quebrado em varios blocos, eliminou-se definitivamente afragmentacao externa, uma vez que um segmento apenas deixaria de ser carregadopara a memoria caso esta nao tivesse blocos livres suficientes para o segmento (esseproblema foi resolvido posteriormente com a introducao de paginacao e memoriavirtual).

Dentro dessa estrategia um segmento e dividido entre varias paginas, cada umapodendo ser alocada nos espacos livres de memoria disponıveis no momento daalocacao, independentemente de serem proximos ou nao. Nesse esquema a frag-mentacao externa deixa de existir e a interna fica limitada ao tamanho de umapagina. O problema nessa estrategia e calcular o endereco fısico correspondente aum endereco logico qualquer e evitar que se facam muitos acessos a memoria embusca de um unico dado. Isso e resolvido de modo eficiente por uma forma rapida

44

Page 45: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

para transformacao de enderecos logicos em fısicos e o uso do nıvel de memoria cachepara acelerar os acessos, como descrito a seguir:

• Calculo de endereco:Dado um endereco logico qualquer, seu endereco fısico correspondente e deter-minado dividindo-o pelo tamanho da pagina, resultando em um numero inteiro(o quociente) correspondente ao numero da pagina e outro inteiro (o resto) cor-respondente ao deslocamento em bytes dentro da pagina. O problema nesseprocesso e que para acessar o conteudo do endereco fısico correspondente aodado endereco logico temos que fazer tres acessos a memoria (um para loca-lizar a tabela de paginas, outro para localizar a pagina especıfica e o terceiropara acessar o endereco desejado), o que tomaria muito tempo.

• Otimizacao de acesso:O problema de tres acessos pode ser substancialmente reduzido se fizermos usode memorias cache (ou memorias associativas), em que parte das informacoesnecessarias estariam disponıveis em cache.

O uso de memoria alocada em blocos melhora significativamente o desempenhoda memoria. Entretanto ela nao resolve a restricao de que se um segmento ocu-par mais paginas do que as que estao livres, entao ele nao pode ser colocado paraexecutar.

Entretanto essa restricao e desnecessaria, uma vez que se sabe que durante aexecucao de um programa ele nao precisa acessar todas as suas instrucoes e todos osseus dados ao mesmo tempo. Entao, se for possıvel deixar na memoria apenas aquiloque esta sendo necessario num dado instante, poderemos usar melhor os espacosdisponıveis. Isso e feito atraves do mecanismo de memoria virtual, examinado aseguir.

13.4 Memoria Virtual

A solucao para a alocacao de segmentos maiores do que o espaco disponıvel namemoria (ou ate mesmo maior que ela toda) veio com um dos conceitos mais im-portantes de otimizacao de programas e sistemas, que e o Princıpio da Locali-dade. Este princıpio diz que os enderecos de memoria nao tem probabilidade igualde acesso, sendo mais provavel que apos executar uma instrucao da pagina x, queacesse um dado da pagina y, e muito mais provavel que a proxima instrucao tambemesteja na pagina x e tambem acesse dados na pagina y.

Desse modo, se um segmento ocupa muitas paginas, seria possıvel dizer quese estamos acessando um certo numero delas num dado instante, entao nos man-terıamos acessando-as por mais algum tempo, nao necessitando portanto que asdemais paginas estivessem na memoria.

Esse e o princıpio de memoria virtual. Seu funcionamento ocorre atraves depaginacao por demanda, isto e, uma pagina vai para a memoria apenas no momentoem que e requisitada por um processo. O problema passa a ser, entao, o que fazer senao houver mais paginas livres na memoria. A solucao e escolher uma das paginasalocadas para sair da memoria, liberando portanto seu espaco. Essa operacao e

45

Page 46: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

conhecida como swapping, em que se faz o swap-out de uma pagina (a escolhidapara sair) e o swap-in de outra (a demandada).

Antes de discutirmos o funcionamento de memoria virtual precisamos definiralguns termos importantes para fazer a analise dos varios algoritmos de escalona-mento. Esses termos sao:

• Falta de pagina, que e o evento que ocorre quando se precisa acessar umendereco de uma pagina que nao esta na memoria;

• Conjunto residente, que e o conjunto das paginas que estao na memoria emum dado instante;

• Tamanho do conjunto residente, e o numero de paginas ocupadas (pelo sistemaou segmento) num dado momento;

• Sequencia de referencia, que e uma sequencia de paginas que deverao ser aces-sadas pelo sistema ao longo do tempo;

• Anomalia de Belady, que e o indesejavel fenomeno de ocorrer aumento nonumero de faltas de pagina ao se aumentar o tamanho conjunto residente.

Todo o processo de memoria virtual passa a ser o gerenciamento de operacoesde swapping, procurando obter o melhor resultado possıvel a partir do princıpio dalocalidade. Existem diversos algoritmos propostos para fazer essa escolha, dentre osquais temos :

1. FIFO, que escolhe para sair a pagina que entrou na memoria ha mais tempoe esta sujeito a anomalia de Belady.

2. LRU, que e um algoritmo de pilha em que o criterio de escolha da pagina indicaque a pagina excluıda sera aquela que nao e referenciada ha mais tempo.

3. Optimal, tambem e um algoritmo de pilha, mas escolhe para sair a paginaque levara mais tempo para ser novamente necessaria.

4. Clock-FINUFO, que faz uma implementacao simplificada do LRU, tomandopor base valores aproximados dos reais quanto ao ultimo acesso a pagina.

5. Segunda chance, que e similar ao FINUFO, porem a pagina escolhida parasair teria que ter os bits de acesso e de modificacao zerados.

Alem desses algoritmos diversos outros foram propostos. Alguns trabalhandocom o conceito de que cada processo teria numero fixo de paginas, quando a paginaa ser retirada seria sempre do processo que precisa de uma nova pagina. Outroscom o conceito de tempo fixo entre faltas de paginas, em que o numero de paginasde cada processo e variado para que o intervalo entre duas faltas consecutivas sejamantido constante.

46

Page 47: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

13.5 Desempenho

O uso de memoria virtual permite que mais segmentos sejam carregados na memoriapor vez, o que permite um aumento no numero de processos executando. A partirdisso e interessante perceber algumas situacoes que afetam o desempenho do sistema.Antes porem e preciso definir alguns conceitos basicos:

• Nıvel de multiprocessamento - indica o numero de processos executando nosistema

• Taxa de falta de paginas - indica o numero de faltas de paginas ocorridas nosistema

• Ocupacao da CPU - indica a porcentagem de tempo em que a CPU estaexecutando processos de usuarios

Considerando esses aspectos, temos que:

• Quanto mais processos executando melhor o nıvel de ocupacao da CPU, umavez que quando um processo e interrompido para fazer E/S ou por bloqueio,temos varios outros para assumir seu lugar na CPU;

• Quanto mais processos executando mais falhas de paginas temos, uma vez quecada processo passa a ocupar menos paginas e, com isso, passa a ser maisprovavel que uma pagina requisitada nao esteja na memoria;

• Um numero elevado de processos executando acaba tendo um pessimo nıvelde ocupacao da CPU, apesar de com o crescimento do numero de processosteriamos uma maior ocupacao, mas com muitos processos e possıvel que to-dos tenham tao poucas paginas que ficam o tempo todo causando falta depaginas e, com isso, nao podem ocupar a CPU. Essa situacao recebe o nomede thrashing.

Assim, temos algumas diretrizes para avaliar o desempenho de um sistema. Bastaverificar taxas de ocupacao da CPU, numero de faltas de paginas (ou por quantotempo o sistema fica ocupado realizando paginacao), taxa de ocupacao dos disposi-tivos de E/S, etc.

Com essas medidas em maos um analista pode sugerir mudancas no sistema,como aumento de memoria, troca de dispositivos de E/S, troca de mecanismos decaching (preenchimento da cache com dados), entre outras.

O importante aqui e lembrar sempre que uma analise cuidadosa do sistema,levando em consideracao todas as variaveis possıveis e as diretrizes anteriormenteindicadas, e uma tarefa que se bem executada resulta em ganhos consideraveis aosistema e ao seu financiador, devendo portanto ser uma tarefa bastante bem remu-nerada.

13.6 Visao global do sistema

Agora que terminamos a analise individual de cada um dos mecanismos do SOpodemos ter fazer uma avaliacao de seu funcionamento global. Tomaremos comoexemplo a ocorrencia de uma falta de pagina e das acoes decorrentes dela.

47

Page 48: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Na ocorrencia de uma falta de pagina, identificada pelo gerenciamento de memoria,e necessario:

• ativar acoes do gerenciamento de processos, para bloqueio do processo quegerou a falta;

• ativar acoes do gerenciamento de memoria para definicao de qual pagina sairada memoria, ja marcando-a como fora da memoria para evitar acessos incor-retos;

• ativar acoes do sistema de arquivos para a localizacao das paginas envolvidasno swapping;

• ativar acoes do gerenciamento de disco para realizar fisicamente o swapping;

• ativar, quando necessario, os mesmos mecanismos quando da conclusao dasacoes disparadas.

Disso percebe-se que existe muita interacao entre os varios mecanismos do SO,o que apenas e possıvel de ser feito eficientemente se forem implementados modu-larmente, na forma de threads, por exemplo.

48

Page 49: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Capıtulo 14

Sistemas Distribuıdos

1. Introducao

2. Caracterısticas

3. Paralelismo

4. Transparencia

5. Gerenciamento

6. Aplicacoes

Os topicos a serem examinados podem ser encontrados nos seguintes capıtulosde livros:

• Modern Operating Systems, Tanenbaum, cap. 9 em diante

• Operating Systems Concepts, Peterson/Silberschatz, caps. 12, 13 e 14

• Outros bons livros de sistemas operacionais, nos capıtulos sobre sistemas dis-tribuıdos

14.1 Introducao

Para fechar o conteudo dessa disciplina temos que voltar as suas origens, ou seja,computacao de alto desempenho e baixo custo. Como foi dito no inıcio, isso podeser obtido com o uso de sistemas distribuıdos, que nada mais sao do que conjuntosde maquinas operando em rede. Daquela definicao passamos, durante o semestre,ao estudo dos dois componentes basicos desses sistemas, que sao as redes de com-putadores e os sistemas operacionais.

Nesse capıtulo examinaremos como usar esses componentes em conjunto paraobter um sistema distribuıdo. Isso implica em examinar como os mecanismos degerenciamento de um sistema operacional devem ser modificados se o seu objeto degerenciamento envolver uma rede de computadores. Pela sua complexidade, o estudodetalhado deste topico fica para o curso de Projeto de Sistemas Operacionais,bastando nesse momento uma revisao rapida desses sistemas.

49

Page 50: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

14.2 Caracterısticas

Um sistema distribuıdo e mais do que uma rede com servidores espalhados pelamesma (como algumas vezes e dito). Ele envolve certas caracterısticas que naoaparecem numa rede comum, como:

1. Transparencia, que e a caracterıstica de livrar o usuario de qualquer conheci-mento sobre como o ambiente executa suas tarefas;

2. Processamento paralelo, que e a capacidade do sistema em oferecer multipro-cessamento efetivo caso o usuario necessite (o que e o necessario para com-putacao de alto desempenho), possivelmente sem o conhecimento do usuariosobre isso.

14.3 Paralelismo

O paralelismo num S.D. e dito de grao largo ou, mais precisamente, fracamenteacoplado. Isso significa que o acoplamento (pontos de troca de informacao) entre osprocessos e reduzido. Essa caracterıstica vem como consequencia de o processo detroca de informacoes na rede ser bastante lento, sendo no maximo 100 Mbits/s emEthernet comum, ou 320ns por palavra (considerando atraso zero no protocolo derede e que seja possıvel transmitir apenas 4 bytes, o que e claramente um absurdo),contra 30ns no acesso a uma palavra na memoria.

Essa lentidao faz com que se evite ao maximo a troca de informacoes entreprocessos, ou como se diz, que o grao de execucao sequencial seja mais largo.

Tecnicas de como realizar o processamento paralelo se agrupam em modelosmestre-escravo, bag-of-tasks e interacting-peers, sendo que sua programacao envolvebasicamente a construcao de processos que interagem por mecanismos de exclusaomutua e sincronismo. O estudo detalhado desses mecanismos e feito no curso deProgramacao Concorrente.

14.4 Transparencia

O conceito de transparencia e o mais importante em um sistema distribuıdo. Comodito ha pouco, transparencia implica em o usuario nao precisar saber como o sistematrabalha, o que, num sistema distribuıdo, resulta em varios tipos de transparencia,como por exemplo:

1. execucao, quando o usuario nao sabe em que maquina o seu programa estaexecutando. Isso ocorre gracas ao conceito de migracao de processos, em queo sistema move programas (e/ou dados) de uma maquina para outra tentandoobter um melhor balanceamento de carga, desempenho, ou mesmo a viabi-lizacao de execucao (por falta de recursos locais);

2. acesso, em que o usuario acessa o sistema de forma equivalente, independen-temente do ponto em que esteja fazendo isso;

50

Page 51: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

3. paralelismo, quando o proprio sistema decide sobre a conveniencia ou nao dese paralelizar a execucao de uma tarefa.

14.5 Gerenciamento

Um sistema distribuıdo apresenta restricoes ao seu gerenciamento que nao estaopresentes num sistema operacional convencional. Como mencionado, o estudo maisdetalhado de um S.O.D. ocorrera em Projeto de Sistemas Operacionais. Entre-tanto, precisamos indicar aqui algumas dessas restricoes, separadas por modulos degerenciamento:

1. Gerenciamento de processos - precisa levar em consideracao o fato de que osprocessos por ele controlados estao em maquinas distintas, exigindo mecanis-mos mais complexos para o controle de exclusao mutua e sincronismo (pelaimpossibilidade de uso de memoria compartilhada), alem de mecanismos parabalanceamento de carga entre as maquinas e migracao de tarefas;

2. Gerenciamento de memoria - precisa cuidar do fato de termos a possibilidadede compartilhamento de informacoes entre memorias distintas, o que dificultaenormemente o gerenciamento das caches distribuıdas, apenas para citar umacomplicacao;

3. Gerenciamento de E/S - que nao e muito diferente do convencional, pois epossıvel imaginar a rede (e tudo que e acessıvel atraves dela) como um disposi-tivo de E/S. O unico problema e controlar dispositivos diretamente conectadosa rede (impressoras com placas de rede, por exemplo), mas mesmo esse e desimples solucao;

4. Sistema de arquivos - como agora envolvem arquivos em varias maquinas, te-mos problemas na localizacao desses arquivos e na manutencao de sua con-sistencia se houverem multiplas copias (replicas) do mesmo.

14.6 Aplicacoes

Alem das aplicacoes tradicionais de alto desempenho, sistemas distribuıdos podemser (e sao) usados em sistemas de bancos de dados (os chamados SBDD), de au-tomacao e controle (tempo-real e redes de sensores), imagens, etc.

Nao examinaremos tais aplicacoes aqui, mas e importante mencionar que o usode SBDD, STRD, etc., tem aumentado significativamente nos ultimos anos, especi-almente com a introducao macica de clusters de estacoes e arquiteturas dedicadas(Beowulf, por exemplo), alem de grades e cloud computing, o que indica que o mer-cado de trabalho para profissionais com esse tipo de conhecimento (e esses sao raros)deve aumentar bastante.

Dentro da enfase de sistemas de computacao esse conhecimento vem dos cur-sos de Projeto de Sistemas Operacionais, em que se examina como gerenciarum S.O.D.; Redes de Computadores, que examina os detalhes de um proto-colo de redes e seu projeto e gerenciamento; Arquiteturas e Organizacao de

51

Page 52: Fundamentos em Sistemas de Computa˘c~aoaleardo/cursos/fsc/completo.pdf · Partindo desse ponto de vista ca claro que os sistemas de computa˘c~ao englobam sistemas que permitem fazer

Computadores, em que sao vistos os aspectos organizacionais de uma maquina(convencional ou nao-convencional) e como ela pode ser usada mais eficientemente;e Programacao Concorrente, com o estudo de tecnicas de construcao de progra-mas paralelos e cooperativos.

Outros cursos, como os de Sistemas de Tempo-Real, com o exame das ca-racterısticas necessarias ao controle de processos que demandem execucao sob res-tricoes de tempo; Modelagem de Sistemas, em que se estudam tecnicas para aconstrucao de um modelo computacional para um sistema real; e Tecnicas de Si-mulacao, que trata do estudo de como modelos podem ser simulados para a analisee projeto de sistemas, sao considerados acessorios ao corpo central da enfase, masigualmente importantes para a formacao mais completa do profissional de sistemasde computacao.

52