Que tipo de fragmentação é encontrado em sistemas com segmentação?

Esta p�gina pretende explicar de uma forma suscita, o funcionamento da Gest�o de Mem�ria Virtual e os dois m�todos por si utilizados: a Segmenta��o e a Pagina��o.

Conte�do

Segmenta��o

  • Mecanismos de tradu��o de endere�os
  • Optimiza��o do Mecanismo de Tradu��o de Endere�os
  • Fragmenta��o
  • Protec��o
  • Partilha de mem�ria entre processos

Pagina��o

  • Mecanismos de tradu��o de endere�os
  • Tabela de tradu��o de endere�os(TLB)
  • Falta de pagina
  • Fragmenta��o
  • Protec��o
  • Partilha de mem�ria entre processos
  • Dimens�o das p�ginas

Mem�ria Segmentada\Paginada

Segmenta��o

-Objectivos

O objectivo da segmentar�o � a divis�o dos programas em segmentos l�gicos que reflictam a sua subdivis�o funcional. Por exemplo, cada rotina ou cada m�dulo corresponder� a um segmento.O principal objectivo deste m�todo � tentar suportar directamente na gest�o de mem�ria as abstrac��es comuns nas linguagens de programa��o, nomeadamente:

  • Carregamento em mem�ria
    O segmento � a unidade m�nima a carregar em mem�ria. Considera-se que todas as palavras dentro do segmento t�m a mesma probabilidade de virem a ser acedidas. Como n�o sabemos qual das instru��es de uma certa rotina vai ser ou n�o executadas, temos de as ter todas em mem�ria.
  • Protec��o
    A protec��o da mem�ria � feita em termos de blocos l�gicos, quem pode aceder a parte do bloco pode aceder ao bloco todo e vice-versa.
  • Efici�ncia
    O princ�pio da localidade de refer�ncia diz-nos que, se acedermos a um endere�o de um segmento l�gico com grande probabilidade os pr�ximos acessos ser�o a endere�os situados no mesmo segmento. Esta constata��o na an�lise dos programas permite optimizar os acessos dentro do segmento, perdendo-se menos tempo na tradu��o de endere�os.

Voltar ao inicio

-Mecanismos de tradu��o de endere�os

Um endere�o virtual tem a seguinte forma
(segmento, deslocamento)
segmento cont�m o numero do segmento e deslocamento indica o deslocamento dentro do segmento.O mecanismo de tradu��o est� representado na fig. 4.5. Existe uma tabela de segmentos composta pelo descritor de cada segmento. Cada descritor cont�m o endere�o f�sico

do segmento (endere�o base do segmento), a sua dimens�o, informa��o respeitante � protec��o e � utiliza��o do segmento. Dois registos da unidade de gest�o de mem�ria, chamados registo Base da Tabela de Segmentos (BTS) e registo Limite da Tabela de Segmentos (LTS), cont�m respectivamente o endere�o real de in�cio da tabela e a sua dimens�o. Quando o programa gera um endere�o, o n�mero do segmento � comparado com o registo LTS. Se for inferior, � somado com o registo BTS obtendo-se a entrada na tabela de segmentos correspondente a este segmento. De seguida, os bits de protec��o s�o testados para verificar se o acesso pretendido � legal. habitualmente, estes bits indicam se se pode ler, escrever ou executar o segmento. Por fim, � verificado se o deslocamento pretendido � inferior ou igual � dimens�o do segmento. Se o endere�o for v�lido, o deslocamento � somado ao endere�o f�sico do in�cio do segmento, obtendo-se o endere�o f�sico pretendido.Se algum dos testes anteriores falhar, isso significa que o endere�o � inv�lido.O hardware interrompe a tradu��o do endere�o e gera uma excep��o, que ser� tratada pelo sistema operativo. O mecanismo descrito � executado pelo hardware. A fun��o do sistema operativo � a de programar os v�rios registos, preencher a tabela de segmentos e tratar as excep��es quando estas s�o desencadeados.Quando se d� uma mudan�a de contexto, os registos base e limite t�m de ser carregados, com o endere�o e dimens�o da tabela de segmentos do novo processo.A dimens�o m�xima de um segmento est� associada � arquitectura da m�quina, n�o podendo nunca ser alterada porque determina quantos bits do endere�o s�o necess�rios para especificar o deslocamento econter a dimens�o do segmento.quantos bits s�o necess�rios no descritor para

Voltar ao inicio

-Optimiza��o do Mecanismo de Tradu��o de Endere�os

A tabela de segmentos est� em mem�ria f�sica. Se o hardware tiver de lhe aceder de cada vez que o programa gera um endere�o, o custo do acesso a uma posi��o de mem�ria duplica, visto que s�o necess�rios dois acessos a mem�ria por cada um pretendido pelo programa. Este facto � particularmente importante, porque na moderna tecnologia a velocidade de um computador est� em grande parte limitada pelos acessos � mem�ria. Em arquitecturas segmentadas a solu��o habitual para este problema � guardar em registos, de acesso muito r�pido, as entradas da tabela de segmentos correspondentes aos segmentos em utiliza��o. Um programa pode ter mais que um segmento de c�digo ou dados. Da primeira vez que um segmento � acedido, o seu descritor � lido da tabela de segmentos e � guardado no registo apropriado. Por exemplo, a instru��o de chamada a uma rotina noutro segmento, da forma far call segmento:deslocamento, provoca o carregamento do descritor relativo a segmento no registo associado ao segmento de c�digo (CSR). Nos acessos seguintes a endere�os dentro do mesmo segmento, a tradu��o � feita internamente ao processador usando o registo CSR, o que � muito r�pido. A opera��o demorada, que � ler o descritor da tabela de segmentos, s� � efectuada da primeira vez que o segmento for acedido. Se o programa aceder a outro segmento diferente de c�digo, esse descritor ser� carregado em CSR, destruindo o que l� estava, Estes registos funcionam pois como uma cache de direc��o unit�ria.Certos processadores t�m tabelas gen�ricas, que guardam os descritores dos �ltimos segmentos acedidos pelo programa.

Voltar ao inicio

- Fragmenta��o

A segmenta��o gera fragmenta��o externa a medida que os segmentos s�o alocados e libertados. Uma maneira de a resolver � copiar todos os segmentos para um dos extremos da mem�ria, como no caso das parti��es vari�veis. Outra solu��o, usada principalmente quando um segmento cresce, � copiar o segmento para mem�ria secund�ria, libertar o seu espa�o em mem�ria f�sica, alocar um segmento da dimens�o pretendida (eventualmente esperando que outros processos terminem e libertem mem�ria) e, copiar o segmento novamente para mem�ria prim�ria. Ambas as solu��es exigem que o processamento seja interrompido. A segunda solu��o � incremental, o que implica paragens menores e necessita de menos mem�ria livre para operar.

Voltar ao inicio

-Protec��o

Numa arquitectura segmentada a unidade de protec��o � o segmento. A protec��o associada ao segmento est� especificada no descritor do segmento e � feita a v�rios n�veis:

  • Como processos diferentes t�m tabelas de segmentos diferentes, os espa�os de endere�amento virtual s�o distintos, n�o havendo forma de um processo poder referendar zonas de mem�ria de outro.
  • O deslocamento dentro do segmento � verificado comparando-o com a dimens�o do segmento residente no descritor.
  • tipo de acesso ao segmento � verificado impedindo, por exemplo, que um programa escreva no segmento de c�digo. As protec��es habituais s�o leitura, escrita e execu��o.

Voltar ao inicio

-Partilha de mem�ria entre processos

Partilhar um segmento entre dois ou mais processos � externamente simples: basta ter nas varias tabelas de segmentos uma entrada contendo o mesmo endere�o f�sico e dimens�o. Desta forma, dois processos podem aceder por endere�os virtuais (eventualmente diferentes) � mesma mem�ria f�sica.

Voltar ao inicio

-Objectivos

O principal objectivo da arquitectura de mem�ria paginada � oferecer ao programador um espa�o de endere�amento (virtual) linear, em geral bastante maior que a dimens�o da mem�ria f�sica da m�quina. A ideia subjacente � fazer com que o programador n�o precise de se preocupar com a gest�o de mem�ria quando escreve um programa.

Voltar ao inicio

-Mecanismos de tradu��o de endere�os

A mem�ria � dividida em blocos todos do mesmo tamanho, chamados p�ginas sem preocupa��es com a estrutura l�gica do programa. Um endere�o tem a forma
(p�gina, deslocamento)
p�gina cont�m o n�mero da p�gina e deslocamento indica o deslocamento dentro da p�gina.
O mecanismo de tradu��o est� representado na fig. 4.6, sendo semelhante ao apresentado para a mem�ria segmentada. Existe uma tabela de p�ginas composta pelo descritor de cada p�gina, em geral chamado PTE (de Page Table En�ry). Cada descritor cont�m o endere�o f�sico da p�gina, um bit de presen�a e informa��o respeitante � protec��o e � utiliza��o da p�gina. N�o �

necess�rio guardar a dimens�o das p�ginas, pois elas t�m todas o mesmo tamanho. Dois registos do hardware de tradu��o de endere�os, chamados Base da Tabela de P�ginas (BTP) e Limite da Tabela de P�ginas (LTP), cont�m respectivamente o endere�o real de in�cio da tabela de p�ginas e a dimens�o desta. Quando o programa gera um endere�o, o n�mero da p�gina � comparado com registo LTP. Se for inferior, � somado com o registo BTP, obtendo-se a entrada na tabela de p�ginas correspondente a esta p�gina. De seguida, os bits de protec��o s�o testados para verificar se o acesso pretendido � legal, estes bits indicam se se pode ler, escrever ou executar a p�gina. Se o endere�o for v�lido, o deslocamento � somado ao endere�o f�sico do in�cio da p�gina, obtendo-se o endere�o f�sico pretendido. Se n for o n�mero de bits do deslocamento, o endere�o f�sico do in�cio da p�gina ter� sempre os n bits de menor peso a zero, sendo a soma id�ntica a uma concatena��o.
Como no caso da segmentar�o, se algum dos testes anteriores falhar, isso significa que o endere�o � inv�lido, sendo gerada urna excep��o que ser� tratada pelo sistema operativo.
Existe uma (ou mais) tabela(s) de p�ginas, por processo. Quando se d� uma mudan�a de contexto, os (v�rios) registos base e limite t�m de ser carregados com o endere�o e dimens�o da(s) tabela(s) de paginas do novo processo.
A divis�o das p�ginas est� definida na arquitectura da m�quina, n�o podendo nunca ser alterado o espa�o de endere�amento virtual.

Voltar ao inicio

-Tabela de tradu��o de endere�os(TLB)

A tabela de p�ginas reside em mem�ria f�sica. Tal como na segmentar�o, o mecanismo de tradu��o obriga a um acesso suplementar � mem�ria, o que duplicaria o tempo de acesso � informa��o, tornando indispens�vel a exist�ncia de uma tabela interna � unidade de gest�o de mem�ria que guarde as PTE das, ultimas p�ginas acedidas. No entanto, neste caso n�o podemos ter registos que memorizem os descritores de alguns blocos l�gicos do programa, como na segmentar�o. As p�ginas subdividem o programa aleatoriamente, sem terem em conta blocos l�gicos, pelo que nunca � poss�vel saber se a palavra a que queremos aceder est� ou n�o dentro da p�gina actual.
A solu��o comum consiste em guardar numa mem�ria associativa de acesso muito r�pido chamada TLB (Translation Lookaside Buffer) os, descritores das �ltimas n p�ginas, acedidas pelo programa. Quando o programa gera um endere�o, a mem�ria associativa consulta simultaneamente todas a suas posi��es, pesquisando se tem uma entrada cujo n�mero de p�gina seja igual ao n�mero de p�gina gerado pelo programa. O acesso � feito em paralelo a todas as posi��es da mem�ria associativa. Se for encontrada a entrada pretendida ela � colocada na sa�da, se n�o for encontrada isso � assinalado ao hardware de gest�o de mem�ria.
Em processadores onde a TLB � gerida pelo hardware, a pesquisa na TLB � lan�ada em paralelo com o acesso � tabela de p�ginas. Se o descritor for encontrado na TLB, � interrompido o acesso � tabela de p�ginas. Se n�ofor encontrado, a tabela de p�ginas, � acedida como foi descrito anteriormente, e o descritor � introduzido na TLB, geralmente segundo uma disciplina FIFO, de forma a que acessos subsequentes � mesma p�gina sejam a� resolvidos. Outros processadores, sobretudo processadores R,ISC, gerem a TLB por software. Se o descritor da p�gina n�o for encontrado na TLB � gerada uma excep��o, tendo o sistema operativo que preencher a entrada na TLB com o valor adequado. Este mecanismo est� representado na fig. 4.7.
O ideal seria guardar na TLB n�o as �ltimas, mas as pr�ximas p�ginas a que o programa ir� aceder. Como isso � imposs�vel de prever, toma-se o funcionamento recente do programa como uma boa previs�o para o que ele far� no futuro pr�ximo. Concretamente, se um programa acedeu a uma p�gina, � expect�vel que os pr�ximos acessos sejam dentro da mesma p�gina. A dimens�o destas, tabelas � pequena, em geral (64, 128 entradas), pois o seu custo � elevado.

Voltar ao inicio

-Falta de pagina

O objectivo central da pagina��o � oferecer ao programador um espa�o de endere�amento virtual maior que a mem�ria f�sica do computador. Isto � conseguido mantendo em mem�ria f�sica apenas algumas p�ginas do programa e carregando da mem�ria secund�ria as outras p�ginas, quando isso for necess�rio.
A PTE tem um bit de presen�a (bit P) que indica se a p�gina est� ou n�o em mem�ria prim�ria. Na descri��o feita anteriormente, considerou-se que o bit P estava a 1. Se o bit P estiver a O, o hardware de gest�o de mem�ria gera uma excep��o que interrompe a instru��o a meio. Diz-se ent�o que houve uma falta de p�gina. O sistema operativo analisa a causa da excep��o, determina que foi uma falta de p�gina e come�a o processamento adequado. Em primeiro lugar, ter� de alocar uma p�gina livre em mem�ria prim�ria (segundo os algoritmos a analisar no cap�tulo seguinte) e de seguida verifica qual o tipo da pagina. Se � uma p�gina nova (resultante do crescimento da pilha, ou uma pagina de dados n�o inicializados), basta preenche-la com zeros; se existe uma c�pia da pagina em mem�ria secund�ria, � necess�rio l�-la do disco. Quando o acesso ao disco terminar, o sistema operativo preenche a PTE com o endere�o da p�gina, posiciona o bit P a I e coloca o processo na fila dos execut�veis. Quando o processo se voltar a executar, ir� completar (ou mesmo repetir, em certas arquitecturas ; a instru��o que tinha sido interrompida a meio. O acesso � mem�ria ser� repetido e completar-se-� correctamente pois PTF j� tem o bit P a 1.
As excep��es provocadas pela UGN t�m uma diferen�a importante em rela��o �s instru��es que interrompem o processador no fim de uma instru��o. As excep��es da gest�o de mem�ria t�m de interromper a instru��o a meio e o processador tem de ser capaz de, mais tarde, completar a instru��o que foi interrompida. O programa � seccionado em p�ginas aleatoriamente, podendo acontecer que uma instru��o seja composta por mais de um octeto fique partida entre duas p�ginas se a primeira p�gina estiver presente e a segunda n�o, haver� uma falta de p�gina a da instru��o. Se o processador n�o fosse capaz de interromper a instru��o a meio e depois completa-la, aquela instru��o ficaria perdida, e o programa n�o funcionaria correctamente. Diz-se que as instru��es tem de ser recome��veis (de restartable ).
Em mem�ria segmentada � tamb�m poss�vel ter o mesmo mecanismo de falta de segmento. Se o bit P do descritor de segmento estiver a zero haver� uma falta de segmento. A diferen�a importante � que, no caso da segmenta��o, s� as instru��es que carregam um novo segmento podem originar uma falta de segmento. As instru��es que endere�am mem�ria dentro do segmento n�o obrigam ao carregamento de um novo segmento, portanto, nunca podem originar uma falta de segmento. Estas instru��es n�o necessitam n�o necessitam de ser recome��veis, o que representa uma simplifica��o consider�vel no hardowere do processador. Na pagina��o, como se viu, todas as instru��es tem de ser recome��veis.

Voltar ao inicio

-Fragmenta��o

Um bloco l�gico de programa (em geral, c�digo, dados e pilha) corresponde a um conjunto de p�ginas, havendo fragmenta��o interna na ultima p�gina de cada bloco. O desperd�cio de mem�ria torna-se muito importante se as p�ginas forem grandes e houver muitos processos carregados em mem�ria.

Voltar ao inicio

-Protec��o

A protec��o em mem�ria paginada faz-se da mesma forma que em mem�ria segmentada: processos distintos t�m tabelas de p�ginas diferentes e cada p�gina cont�m os modos de acesso permitidos (leitura, escrita e execu��o ). No entanto, a grande particularidade da protec��o � a p�gina. Para proteger um bloco l�gico de um programa � necess�rio estabelecer essa protec��o nas v�rias p�ginas que comp�em o bloco, o que � mais complicado e menos elegante que na segmenta��o. Se o bloco a proteger for menor que a dimens�o da p�gina, a �nica solu��o � atribuir uma p�gina inteira a esse bloco, o que provoca fragmenta��o interna � p�gina.

Voltar ao inicio

-Partilha de mem�ria entre processos

Para partilhar uma zona de mem�ria entre v�rios processos basta ter, nas tabelas de p�ginas dos processos em causa, um conjunto de PTE indicando o mesmo endere�o f�sico. Como para a protec��o, este mecanismo � mais complicado e menos elegante na mem�ria paginada que na segmentada.

Voltar ao inicio

-Dimens�o das p�ginas

P�ginas pequenas t�m a vantagem de diminuir a fragmenta��o interna, mas aumentam o n�mero de faltas de p�ginas, a dimens�o das tabelas de p�gina 3 e a dimens�o das listas de p�ginas mantidas pelo sistema operativo. P�ginas grandes t�m as vantagens rec�procas: tabelas de p�ginas menores, menos faltas de p�ginas, listas mais curtas, logo mais r�pidas de pesquisar. Em contrapartida, aumenta o desperd�cio de mem�ria e o tempo de transfer�ncia entre mem�ria e disco.

Voltar ao inicio

Mem�ria Segmentada\Paginada

A Segmenta��o sege uma aproxima��o l�gica, cada segmento � subdividido em paginas. O mecanismo de tradu��o de endere�os est� representado na figura.
O numero de segmento � usado para obter o endere�o f�sico do inicio da tabela de paginas do segmento, sendo a tradu��o do par
(pagina,eslocamento)
feita como anteriormente. As TLB do segmento e paginas s�o igualmente usadas como atras foi descrito.
A protec��o e partilha de segmentos � feita como na Segmenta��o pura. A partilha de apenas parte das paginas de um segmento � poss�vel, embora seja um pouco mais dif�cil de gerir. Um endere�o virtual tem 48 bits. Os 16 bits mais significativos determinam o segmento, cuja dimens�o m�xima � 232 octetos. Cada segmento � subdividido em paginas de 4 Koctetos. A utiliza��o normal desta arquitectura � fazer corresponder um segmento para cada um dos segmentos l�gicos de um programa, que s�o c�digo, dados e pilha, e dados do sistema relativos ao processo, sendo cada um destes segmentos paginado. Desta forma, ultrapassa-se a principal limita��o da mem�ria segmentada, que � a dimens�o m�xima dos segmentos.

Voltar ao inicio

Folha realizada por:

  • Paulo Ferreira
  • Fernando Sousa

Qual tipo de fragmentação ocorre em sistemas de segmentação pura?

Ocorre fragmentação externa. Sistemas que implementam a segmentação com paginação. Cada segmento é dividido fisicamente em páginas.

Que tipo de fragmentação é encontrado em sistemas com paginação?

Na paginação, uma página lógica pode ser carregada em qualquer página física que esteja livre. Dessa forma, não existe fragmentação externa. Como a unidade de alocação é a página, um processo sempre ocupa um número inteiro de páginas físicas, introduzindo assim uma fragmentação interna.

Quais são os tipos de fragmentação?

Existem dois tipos de fragmentação, a fragmentação interna e a fragmentação externa.

O que é fragmentação do sistema quais os tipos e como ocorre?

A fragmentação interna ocorre quando a memória é dividida em partições de tamanho fixo. A fragmentação externa ocorre quando a memória é dividida em partições de tamanho variável com base no tamanho dos processos. A diferença entre a memória alocada e o espaço necessário ou memória é chamada de fragmentação interna.

Toplist

Última postagem

Tag