Vous êtes sur la page 1sur 95

Faculdades So Jos

Tecnologia de Sistemas de Informao

Sistemas Operacionais Prof. Sandro Melo

Sistemas Operacionais

Gerncia de Memria
Introduo 1 Estruturas de memria 2 Endereos, variveis e funes 3 Estratgias de alocao 4 Fragmentao 5 Compartilhamento de memria 6 Localidade de referncias 7 Memria virtual
2

Sistemas Operacionais

Introduo
A memria principal um componente fundamental em qualquer sistema de computao. Ela constitui o espao de trabalho do sistema, no qual so mantidos os processos, threads, bibliotecas compartilhadas e canais de comunicao, alm do prprio ncleo do sistema operacional, com seu cdigo e suas estruturas de dados. O hardware de memria pode ser bastante complexo, envolvendo diversas estruturas, como caches, unidade de gerncia, etc, o que exige um esforo de gerncia significativo por parte do sistema operacional. Uma gerncia adequada da memria essencial para o bom desempenho de um computador. Neste captulo sero estudados os elementos de hardware que compe a memria de um sistema computacional e os mecanismos implementados ou controlados pelo sistema operacional para a gerncia da memria. 3

Sistemas Operacionais
1 Estruturas de memria
Existem diversos tipos de memria em um sistema de computao, cada um com suas prprias caractersticas e particularidades, mas todos com um mesmo objetivo: armazenar dados. Observando um sistema computacional tpico, pode-se identificar vrios locais onde dados so armazenados: os registradores e o cache interno do processador (denominado cache L1), o cache externo da placa-me (cache L2) e a memria principal (RAM). Alm disso, discos rgidos e unidades de armazenamento externas (pendrives, CD-ROMs, DVD-ROMs, fitas magnticas, etc) tambm podem ser considerados memria em um sentido mais amplo, pois tambm tm como funo o armazenamento de dados.

Sistemas Operacionais
1 Estruturas de memria
Esses componentes de hardware so construdos usando diversas tecnologias e por isso tm caractersticas distintas, como a capacidade de armazenamento, a velocidade de operao, o consumo de energia e o custo por byte armazenado. Essas caractersticas permitem definir uma hierarquia de memria, representada na forma de uma pirmide (figura 1).

Sistemas Operacionais
1 Estruturas de memria
Nessa pirmide, observa-se que memrias mais rpidas, como os registradores da CPU e os caches, so menores (tm menor capacidade de armazenamento), mais caras e consomem mais energia que memrias mais lentas, como a memria principal (RAM) e os discos rgidos. Alm disso, as memrias mais rpidas so volteis, ou seja, perdem seu contedo ao ficarem sem energia. Memrias que preservam seu contedo mesmo quando no tiverem energia so denominadas no-volteis. Outra caracterstica importante das memrias a rapidez de seu funcionamento, que pode ser detalhada em duas dimenses: tempo de acesso (ou latncia) e taxa de transferncia.

Sistemas Operacionais
1 Estruturas de memria
O tempo de acesso caracteriza o tempo necessrio para iniciar uma transferncia de dados de/para um determinado meio de armazenamento. Por sua vez, a taxa de transferncia indica quantos bytes por segundo podem ser lidos/escritos naquele meio, uma vez iniciada a transferncia de dados.

Sistemas Operacionais
1 Estruturas de memria
A tabela 1 traz valores de tempo de acesso e taxa de transferncia de alguns meios de armazenamento usuais.

Sistemas Operacionais
2 Endereos, variveis e funes
Ao escrever um programa usando uma linguagem de alto nvel, como C, C++ ou Java, o programador usa apenas referncias a entidades abstratas, como variveis, funes, parmetros e valores de retorno. No h necessidade do programador definir ou manipular endereos de memria explicitamente. Todavia, o processador do computador acessa endereos de memria para buscar as instrues a executar e seus operandos; acessa tambm outros endereos de memria para escrever os resultados do processamento das instrues. Por isso, quando um programa for compilado, ligado a bibliotecas, carregado na memria e executado pelo processador, cada varivel ou trecho de cdigo definido pelo programador dever ocupar um espao especfico e exclusivo na memria, com seus prprios endereos.
9

Sistemas Operacionais
2 Endereos, variveis e funes
Dessa forma, os endereos das variveis e trechos de cdigo usados por um programa devem ser definidos em algum momento entre a escrita do cdigo e sua execuo pelo processador, que pode ser: Durante a edio Durante a compilao Durante a ligao Durante a carga Durante a execuo

10

Sistemas Operacionais
2 Endereos, variveis e funes
Durante a edio : O programador escolhe a posio de cada uma das variveis e do cdigo do programa na memria. Esta abordagem normalmente s usada na programao de sistemas embarcados simples, programados diretamente em linguagem de mquina.

11

Sistemas Operacionais
2 Endereos, variveis e funes
Durante a compilao : o compilador escolhe as posies das variveis na memria. Para isso, todos os cdigos-fonte que fazem parte do programa devem ser conhecidos no momento da compilao, para evitar conflitos de endereos entre variveis. Uma outra tcnica bastante usada a gerao de cdigo independente de posio (PIC - Position-Independent Code), no qual todas as referncias a variveis so feitas usando endereos relativos (como 3.471 bytes aps o incio do mdulo, ou 15 bytes aps o program counter, por exemplo).

12

Sistemas Operacionais
2 Endereos, variveis e funes
Durante a ligao : o compilador gera smbolos que representam as variveis mas no define seus endereos finais, gerando um arquivo que contm as instrues em linguagem de mquina e as definies das variveis utilizadas, denominado arquivo objeto1. Os arquivos com extenso .o em UNIX ou .obj em Windows so exemplos de arquivos-objeto obtidos da compilao de arquivos em C ou outra linguagem de alto nvel. O ligador (ou link-editor) ento l todos os arquivos objeto e as bibliotecas e gera um arquivo-objeto executvel, no qual os endereos de todas as variveis esto corretamente definidos.

13

Sistemas Operacionais
2 Endereos, variveis e funes
Durante a carga : tambm possvel definir os endereos de variveis e de funes durante a carga do cdigo em memria para o lanamento de um novo processo. Nesse caso, um carregador (loader) responsvel por carregar o cdigo do processo na memria e definir os endereos de memria que devem ser utilizados. O carregador pode ser parte do ncleo do sistema operacional ou uma biblioteca ligada ao executvel, ou ambos. Esse mecanismo normalmente usado na carga das bibliotecas dinmicas (DLL - Dynamic Linking Libraries).

14

Sistemas Operacionais
2 Endereos, variveis e funes
Durante a execuo: os endereos emitidos pelo processador durante a execuo do processo so analisados e convertidos nos endereos efetivos a serem acessados na memria real. Por exigir a anlise e a converso de cada endereo gerado pelo processador, este mtodo s vivel com o uso de hardware dedicado para esse tratamento. Esta a abordagem usada na maioria dos sistemas computacionais atuais (como os computadores pessoais), e ser descrita nas prximas sees.

15

Sistemas Operacionais
2 Endereos, variveis e funes
A figura 2 ilustra os diferentes momentos da vida de um processo em que pode ocorrer a resoluo dos endereos de variveis e de cdigo.

16

Sistemas Operacionais
2.1 Endereos lgicos e fsicos
Ao executar uma seqncia de instrues, o processador escreve endereos no barramento de endereos do computador, que servem para buscar instrues e operandos, mas tambm para ler e escrever valores em posies de memria e portas de entrada/sada. Os endereos de memria gerados pelo processador medida em que executa algum cdigo so chamados de endereos lgicos, porque correspondem lgica do programa, mas no so necessariamente iguais aos endereos reais das instrues e variveis na memria real do computador, que so chamados de endereos fsicos.

17

Sistemas Operacionais
2.1 Endereos lgicos e fsicos
Os endereos lgicos emitidos pelo processador so interceptados por um hardware especial denominado Unidade de Gerncia de Memria (MMUMemory Management Unit), que pode fazer parte do prprio processador (como ocorre nos sistemas atuais) ou constituir um dispositivo separado (como ocorria na mquinas mais antigas). A MMU faz a anlise dos endereos lgicos emitidos pelo processador e determina os endereos fsicos correspondentes na memria da mquina, permitindo ento seu acesso pelo processador. Caso o acesso a um determinado endereo solicitado pelo processador no seja possvel, a MMU gera uma interrupo de hardware para notificar o processador sobre a tentativa de acesso indevido. O funcionamento bsico da MMU est ilustrado na figura 3.
18

Sistemas Operacionais
2.1 Endereos lgicos e fsicos

19

Sistemas Operacionais
3 Estratgias de alocao
Em um sistema mono-processo, em que apenas um processo por vez carregado em memria para execuo, a alocao da memria principal um problema simples de resolver: basta reservar uma rea de memria para o ncleo do sistema operacional e alocar o processo na memria restante, respeitando a disposio de suas reas internas, conforme apresentado na figura 4.

20

Sistemas Operacionais
3 Estratgias de alocao
Nos sistemas multi-processos, vrios processos podem ser carregados na memria para execuo simultnea. Nesse caso, o espao de memria destinado aos processos deve ser dividido entre eles usando uma estratgia que permita eficincia e flexibilidade de uso. As principais estratgias de alocao da memria fsica so: 3.1 Parties fixas 3.2 Alocao contgua 3.3 Alocao por segmentos 3.4 Alocao paginada 3.5 Alocao segmentada paginada
21

Sistemas Operacionais
3 Estratgias de alocao
3.1 Parties fixas A forma mais simples de alocao de memria consiste em dividir a memria destinada aos processos em N parties fixas, de tamanhos iguais ou distintos. Em cada partio pode ser carregado um processo. Nesse esquema, a traduo entre os endereos lgicos vistos pelos processos e os endereos fsicos feita atravs de um simples registrador de relocao, cujo valor somado ao endereo lgico gerado pelo processador, a fim de obter o endereo fsico correspondente. Endereos lgicos maiores que o tamanho da partio em uso so simplesmente rejeitados pela MMU. O exemplo da figura 6 ilustra essa estratgia.
22

Sistemas Operacionais
3 Estratgias de alocao
3.1 Parties fixas O exemplo da figura 6 ilustra essa estratgia.

23

Sistemas Operacionais
3 Estratgias de alocao
3.1 Parties fixas Essa abordagem extremamente simples, todavia sua simplicidade no compensa suas vrias desvantagens: Os processos podem ter tamanhos distintos dos tamanhos das parties, o que implica em reas de memria sem uso no final de cada partio. O nmero mximo de processos na memria limitado ao nmero de parties, mesmo que os processos sejam pequenos. Processos maiores que o tamanho da maior partio no podero ser carregados na memria, mesmo se todas as parties estiverem livres. Por essas razes, esta estratgia de alocao pouco usada atualmente; ela foi muito usada no OS/360, um sistema operacional da IBM usado nas dcadas de 1960-70.
24

Sistemas Operacionais
3 Estratgias de alocao
3.2 Alocao contgua A estratgia anterior, com parties fixas, pode ser tornar bem mais flexvel caso o tamanho de cada partio possa ser ajustado para se adequar demanda especfica de cada processo. Nesse caso, a MMU deve ser projetada para trabalhar com dois registradores prprios: registrador base, que define o endereo inicial da partio ativa, registrador limite, que define o tamanho em bytes dessa partio.

25

Sistemas Operacionais
3 Estratgias de alocao
3.2 Alocao contgua O algoritmo de traduo de endereos lgicos em fsicos bem simples: cada endereo lgico gerado pelo processo em execuo comparado ao valor do registrador limite; caso seja maior ou igual a este, uma interrupo gerada pela MMU de volta para o processador, indicando um endereo invlido. Caso contrrio, o endereo lgico somado ao valor do registrador base, para a obteno do endereo fsico correspondente. A figura 7 apresenta uma viso geral dessa estratgia.

26

Sistemas Operacionais
3 Estratgias de alocao
3.2 Alocao contgua A figura 7 apresenta uma viso geral dessa estratgia.

27

Sistemas Operacionais
3 Estratgias de alocao
3.2 Alocao contgua A maior vantagem da estratgia de alocao contgua sua simplicidade: por depender apenas de dois registradores e de uma lgica simples para a traduo de endereos, pode ser implementada em hardware de baixo custo, ou mesmo incorporada a processadores mais simples. Todavia, uma estratgia pouco flexvel e est muito sujeita fragmentao externa, conforme ser discutido na seo 4.

28

Sistemas Operacionais
3 Estratgias de alocao
3.3 Alocao por segmentos A alocao por segmentos, ou alocao segmentada, uma extenso da alocao contgua, na qual o espao de memria de um processo fracionado em reas, ou segmentos, que podem ser alocados separadamente na memria fsica. Podem ser definidos segmentos para tens especficos, como bibliotecas compartilhadas, vetores, matrizes, pilhas de threads, buffers de entrada/sada, etc. Ao estruturar a memria em segmentos, o espao de memria de cada processo no mais visto como uma seqncia linear de endereos lgicos,mas como uma coleo de segmentos de tamanhos diversos e polticas de acesso distintas.
29

Sistemas Operacionais
3 Estratgias de alocao
3.3 Alocao por segmentos A figura 8 apresenta a viso lgica da memria de um processo e a sua forma de mapeamento para a memria fsica.

30

Sistemas Operacionais
3 Estratgias de alocao
3.3 Alocao por segmentos No modelo de memria alocada por segmentos, os endereos gerados pelos processos devem indicar as posies de memria e os segmentos onde elas se encontram. Em outras palavras, este modelo usa endereos lgicos bidimensionais, compostos por pares [segmento:offset], onde segmento indica o nmero do segmento desejado e offset indica a posio desejada dentro do segmento. Os valores de offset variam de 0 (zero) ao tamanho do segmento.

31

Sistemas Operacionais
3 Estratgias de alocao
3.3 Alocao por segmentos A figura 9 mostra alguns exemplos de endereos lgicos usando alocao por segmentos.

32

Sistemas Operacionais
3 Estratgias de alocao
3.3 Alocao por segmentos Na alocao de memria por segmentos, a forma de traduo de endereos lgicos em fsicos similar da alocao contgua. Contudo, como os segmentos podem ter tamanhos distintos e ser alocados separadamente na memria fsica, cada segmento ter seus prprios valores de base e limite, o que leva necessidade de definir uma tabela de segmentos para cada processo do sistema. Essa tabela contm os valores de base e limite para cada segmento usado pelo processo, alm de flags com informaes sobre cada segmento, como permisses de acesso, etc.

33

Sistemas Operacionais
3 Estratgias de alocao
3.3 Alocao por segmentos Afigura 10 apresenta os principais elementos envolvidos na traduo de endereos lgicos em fsicos usando memria alocada por segmentos.

34

Sistemas Operacionais
3 Estratgias de alocao
3.3 Alocao por segmentos Cabe ao compilador colocar os diversos trecho do cdigo-fonte de cada programa em segmentos separados. Ele pode, por exemplo, colocar cada vetor ou matriz em um segmento prprio. Dessa forma, erros freqentes como acessos a ndices alm do tamanho de um vetor iro gerar endereos fora do respectivo segmento, que sero detectados pelo hardware de gerncia de memria e notificados ao sistema operacional.

35

Sistemas Operacionais
3 Estratgias de alocao
3.4 Alocao paginada A alocao de memria por segmentos exige o uso de endereos bidimensionais na forma [segmento:offset], o que pouco intuitivo para o programador e torna mais complexa a construo de compiladores. Alm disso, uma forma de alocao bastante suscetvel fragmentao externa. Essas deficincias levaram os projetistas de hardware a desenvolver outras tcnicas para a alocao da memria principal. alocao paginada

36

Sistemas Operacionais
3 Estratgias de alocao
3.4 Alocao paginada Na alocao de memria por pginas, ou alocao paginada, o espao de endereamento lgico dos processos mantido linear e unidimensional (ao contrrio da alocao por segmentos, que usa endereos bidimensionais). Internamente, e de forma transparente para os processos, o espao de endereos lgicos dividido em pequenos blocos de mesmo tamanho, denominados pginas. Nas arquiteturas atuais, as pginas geralmente tm 4Kbytes (4.096 bytes),mas podem ser encontradas arquiteturas com pginas de outros tamanhos. O espao de memria fsica destinado aos processos tambm dividido em blocos de mesmo tamanho que as pginas, denominados quadros (do 37 ingls frames).

Sistemas Operacionais
3 Estratgias de alocao
3.4 Alocao paginada A alocao dos processos na memria fsica ento feita simplesmente indicando a que quadro cada pgina de cada processo corresponde, conforme ilustra a figura 11.

38

Sistemas Operacionais
3 Estratgias de alocao
3.4 Alocao paginada importante observar que as pginas de um processo podem estar em qualquer posio da memria fsica disponvel aos processos, ou seja, podem estar associados a quaisquer quadros, o que permite uma grande flexibilidade de alocao. Alm disso, as pginas no usadas pelo processo no precisam estar mapeadas, o que proporciona eficincia no uso da memria fsica.

39

Sistemas Operacionais
3 Estratgias de alocao
3.4 Alocao paginada A associao entre as pginas de um processo e os quadros correspondentes na memria fsica feita atravs de uma tabela de pginas (page table), na qual cada entrada corresponde a uma pgina e contm o nmero do quadro correspondente. Cada processo possui sua prpria tabela de pginas; a tabela de pginas ativa, que corresponde ao processo em execuo no momento, referenciada por um registrador do processador denominado PTBR Page Table Base Register. A cada troca de contexto, esse registrador deve ser atualizado com o endereo da tabela de pginas do novo processo ativo.

40

Sistemas Operacionais
3 Estratgias de alocao
3.5 Alocao segmentada paginada Cada uma das principais formas de alocao de memria vistas at agora tem suas vantagens: a alocao contgua prima pela simplicidade e rapidez; a alocao por segmentos oferece mltiplos espaos de endereamento para cada processo, oferecendo flexibilidade ao programador; a alocao por pginas oferece um grande espao de endereamento linear, enquanto elimina a fragmentao externa. Alguns processadores oferecem mais de uma forma de alocao, deixando aos projetistas do sistema operacional a escolha da forma mais adequada de organizar a memria usada por seus processos.
41

Sistemas Operacionais
3 Estratgias de alocao
3.5 Alocao segmentada paginada Vrios processadores permitem combinar mais de uma forma de alocao. Por exemplo, os processadores Intel i386 permitem combinar a alocao com segmentos coma alocao por pginas, visando oferecer a flexibilidade da alocao por segmentos com a baixa fragmentao da alocao por pginas. Nessa abordagem, os processos vem a memria estruturada em segmentos, o hardware da MMU converte os endereos lgicos na forma [segmento:offset] para endereos lgicos lineares (unidimensionais), usando as tabelas de descritores de segmentos. Em seguida, esse endereos lgicos lineares so convertidos nos endereos fsicos correspondentes atravs do hardware de paginao (tabelas de pginas e TLB), visando obter o endereo fsico 42 correspondente.

Sistemas Operacionais
3 Estratgias de alocao
3.5 Alocao segmentada paginada Apesar do processador Intel i386 oferece as duas formas de alocao de memria, a maioria dos sistemas operacionais que o suportam no fazem uso de todas as suas possibilidades: os sistemas da famlia Windows NT (2000, XP, Vista) e tambm os da famlia UNIX (Linux, FreeBSD) usam somente a alocao por pginas. O antigo DOS e o Windows 3.* usavam somente a alocao por segmentos. O OS/2 da IBM foi um dos poucos sistemas operacionais comerciais a fazer uso pleno das possibilidades de alocao de memria nessa arquitetura, combinando segmentos e pginas.

43

Sistemas Operacionais
4 Fragmentao
Ao longo da vida de um sistema, reas de memria so liberadas por processos que concluem sua execuo e outras reas so alocadas por novos processos, de forma contnua. Com isso, podem surgir reas livres (vazios ou buracos na memria) entre os processos, o que constitui um problema conhecido como fragmentao externa. Esse problema somente afeta as estratgias de alocao que trabalham com blocos de tamanho varivel, como a alocao contgua e a alocao segmentada. Por outro lado, a alocao paginada sempre trabalha com blocos de mesmo tamanho (os quadros e pginas), sendo por isso imune fragmentao externa. A fragmentao externa prejudicial porque limita a capacidade de 44 alocao de memria no sistema.

Sistemas Operacionais
4 Fragmentao
A figura 16 apresenta um sistema com alocao contgua de memria no qual ocorre fragmentao externa. Nessa figura, observa-se que existem 68 MBytes de memria livre em quatro reas separadas (A1 . . .A4),mas somente processos com at 28 MBytes podem ser alocados (usando a maior rea livre, A4).

Alm disso, quanto mais fragmentada estiver a memria livre, maior o esforo necessrio para gerenci-la: as reas livres so mantidas em uma lista encadeada de rea de memria, que manipulada a cada pedido de alocao ou liberao de memria. 45

Sistemas Operacionais
4 Fragmentao
Pode-se enfrentar o problema da fragmentao externa de duas formas: minimizando sua ocorrncia, atravs de critrios de escolha das reas a alocar, ou desfragmentando periodicamente a memria do sistema. Para minimizar a ocorrncia de fragmentao externa, cada pedido de alocao deve ser analisado para encontrar a rea de memria livre que melhor o atenda. Essa anlise pode ser feita usando um dos seguintes critrios: Melhor encaixe (best-fit) : Pior encaixe (worst-fit) : Primeiro encaixe (first-fit) : Prximo encaixe (next-fit) :
46

Sistemas Operacionais
4 Fragmentao
Melhor encaixe (best-fit) : consiste em escolher a menor rea possvel que possa atender solicitao de alocao. Dessa forma, as reas livres so usadas de forma otimizada, mas eventuais resduos (sobras) podem ser pequenos demais para ter alguma utilidade.
Pior encaixe (worst-fit) : consiste em escolher sempre a maior rea livre possvel, de forma que os resduos sejam grandes e possam ser usados em outras alocaes.

47

Sistemas Operacionais
4 Fragmentao
Primeiro encaixe (first-fit) : consiste em escolher a primeira rea livre que satisfaa o pedido de alocao; tem como vantagem a rapidez, sobretudo se a lista de reas livres for muito longa.

Prximo encaixe (next-fit) : variante da anterior (first-fit) que consiste em percorrer a lista a partir da ltima rea alocada ou liberada, para que o uso das reas livres seja distribudo de forma mais homognea no espao de memria.
48

Sistemas Operacionais
4 Fragmentao
Alm da fragmentao externa, que afeta as reas livres entre os processos, as estratgias de alocao de memria tambm podem apresentar a fragmentao interna, que pode ocorrer dentro das reas alocadas aos processos.

49

Sistemas Operacionais
4 Fragmentao
A figura 19 apresenta uma situao onde ocorre esse problema: um novo processo requisita uma rea de memria com 4.900 Kbytes. Todavia, a rea livre disponvel tem 5.000 Kbytes. Se for alocada exatamente a rea solicitada pelo processo (situao A), sobrar um fragmento residual com 100 Kbytes, que praticamente intil para o sistema, pois muito pequeno para acomodar novos processos. Alm disso, essa rea residual de 100 Kbytes deve ser includa na lista de reas livres, o que representa um custo de gerncia desnecessrio.

50

Sistemas Operacionais
4 Fragmentao
A fragmentao interna afeta todas as formas de alocao; as alocaes contgua e segmentada sofrem menos com esse problema, pois o nvel de arredondamento das alocaes pode ser decidido caso a caso. No caso da alocao paginada, essa deciso no possvel, pois as alocaes so feitas em pginas inteiras. Assim, em um sistema com pginas de 4 Kbytes (4.096 bytes), um processo que solicite a alocao de 550.000 bytes (134,284 pginas) receber 552.960 bytes (135 pginas), ou seja, 2.960 bytes amais que o solicitado.

51

Sistemas Operacionais
4 Fragmentao
Em mdia, para cada processo haver uma perda de 1/2 pgina de memria por fragmentao interna. Assim, uma forma de minimizar a perda por fragmentao interna seria usar pginas de menor tamanho (2K, 1K, 512 bytes ou ainda menos). Todavia, essa abordagem implica em ter mais pginas por processo, o que geraria tabelas de pginas maiores e com maior custo de gerncia.

52

Sistemas Operacionais
5 Compartilhamento de memria
A memria RAM um recurso escasso, que deve ser usado de forma eficiente. Nos sistemas atuais, comum ter vrias instncias do mesmo programa em execuo, como vrias instncias de editores de texto, de navegadores, etc.

53

Sistemas Operacionais
5 Compartilhamento de memria
Em servidores, essa situao pode ser ainda mais freqente, com centenas ou milhares de instncias do mesmo programa carregadas na memria. Por exemplo, em um servidor de e-mail UNIX, cada cliente que se conecta atravs dos protocolos POP3 ou IMAP ter um processo correspondente no servidor, para atender suas consultas de e-mail (figura 20). Todos esses processos operam com dados distintos (pois atendem a usurios distintos), mas executam o mesmo cdigo. Assim, centenas ou milhares de cpias do mesmo cdigo executvel podero coexistir na memria do sistema.

54

Sistemas Operacionais
5 Compartilhamento de memria
A estrutura tpica da memria de um processo contm reas separadas para :
cdigo, dados, pilha e heap.

Normalmente, a rea de cdigo no precisa ter seu contedo modificado durante a execuo, portanto geralmente essa rea protegida contra escritas (read-only). Assim, seria possvel compartilhar essa rea entre todos os processos que executam o mesmo cdigo, economizando memria fsica.

55

Sistemas Operacionais
5 Compartilhamento de memria
O compartilhamento de cdigo entre processos pode ser implementado de forma muito simples e transparente para os processos envolvidos, atravs dos mecanismos de traduo de endereos oferecidos pela MMU, como segmentao e paginao.

56

Sistemas Operacionais
5 Compartilhamento de memria
No caso da segmentao, bastaria fazer com que todos os segmentos de cdigo dos processos apontem para o mesmo segmento da memria fsica, como indica a figura 21. importante observar que o compartilhamento transparente para os processos: cada processo continua a acessar endereos lgicos em seu prprio segmento de cdigo, buscando suas instrues a executar.

57

Sistemas Operacionais
5 Compartilhamento de memria
No caso da paginao, a unidade bsica de compartilhamento a pgina. Assim, as entradas das tabelas de pginas dos processos envolvidos so ajustadas para referenciar os mesmos quadros de memria fsica. importante observar que, embora referenciem os mesmos endereos fsicos, as pginas compartilhadas podem ter endereos lgicos distintos. A figura 22 ilustra o compartilhamento de pginas entre processos.

58

Sistemas Operacionais
5 Compartilhamento de memria
O compartilhamento das reas de cdigo permite proporcionar uma grande economia no uso da memria fsica, sobretudo em servidores e sistemas multi-usurios. Por exemplo: consideremos um processador de textos que necessite de 100MB de memria para executar, dos quais 60MB so ocupados por cdigo executvel. Sem o compartilhamento de reas de cdigo, 10 instncias do editor consumiriam 1.000 MB de memria; com o compartilhamento, esse consumo cairia para 460 MB (60MB + 10 40MB).

59

Sistemas Operacionais
6 Localidade de referncias
A forma como os processos acessam a memria tem um impacto direto na eficincia dos mecanismos de gerncia de memria, sobretudo o cache de pginas e o mecanismo de memria virtual . Processos que concentram seus acessos em poucas pginas de cada vez faro um uso eficiente desses mecanismos, enquanto processos que acessam muitas pginas distintas em um curto perodo iro gerar freqentes erros de cache (TLB) e faltas de pgina, prejudicando seu desempenho no acesso memria. A propriedade de um processo ou sistema concentrar seus acessos em poucas reas da memria a cada instante chamada localidade de referncias . Existem ao menos trs formas de localidade de referncias:
60

Sistemas Operacionais
6 Localidade de referncias
Existem ao menos trs formas de localidade de referncias: Localidade temporal : um recurso usado h pouco tempo ser provavelmente usado novamente em um futuro prximo (esta propriedade usada pelos algoritmos de gerncia de memria virtual); Localidade espacial : um recurso ser mais provavelmente acessado se outro recurso prximo a ele j foi acessado ( a propriedade verificada na primeira execuo); Localidade sequencial : um caso particular da localidade espacial, no qual h uma predominncia de acesso sequencial aos recursos (esta propriedade til na otimizao de sistemas de arquivos)

61

Sistemas Operacionais
6 Localidade de referncias
A localidade de referncias uma propriedade importante para a construo de programas eficientes. Ela tambm til em outras reas da computao, como a gerncia das pginas armazenadas nos caches de navegadores web e servidores proxy, nos mecanismos de otimizao de leituras/escritas em sistemas de arquivos, na construo da lista arquivos recentes dos menus de muitas aplicaes interativas, etc.

62

Sistemas Operacionais
7 Memria virtual
Um problema constante nos computadores a disponibilidade de memria fsica: os programas se tornam cada vez maiores e cada vez mais processos executam simultaneamente, ocupando a memria disponvel. Alm disso, a crescente manipulao de informaes multimdia (imagens, udio, vdeo) contribui para esse problema, uma vez que essas informaes so geralmente volumosas e seu tratamento exige grandes quantidades de memria livre. Como a memria RAM um recurso caro (cerca de U$50/GByte no mercado americano, em 2007) e que consome uma quantidade significativa de energia, aumentar sua capacidade nem sempre uma opo factvel.

63

Sistemas Operacionais
7 Memria virtual
Observando o comportamento de um sistema computacional, constata-se que nem todos os processos esto constantemente ativos, e que nem todas as reas de memria esto constantemente sendo usadas. Por isso, as reas de memria pouco acessadas poderiam ser transferidas para um meio de armazenamento mais barato e abundante, como um disco rgido (U$0,50/GByte) ou um banco de memria flash (U$10/GByte), liberando a memria RAM para outros usos. Quando um processo proprietrio de uma dessas reas precisar acess-la, ela deve ser transferida de volta para a memria RAM. O uso de um armazenamento externo como extenso da memria RAM se chama memria virtual; essa estratgia pode ser implementada de forma eficiente e transparente para processos, usurios e programadores.
64

Sistemas Operacionais
7.1 Mecanismo bsico
Nos primeiros sistemas a implementar estratgias de memria virtual, processos inteiros eram transferidos da memria para o disco rgido e vice-versa. Esse procedimento, denominado troca (swapping) permite liberar grandes reas de memria a cada transferncia, e se justifica no caso de um armazenamento com tempo de acesso muito elevado, como os antigos discos rgidos. Os sistemas atuais raramente transferem processos inteiros para o disco; geralmente as transferncias so feitas por pginas ou grupos de pginas, em um procedimento denominado paginao (paging), detalhado a seguir.

65

Sistemas Operacionais
7.1 Mecanismo bsico
Normalmente, o mecanismo de memria virtual se baseia em pginas ao invs de segmentos. As pginas tm tamanho fixo, o que permite simplificar os algoritmos de escolha de pginas a remover, os mecanismos de transferncia para o disco e tambm a formatao da rea de troca. A otimizao desses fatores seria bem mais complexa e menos efetiva caso as operaes de troca fossem baseadas em segmentos, que tm tamanho varivel.

66

Sistemas Operacionais
7.1 Mecanismo bsico
A idia central do mecanismo de memria virtual em sistemas com memria paginada consiste em retirar da memria principal os quadros pouco usados, salvando-os em uma rea do disco rgido reservada para esse fim. Os quadros a retirar so escolhidos de acordo com alguns modelos de algoritmos. As entradas das tabelas de pginas relativas aos quadros transferidos para o disco devem ento ser ajustadas de forma a referenciar os contedos correspondentes no disco rgido. Essa situao est ilustrada de forma simplificada na figura 26.

67

Sistemas Operacionais
7.1 Mecanismo bsico
O armazenamento externo das pginas pode ser feito em um disco exclusivo para esse fim (usual em servidores de maior porte), em uma partio do disco principal (usual no Linux e outros UNIX) ou em um arquivo reservado dentro do sistema de arquivos do disco principal da mquina, geralmente oculto (como no Windows NT e sucessores). Em alguns sistemas, possvel usar uma rea de troca remota, em um servidor de arquivos de rede; todavia, essa soluo apresenta baixo desempenho. Por razes histricas, essa rea de disco geralmente denominada rea de troca (swap area), embora armazene pginas. No caso de um disco exclusivo ou partio de disco, essa rea geralmente formatada usando uma estrutura de sistema de arquivos otimizada para o armazenamento e recuperao rpida das pginas.
68

Sistemas Operacionais
7.1 Mecanismo bsico
As pginas que foram transferidas da memria para o disco provavelmente sero necessrias no futuro. Quando um processo tenta acessar uma pgina ausente, esta deve ser transferida de volta para a memria, para permitir seu acesso, de forma transparente ao processo. Quando um processo acessa uma pgina, a MMU verifica se a mesma est mapeada na memria RAM e, em caso positivo, faz o acesso ao endereo fsico correspondente. Caso contrrio, a MMU gera uma interrupo de falta de pgina (page fault) que fora o desvio da execuo para o sistema operacional.

69

Sistemas Operacionais
7.1 Mecanismo bsico
Nesse instante, o sistema deve verificar se a pgina solicitada no existe ou se foi transferida para o disco, usando os flags de controle da respectiva entrada da tabela de pginas. Caso a pgina no exista, o processo tentou acessar um endereo invlido e deve ser abortado. Por outro lado, caso a pgina solicitada tenha sido transferida para o disco, o processo deve ser suspenso enquanto o sistema transfere a pgina de volta para a memria RAM e faz os ajustes necessrios na tabela de pginas. Uma vez a pgina carregada em memria, o processo pode continuar sua execuo. O fluxograma da figura 27 apresenta as principais aes desenvolvidas pelo mecanismo de memria virtual.
70

Sistemas Operacionais
7.1 Mecanismo bsico

71

Sistemas Operacionais
7.1 Mecanismo bsico
Nesse procedimento aparentemente simples h duas questes importantes. Primeiro, caso a memria principal j esteja cheia, uma ou mais pginas devero ser removidas para o disco antes de trazer de volta a pgina faltante. Isso implica em mais operaes de leitura e escrita no disco e portanto em mais demora para atender o pedido do processo. Muitos sistemas, como o Linux e o Solaris, mantm um processo daemon com a finalidade de escolher e transferir pginas para o disco, ativado sempre que a quantidade de memria livre estiver abaixo de um limite mnimo.

72

Sistemas Operacionais
7.1 Mecanismo bsico
Segundo, retomar a execuo do processo que gerou a falta de pgina pode ser uma tarefa complexa. Como a instruo que gerou a falta de pgina no foi completada, ela deve ser re-executada. No caso de instrues simples, envolvendo apenas um endereo de memria sua re-execuo trivial. Todavia, no caso de instrues que envolvam vrias aes e vrios endereos de memria, deve-se descobrir qual dos endereos gerou a falta de pgina, que aes da instruo foram executadas e ento executar somente o que estiver faltando. A maioria dos processadores atuais prov registradores especiais que auxiliam nessa tarefa.
73

Sistemas Operacionais
7.2 Eficincia de uso
O mecanismo de memria virtual permite usar o disco como uma extenso de memria RAM, de forma transparente para os processos. Seria a soluo ideal para as limitaes da memria principal, se no houvesse um problema importante: o tempo de acesso dos discos utilizados. Conforme os valores indicados na tabela 1, um disco rgido tpico tem um tempo de acesso cerca de 100.000 vezes maior que a memria RAM. Cada falta de pgina provocada por um processo implica em um acesso ao disco, para buscar a pgina faltante (ou dois acessos, caso a memria RAM esteja cheia e outra pgina tenha de ser removida antes). Assim, faltas de pgina muito freqentes iro gerar muitos acessos ao disco, aumentando o tempo mdio de acesso memria e, em conseqncia, diminuindo o desempenho geral do sistema.
74

Sistemas Operacionais
7.2 Eficincia de uso
O tamanho da memria RAM, em relao demanda dos processos em execuo: sistemas com memria insuficiente, ou muito carregados, podem gerar muitas faltas de pgina, prejudicando o seu desempenho e podendo ocasionar o fenmeno conhecido como thrashing. comportamento dos processos em relao ao uso da memria: processos que agrupem seus acessos a poucas pginas em cada momento, respeitando a localidade de referncias necessitam usar menos pginas simultaneamente e geram menos faltas de pgina. A escolha das pginas a remover da memria: caso sejam removidas pginas usadas com muita freqncia, estas sero provavelmente acessadas pouco tempo aps sua remoo, gerando mais faltas de pgina.

75

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
A escolha correta dos quadros a remover da memria fsica um fator essencial para a eficincia do mecanismo de memria virtual. Ms escolhas podero remover da memria quadros muito usados, aumentando a taxa de faltas de pgina e e diminuindo o desempenho do sistema. Vrios critrios podem ser usados para escolher vtimas, pginas a transferir da memria para a rea de troca no disco: Idade da pgina Freqncia de acessos pgina : Data do ltimo acesso : Prioridade do processo proprietrio Contedo da pgina : Pginas especiais 76

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Idade da pgina: h quanto tempo a pgina est na memria; pginas muito antigas talvez sejam pouco usadas. Freqncia de acessos pgina : pginas muito acessadas em um passado recente possivelmente ainda o sero em um futuro prximo. Data do ltimo acesso : pginas h mais tempo sem acessar possivelmente sero pouco acessadas em um futuro prximo (sobretudo se os processos respeitarem o princpio da localidade de referncias). Prioridade do processo proprietrio: processos de alta prioridade, ou de tempo-real, podem precisar de suas pginas de memria rapidamente; se elas estiverem no disco, seu desempenho ou tempo de resposta podero ser prejudicados.

77

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Contedo da pgina : pginas cujo contedo seja cdigo executvel exigem menos esforo do mecanismo de memria virtual, porque seu contedo j est mapeado no disco (dentro do arquivo executvel correspondente ao processo). Por outro lado, pginas de dados que tenham sido alteradas precisam ser salvas na rea de troca. Pginas especiais pginas contendo buffers de operaes de entrada/sada podem ocasionar dificuldades ao ncleo caso no estejam na memria no momento em que ocorrer a transferncia de dados entre o processo e o dispositivo fsico. O processo tambm pode solicitar que certas pginas contendo informaes sensveis (como senhas ou chaves criptogrficas) no sejam copiadas na rea de troca, por segurana.

78

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Existem vrios algoritmos para a escolha de pginas a substituir na memria, visando reduzir a freqncia de falta de pginas, que levam em conta alguns dos fatores acima enumerados. Os principais sero apresentados na seqncia: Algoritmo FIFO Algoritmo timo Algoritmo LRU Algoritmo da segunda chance Algoritmo NRU Algoritmo do envelhecimento

79

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo FIFO Um critrio bsico a considerar para a escolha das pginas a substituir poderia ser sua idade, ou seja, o tempo em que esto na memria. Assim, pginas mais antigas podem ser removidas para dar lugar a novas pginas. Esse algoritmo muito simples de implementar: basta organizar as pginas em uma fila de nmeros de pginas com poltica FIFO (First In, First Out). Os nmeros das pginas recm carregadas na memria so registrados no final da lista, enquanto os nmeros das prximas pginas a substituir na memria so obtidos no incio da lista.

80

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo FIFO Apesar de ter uma implementao simples, na prtica este algoritmo no oferece bons resultados. Seu principal defeito considerar somente a idade da pgina, sem levar em conta sua importncia. Pginas carregadas na memria h muito tempo podem estar sendo freqentemente acessadas, como o caso de pginas contendo bibliotecas dinmicas compartilhadas por muitos processos, ou pginas de processos servidores lanados durante a inicializao (boot) da mquina.

81

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo timo Idealmente, a melhor pgina a remover da memria em um dado instante aquela que ficar mais tempo sem ser usada pelos processos. Esta idia simples define o algoritmo timo (OPT). Entretanto, como o comportamento futuro dos processos no pode ser previsto com preciso, este algoritmo no implementvel. Mesmo assim ele importante, porque define um limite mnimo conceitual: se para uma dada cadeia de referncias, o algoritmo timo gera 17 faltas de pgina, nenhum outro algoritmo ir gerar menos que 17 faltas de pgina ao tratar a mesma cadeia. Assim, seu resultado serve como parmetro para a avaliao dos demais algoritmos. 82

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo LRU Uma aproximao implementvel do algoritmo timo proporcionada pelo algoritmo LRU(Least Recently Used,menos recentemente usado). Neste algoritmo, a escolha recai sobre as pginas que esto na memria h mais tempo sem ser acessadas. Assim, pginas antigas e menos usadas so as escolhas preferenciais. Pginas antigas mas de uso freqente no so penalizadas por este algoritmo, ao contrrio do que ocorre no algoritmo FIFO. Pode-se observar facilmente que este algoritmo simtrico do algoritmo OPT em relao ao tempo: enquanto o OPT busca as pginas que sero acessadas mais longe no futuro do processo, o algoritmo LRU busca as pginas que foram acessadas mais longe no seu passado.
83

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo LRU O algoritmo LRU parte do pressuposto que pginas recentemente acessadas no passado provavelmente sero acessadas em um futuro prximo, e ento evita remov-las da memria. Esta hiptese se verifica na prtica, sobretudo se os processos respeitam o princpio da localidade de referncia. Embora possa ser implementado, o algoritmo LRU bsico pouco usado na prtica, porque sua implementao exigiria registrar as datas de acesso s pginas a cada leitura ou escrita na memria, o que difcil de implementar de forma eficiente em software e com custo proibitivo para implementar em hardware.

84

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo LRU Alm disso, sua implementao exigiria varrer as datas de acesso de todas as pginas para buscar a pgina com acesso mais antigo (ou manter uma lista de pginas ordenadas por data de acesso), o que exigiria muito processamento. Assim, na prtica a maioria dos sistemas operacionais implementam aproximaes do LRU, como as apresentadas na seqncia.

85

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo da segunda chance O algoritmo FIFO move para a rea de troca as pginas h mais tempo na memria, sem levar em conta seu histrico de acessos. Uma melhoria simples desse algoritmo consiste em analisar o bit de referncia de cada pgina candidata, para saber se ela foi acessada recentemente. Caso tenha sido, essa pgina recebe uma segunda chance, voltando para o fim da fila com seu bit de referncia ajustado para zero. Dessa forma, evita-se substituir pginas antigas mas muito acessadas. Todavia, caso todas as pginas sejam muito acessadas, o algoritmo vai varrer todas as pginas, ajustar todos os bits de referncia para zero e acabar por escolher a primeira pgina da fila, como faria o algoritmo FIFO.

86

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo da segunda chance Uma forma eficiente de implementar este algoritmo atravs de uma fila circular de nmeros de pgina, ordenados de acordo com seu ingresso na memria. Um ponteiro percorre a fila seqencialmente, analisando os bits de referncia das pginas e ajustando-os para zero medida em que avana. Quando uma pgina vtima encontrada, ela movida para o disco e a pgina desejada carregada na memria no lugar da vtima, com seu bit de referncia ajustado para zero. Essa implementao conhecida como algoritmo do relgio.

87

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo NRU O algoritmo da segunda chance leva em conta somente o bit de referncia de cada pgina ao escolher as vtimas para substituio. O algoritmo NRU (Not RecentlyUsed, ou no usada recentemente)melhora essa escolha, ao considerar tambm o bit de modificao, que indica se o contedo de uma pgina foi modificado aps ela ter sido carregada na memria. Usando os bits R (referncia) eM(modificao),

88

Sistemas Operacionais
7.3 Algoritmos de substituio de pginas
Algoritmo do envelhecimento Outra possibilidade de melhoria do algoritmo da segunda chance consiste em usar os bits de referncia das pginas para construir contadores de acesso s mesmas. A cada pgina associado um contador inteiro com N bits (geralmente 8 bits so suficientes). Periodicamente, o algoritmo varre as tabelas de pginas, l os bits de referncia e agrega seus valores aos contadores de acessos das respectivas pginas. Uma vez lidos, os bits de referncia so ajustados para zero, para registrar as referncias de pginas que ocorrero durante prximo perodo.

89

Sistemas Operacionais
7.4 Conjunto de trabalho
A localidade de referncias mostra que os processos normalmente acessam apenas uma pequena frao de suas pginas a cada instante. O conjunto de pginas acessadas na histria recente de um processo chamado Conjunto de Trabalho (Working Set, ou ws). A composio do conjunto de trabalho dinmica, variando medida em que o processo executa e evolui seu comportamento, acessando novas pginas e deixando de acessar outras. Se um processo tiver todas as pginas de seu conjunto de trabalho carregadas na memria, ele sofrer poucas faltas de pgina, pois somente acessos a novas pginas podero gerar faltas. Essa constatao permite delinear um algoritmo simples para substituio de pginas: s substituir pginas que no pertenam ao conjunto de trabalho de nenhum processo ativo.
90

Sistemas Operacionais
7.4 Conjunto de trabalho
Contudo, esse algoritmo difcil de implementar, pois exigiria manter atualizado o conjunto de trabalho de cada processo a cada acesso memria, o que teria um custo computacional proibitivo. Uma alternativa mais simples e eficiente de implementar seria verificar que pginas cada processo acessou recentemente, usando a informao dos respectivos bits de referncia. Essa a base do algoritmo WSClock (Working Set Clock) que modifica o algoritmo do relgio. O algoritmo WSClock pode ser implementado de forma eficiente, porque a data ltimo acesso de cada pgina no precisa ser atualizada a cada acesso memria, mas somente quando a referncia da pgina na fila circular visitada pelo ponteiro do relgio (caso R = 1).
91

Sistemas Operacionais
7.4 Conjunto de trabalho
Todavia, esse algoritmo no uma implementao pura do conceito de conjunto de trabalho, mas uma composio de conceitos de vrios algoritmos: FIFO e segunda-chance (estrutura e percurso do relgio), Conjuntos de trabalho (diviso das pginas em dois grupos conforme sua idade), LRU (escolha das pginas com datas de acesso mais antigas) e NRU (preferncia s pginas no modificadas).

92

Sistemas Operacionais
7.5 A anomalia de Belady
Espera-se que, quanto mais memria fsica um sistema possua, menos faltas de pgina ocorram. Todavia, esse comportamento intuitivo no se verifica em todos os algoritmos de substituio de pginas. Alguns algoritmos, como o FIFO, podem apresentar um comportamento estranho: ao aumentar o nmero de quadros de memria, o nmero de faltas de pgina geradas pelo algoritmo aumenta, ao invs de diminuir. Esse comportamento atpico de alguns algoritmos foi estudado pelo matemtico hngaro Laslo Belady nos anos 60, sendo por isso denominado anomalia de Belady. Estudos demonstraram que uma famlia de algoritmos denominada algoritmos de pilha ( qual pertencemos algoritmos OPT e LRU, entre outros) no apresenta a anomalia de Belady.
93

Sistemas Operacionais

94

Sistemas Operacionais

95

Vous aimerez peut-être aussi