Gerência de Memória RAM by Welton Rodrigues on Prezi
Gerência de Memória RAM
Transcript of Gerência de Memória RAM
Os sistemas operacionais possuem uma hierarquia de memórias, eles combinam memórias voláteis e não voláteis para um melhor desenvolvimento da máquina. Cabe ao SO gerenciar e organizar o uso destas memórias, tornando-as mais eficientes. Este processo ocorre através do gerenciamento de memória...
A memória RAM é uma tecnologia que permite o acesso aos arquivos armazenados em um computador, quando "solicitado". Porém ela não mantem conteúdos de forma permanente, ou seja, quando a máquina é desligada da fonte de alimentação os documentos são perdidos...
Prof. Welton Rodrigues
Turma A1/ANS
UNIDADE DE GERÊNCIA DE MEMÓRIA (MMU)
Entre as diversas responsabilidades desta coordenação, estão: alocar memória quando necessário para o programa em execução, liberar memória quando os processos forem encerrados e administrar memórias que estão sendo usadas e as que não estão.
QUAL A IMPORTÂNCIA PARA A MULTIPROGRAMAÇÃO?
Através da multiprogramação é possível manter vários processos em memória, sendo executados simultaneamente. Assim a memória precisa ser alocada adequadamente para permitir um maior número de processos e assim um maior desenvolvimento, este trabalho é feito pelo gerenciador de memória. Por isso que este gerenciamento é tão importante para a multiprogramação, pois sem ele não conseguiríamos faze-la, seria impossível trabalhar com um único processo de uma vez, isto causaria uma sobrecarga devido à necessidade de chavear de um processo para outro.
MEMÓRIA LÓGICA E MEMÓRIA FÍSICA (CONCEITO E DIFERENÇA)
Memória lógica é aquela que o processo enxerga, ou seja, aquela que o processo consegue endereçar e acessar. É implementada pelo hardware, sendo que cada processo possui uma memória lógica única, independentemente da memória de outro processo. Os endereços manipulados pelos processos são lógicos
Memória física é aquela que é efetivamente acessada pelo circuito integrado da memória, a parte eletrônica do computador.
O espaço de endereço lógico de um processo é gerado por todo endereço lógico que este processo pode gerar e existe um espaço deste para cada processo. Já o espaço de endereçamento físico é formado por todos os endereços que os circuitos de memória aceitam.
A unidade de gerência de memória é o componente de hardware que é responsável basicamente por transformar endereços lógicos (memória virtual) em endereços físicos (memória RAM).
Essa "transformação", normalmente chamada de tradução ou mapeamento de endereço lógico para endereço físico, utiliza uma cache chamada Translation Lookaside Buffer (TBL) para fazer essa tradução, pode se dizer que é uma tabela de correspondência de endereços virtuais para endereços físicos.
As partições fixas são uma maneira de dividir o espaço da memória, onde as partições são previamente definidas e não podem sofrer alterações. Todas as partições podem ter o mesmo tamanho, ou podem diferir entre si, mas serão sempre fixas.
As partições fixas são uma das formas mais simples de gerência de memória, sendo essa sua maior vantagem. Esse método era bastante usado no OS/ 360, um sistema operacional da IBM das décadas de 60/70.
Mas mesmo sua simplicidade não compensa suas diversas desvantagens, sendo assim, atualmente esse método não é muito usado.
O método funciona da seguinte forma: os Jobs são enfileirados, e vão para a menor partição capaz de armazená-los, e como essas partições são fixas, o espaço que o job não utiliza é desperdiçado.
Essa é a maior desvantagem das partições fixas, a chamada fragmentação interna, pois como cada partição aloca apenas um processo por vez, se aquele processo for menor que a partição, o que sobrar após o término do processo não poderá ser reaproveitado.
Outra desvantagem é que, se o processo for maior que as partições existentes no sistema, ele será rejeitado pela MMU e não será carregado na memória, o que chamamos de fragmentação externa, "memória perdida dentro da área ocupada pelo processo".
Nesse esquema, a quantidade e o tamanho das partições podem variar dinamicamente, sendo adaptados para as necessidades dos processos do sistema.
Uma das vantagens desse método, é a melhora na utilização da memória, pois como as partições se adaptam aos processos, não há mais o problema de fragmentação interna, pois o desperdício de memória das partições fixas não está tão presente nas partições variáveis.
Apesar disso, há desvantagens. Nas partições variáveis, a gerência dos espaços vazios entre os processos são um problema, assim como a alocação e a liberação de partições. Há a possibilidade de se formarem lacunas na memória, causados pelo modo dessa organização, que individualmente não são grandes o suficiente para alocar um processo, a chamada fragmentação externa. Um modo de consertar isso é mover os processos para a parte mais baixa da memória (compactação de memória), mas essa reorganização tem uma desvantagem: gasta muito tempo de processamento, portanto não é indicado que seja feita constantemente.
crescer ao longo do tempo, e se não houver uma partição adjacente ou maior para que essa expansão seja possível, o swapping deverá ser realizado. Se isso também não for possível, o processo deverá esperar ou ser removido.
MEMÓRIA VIRTUAL/ SWAPPING
A memória virtual é uma técnica utilizada para permitir que vários processos sejam executados, mas não necessariamente precisem estar armazenados por inteiro na memória física. Essa técnica consiste em combinar a memória principal com a secundária, dando ao usuário uma ideia de existir uma memória maior que a principal.
A maior vantagem da memória virtual é que os programas a serem executados podem ser maiores do que a memória física, porém aumenta a utilização da CPU e também há um aumento no throughput (transferência de dados).
é a troca do conteúdo de um
determinado espaço de memória,
a gerência de memória reserva uma área
do disco para que essa troca possa ocorrer.
Sempre que um programa precisa ser executado e não há espaço na memória principal este é copiado para a área reservada do disco (chamado de swap-out), o processo fica alocado lá temporariamente suspenso até sofrer uma swap-in, que é quando ele é copiado novamente para a memória principal e assim sua execução será retomada. Quando não é possível manter todos os processos simultaneamente na memória é vantajoso usar o swapping, porém
a queda de desempenho do
sistema é grande.
Paginação é um processo de virtualização da memória que divide a memória física em pequenos blocos de tamanho fixo. Ela funciona como uma memória virtual para auxiliar na falta da memória real.
A memória física é dividida em partes de tamanho fixo, chamadas de blocos (frames).
A memória virtual é dividida em partes do mesmo tamanho, chamadas páginas.
O Tamanho da página é definido pelo hardware.
Quando um processo é endereçado para a memória, ele ocupa um espaço inteiro. Isto faz com que a memória livre fique indisponível para a utilização. Esse problema pode ser resolvido com a paginação, que faz com que o endereçamento de um processo não precise ocupar um espaço inteiro na memória.
Com a paginação não há fragmentação externa, mas pode haver alguma fragmentação interna caso o último frame alocado não estiver completo.
Quando usadas páginas grandes, a leitura do disco é mais eficiente;
Faz com que o endereçamento de um processo não precise ocupar um espaço inteiro na memória;
Possibilita de compartilhamento de código;
Reduz quantidade de memória utilizada por processo;
Quando usadas páginas grandes, a fragmentação interna é maior
Necessita conhecimento de quais páginas estão na memória secundária e quais páginas estão na memória principal;
Alto custo de processamento de memória;
Segmentar, é dividir um processo que está sendo realizado em pequenas partes, esta divisão temporária permite que vários dados sejam enviados e processados de maneira visualmente "simultânea", pois será possível que arquivos sejam enviados de modo alternado pela rede.
A segmentação é uma forma de
gerencia de memória que permite que o programa seja organizado em vários segmentos que possuem diferentes tamanhos e que não precisam ter necessariamente uma "ordem de segmentos". Cada segmento possui um nome e tamanho, sendo que estes nomes, para facilitar a implementação, costumam ser números e que estes segmentos devem ser gravados de maneira contínua.
Cada posição da memória é organizada dentro da memória lógica por um segmento e um deslocamento dentro deste, enquanto um programa toma carga, cada um recebe um número de segmento específico. É necessário mapear o endereço lógico (segmento/deslocamento), sendo este trabalho feito por uma tabela de segmentos.
Segmentos apresentam características bem definidas, o que ajuda com a questão da segurança e proteção de programas, já que muitos arquivos podem ser definidos como somente leitura, e neste caso, o hardware de mapeamento irá sempre verificar se há mudanças sendo feitas.
Uma questão muito importante é a fragmentação externa destes segmentos, a contínua ocupação e liberação destes segmentos de diferentes tamanhos, forma algumas lacunas de espaço inutilizado, pois um segmento completo precisaria de mais espaço, neste então, quanto menor for o segmento, menos espaço será perdido.
Ao contrário da segmentação, a segmentação paginada não tem problemas com desperdício de espaço, pois não é necessário que suas partes sejam contínuas, já que a tabela de endereços, não contém o endereço do segmento na tabela, mas sim o endereço da tabela onde se encontram estas páginas, também ao contrário dos segmentos, as páginas possuem sempre o mesmo tamanho
O endereço lógico é inicialmente dividido em duas partes: um número de página lógica (usado como índice no acesso à tabela de páginas, de forma a obter o número da página física correspondente) e um deslocamento dentro da página. Não existe fragmentação externa, porém existe fragmentação interna (Ex: um programa que ocupe 201kb, o tamanho de página é de 4 Kb, serão alocadas 51 páginas resultando uma fragmentação interna de 3kb).
Além da localização a tabela de páginas armazena
também o bit de validade, (1 ou TRUE) se a página está na memória (0 ou FALSE) se a página não está na memória. E a transferência das páginas de processo podem ser transferidas para a memória por demanda, levando apenas
o que é necessário para a execução do programa ou por paginação antecipada, onde o sistema tenta prever
as páginas que serão necessárias à execução
QUE COMPONENTE INFORMA O STATUS DA MEMÓRIA RAM EM SISTEMAS WINDOWS?
O Gerenciador de tarefas informa sobre o status de utilização da memória RAM no Windows. Ele é mostrado com o atalho "ctrl + shift + esc" do teclado.
QUE COMANDO INFORMA O STATUS DA MEMÓRIA RAM EM SISTEMAS LINUX?
O comando "free" é o que informa sobre o status de utilização de memória RAM no linux. O comando é: free -m –t.
A gerência de memória é fundamental para o funcionamento de um sistema operacional. Os programas básicos operacionais ficam armazenados na memória RAM, porém é necessário uma memória não volátil para armazenar os arquivos, mesmo quando a máquina esteja desligada. A gerencia de memória é o que administra essas memórias, organizando-as para que haja um bom funcionamento do sistema.
Uma das maneiras de se gerenciar a memória, é através das partições fixas e variáveis. A memória é dividida em partições, permitindo assim, que enquanto um processo não está sendo executado, outro possa utilizar a CPU em seu lugar.
Outro ponto a ser destacado, é que tanto na segmentação como na segmentação paginada quase sempre vai ocorrer desperdício de espaço, mas a paginação ainda parece ser a melhor maneira, já que o desperdício é menor.
ANDRADE, Marcos. Sistemas Operacionais. Disponível em: <http://sapucaia.ifsul.edu.br/professores/fabio/2I-2K/2o%20trim/Sistemas%20Operacionais%20-%20Gerencia%20de%20memoria%20-%20pag%2056.pdf> Acesso em 11. Ago. 2013
COSTA, Ricardo. 10 comandos que todo usuário Linux deve saber. Disponível em: <http://www.linuxdescomplicado.com.br/2011/05/10-comandos-que-todo-usuario-linux-deve.html>Acesso em 7. Ago. 2013
LAINE, Jean. Gerencia de memória. Disponível em: <http://regulus.pcs.usp.br/~jean/so/AULA%2013%20-%20Ger%EAncia%20de%20Mem%F3ria.pdf> Acesso em: 3. Ago. 2013
MAZIERO, Carlos. Sistemas Operacionais V - Gerência de Memória. Disponível em: <http://pt.scribd.com/doc/13291030/6/Particoes-%EF%AC%81xas> Acesso em: 1. Ago. 2013
OLIVEIRA, Rômulo; CARISSIMI, Alexandre; TOSCANI, Simão. Sistemas Operacionais. Porto Alegre: Editora Bookman, 2008
PEREIRA, Tancredo. Gerência de memória: Memória lógica e memória física. Disponível em: <http://pt.scribd.com/doc/55117598/SO-Gerencia-Memoria> Acesso em 4.Ago.3013
ROMAN, Norton; MORANDINI, Marcelo; UEYAMA, Jó. Gerenciamento de memória. Disponível em: <http://wiki.icmc.usp.br/images/0/04/Aula09.pdf> Acesso em 9. Ago. 2013
SILVA, Fernando. Sistemas de Operação. Disponível em: <http://www.dcc.fc.up.pt/~ines/aulas/0910/SO/memoria-short.pdf>Acesso em 1. Ago. 2013
S.A. Gerenciamento de memória – Métodos – Partições Fixas e Variáveis. Disponível em: <http://computersciencestudies.wordpress.com/2011/03/08/gerenciamento-memoria-particoes/> Acesso em: 3. Ago. 2013
S.A. Gerenciamento de memória. Disponível em: <http://www.slideshare.net/audineisilva1/gerenciamento-de-memoria> Acesso em: 2. Ago. 2013
S.A. Swapping x Paginação x Segmentação x Memória Virtual. Disponível em: <http://escalonamentoprocessos.blogspot.com.br/2010/12/swapping-x-paginacao-x-segmentacao-x.html> Acesso em 9. Ago. 2013
S.A. Swapping. Disponível em: <http://www.jvasconcellos.com.br/unijorge/wp-content/uploads/2011/04/ger_memo_swapping-2.pdf> Acesso em 9.Ago.2013
SOUZA, Roberto. Multiprogramação com partições fixas. Disponível em: <http://pt.scribd.com/doc/30848130/Multiprogramacao-com-Particoes-Fixas> Acesso em 1.Ago.2013
ZAGARI, Eduardo. Sistemas operacionais, gerência de memória: Paginação e Segmentação. Disponível em: <http://www.las.ic.unicamp.br/edmar/PUC/2006/SO/SO-Aula6.pdf>. Acesso em: 7 Ago. 2013
Memória RAM é um sistema de
armazenamento de dados, a memória
RAM é volátil, ou seja, não grava de
modo permanente os dados nela contidos.
Quando a alimentação do sistema é
cortada, tudo que foi guardado é perdido.
Memória Principal ou Primaria (RAM)
Normalmente, a ROM é utilizada para armazenar firmwares, pequenos softwares que funcionam apenas no hardware para o qual foram desenvolvidos e que controlam as funções mais básicas do dispositivo.