Gerenciamento de Mem�ria
Os t�picos a serem examinados podem ser encontrados nos seguintes cap�tulos de livros:
1. Introdu��oO gerenciamento de mem�ria, em conjunto com o gerenciamento de processos, forma o que se pode chamar de cora��o de um sistema operacional. Sua import�ncia reside fundamentalmente no fato do processador executar instru��es trazidas da mem�ria, sobre dados trazidos da mem�ria e guardando resultados na mem�ria. Assim, passa a ser crucial o gerenciamento de como a mem�ria estar� ocupada e como as informa��es nela ser�o reconhecidas pelo processador. Isso se torna ainda mais cr�tico se considerarmos que a mem�ria n�o � apenas o conjunto de bytes dispon�veis na chamada RAM do computador. Existem, na realidade, cinco diferentes n�veis de mem�ria, diferindo em tamanho, custo e velocidade, que s�o:
O gerenciamento de mem�ria se ocupa da mem�ria principal e das suas intera��es com cache e mem�ria secund�ria. O gerenciamento dos registradores e de boa parte da cache � feito pelo compilador, que ao gerar o execut�vel j� determina como os registradores ser�o ocupados e como a cache pode ser ocupada para acelerar o processamento. J� o gerenciamento das bibliotecas � feito pelo pr�prio usu�rio (ou administrador) do sistema, enquanto boa parte do gerenciamento do disco � feito pelo sistema de arquivos, que foi o tema do cap�tulo anterior. Desse modo, o gerenciamento de mem�ria se ocupa fundamentalmente do controle de quais dados v�o para a mem�ria, de que forma s�o armazenados nela e como podem ser acessados. Isso envolve atividades de endere�amento, em que se mapeia endere�os de disco para endere�os de mem�ria, de aloca��o, em que se determina quais espa�os ser�o ocupados por quem, e de mem�ria virtual, em que se amplia o conceito de mem�ria principal para um tamanho infinito. Trataremos cada um desses pontos a seguir, fechando o cap�tulo com um estudo de como caracter�sticas de gerenciamento de mem�ria e processos influencia no desempenho de um sistema. 2. Endere�amentoO problema de endere�amento surge quando se percebe que os endere�os ocupados por um programa no disco n�o correspondem aos que ele ocupar� na mem�ria. Isso fica ainda pior quando se examina o c�digo do programa, em que aparecem instru��es do tipo JMP 6000H, em que a possi��o 6000H se refere a um dado deslocamento a partir da origem do programa. Esse endere�o 6000H possivelmente n�o se refere ao endere�o 6000H da mem�ria. Esses diferentes conjuntos de endere�os recebem os nomes de espa�os de endere�os l�gicos, no disco, e endere�os f�sicos, na mem�ria. O problema de endere�amento passa a ser, portanto, determinar uma estrat�gia de convers�o entre endere�os l�gicos e endere�os f�sicos. Essa transforma��o deve ser feita de forma que a execu��o do programa seja efetivada com sucesso ao carregar-se o mesmo na mem�ria. As estrat�gias para efetuar esse mapeamento s�o:
3. Aloca��oTendo definido o m�todo de convers�o entre endere�os l�gicos e f�sicos, � preciso tratar algo que ocorre momentos antes de se carregar um arquivo ou programa na mem�ria (observem que daqui por diante chamaremos programas e arquivos indistintamente como sendo segmentos). Para que se saiba o endere�o base de um segmento � preciso que se defina em que lugar da mem�ria ele ser� alocado. Essa aloca��o deve ocorrer sob regras bastante bem definidas para que n�o ocorram problemas de interfer�ncia entre os processos. Existem duas estruturas b�sicas de aloca��o de mem�ria, que s�o em espa�os cont�guos e em blocos, descritas a seguir:
O uso de mem�ria alocada em blocos melhora significativamente o desempenho da mem�ria. Entretanto ela n�o resolve o problema de que se um segmento ocupa mais p�ginas do que as que est�o livres, ent�o ele n�o pode ser colocado para executar. 4. Mem�ria VirtualA solu��o para a aloca��o de segmentos maiores do que o espa�o dispon�vel na mem�ria (ou at� mesmo maior que ela toda) veio com um dos
conceitos mais importantes de otimiza��o de programas e sistemas, que � o Princ�pio da Localidade. Este princ�pio diz que os endere�os de mem�ria n�o t�m probabilidade igual de acesso, sendo mais prov�vel que ap�s executar uma instru��o da p�gina x, que acesse um dado da p�gina y, � muito mais prov�vel que a pr�xima instru��o tamb�m esteja na p�gina x e tamb�m acesse dados na p�gina y.
Al�m desses algoritmos diversos outros foram propostos. Alguns trabalhando com o conceito de que cada processo teria n�mero fixo de p�ginas, quando a p�gina a ser retirada seria sempre do processo que precisa de uma nova p�gina. Outros com o conceito de tempo fixo entre faltas de p�ginas, em que o n�mero de p�ginas de cada processo � variado para que o intervalo entre duas faltas consecutivas seja mantido constante. 5. DesempenhoO uso de mem�ria virtual permite que mais segmentos sejam carregados na mem�ria por vez, o que permite um aumento no n�mero de processos executando. A partir disso � interessante perceber algumas situa��es que afetam o desempenho do sistema. Antes por�m � preciso definir alguns conceitos b�sicos:
Considerando esses aspectos, temos que:
Assim, temos algumas diretrizes para avaliar o desempenho de um sistema. Basta verificar taxas de ocupa��o da CPU, n�mero de faltas de p�ginas (ou por quanto tempo o sistema fica ocupado realizando pagina��o), taxa de ocupa��o dos dispositivos de E/S, etc. 6. Vis�o global do sistemaAgora que terminamos a an�lise individual de cada um dos mecanismos do SO podemos ter fazer uma avalia��o de seu funcionamento global. Tomaremos como exemplo a ocorr�ncia de uma falta de p�gina e das a��es decorrentes dela. Na ocorr�ncia de uma falta de p�gina, identificada pelo gerenciamento de mem�ria, � necess�rio:
Disso percebe-se que existe muita intera��o entre os v�rios mecanismos do SO, o que apenas � poss�vel de ser feito eficientemente se forem implementados modularmente, na forma de {\em threads}, por exemplo. Quais os benefícios oferecidos pela técnica de memória virtual?R: Os principais benefícios da técnica de memória virtual são possibilitar que programas e dados sejam armazenados independente do tamanho da memória principal, permitir um número maior de processos compartilhando a memória principal e minimizar o problema da fragmentação.
O que é e como funciona o mapeamento em relação a memória virtual?Esse mecanismo, conhecido por mapeamento, permite traduzir um endereço localizado no espaço virtual para um associado no espaço real. Como conseqüência do mapeamento, um programa não mais precisa estar necessariamente em endereços contíguos na memória principal para ser executado.
Como mapear endereços virtuais para endereços físicos?O mapeamento de tempo de execução entre o endereço virtual e o endereço físico é feito por um dispositivo de hardware conhecido como MMU. No gerenciamento de memória, o sistema operacional tratará dos processos e moverá os processos entre o disco e a memória para execução.
Quanto ao Page Fault Assinale a alternativa correta?Questão 9/10 Quanto ao page-fault, assinale a alternativa correta. A Só ocorre em sistemas monoprogramáveis. B Ocorre sempre que o processo referencia um endereço de memória virtual e a página que contém o endereço referenciado não está na memória principal. Você acertou!
|