Sistemas Operacionais
Ensaios: Sistemas Operacionais. Pesquise 862.000+ trabalhos acadêmicosPor: womarques • 6/5/2014 • 1.887 Palavras (8 Páginas) • 483 Visualizações
Gerenciamento de Memória
A memória é um recurso importante que deve ser gerenciado com muito cuidado. Apesar de atualmente os computadores pessoais possuírem milhares de vezes mais memória do que o IBM 7094 (o maior computador do mundo no início dos anos 60), os programas crescem muito mais rapidamente do que as memórias.
A maioria dos computadores utiliza uma hierarquia de memórias, que combina: uma pequena quantidade de memória cachê, volátil, muito rápida e de custo alto; uma grande principal (RAM), volátil, com centenas de megabytes, de velocidade e custos médios; uma memória secundária, constituída de armazenamento não volátil em disco, com dezenas de centenas de gigabytes, velocidade e custo baixos. Cabe ao sistema operacional coordenar a utilização dessas memórias.
A parte do sistema operacional que gerencia a hierarquia de memórias é denominado gerenciador de memória. Sua função é manter o controle das partes da memória que estão em uso e das partes que não estão em uso, alocando memória aos processos quando eles precisam e liberando memória quando esses processos terminam, além de gerenciar a troca de processos (swapping) entre memória e o disco quando a memória principal não é suficiente para conter todos os processos.
8.1 Gerenciamento Básico de Memória
Na monoprogramação não existia troca de processos ou paginação, a memória é compartilhada entre o programa e o sistema operacional e somente um programa é executado por vez. Três variações desse esquema são mostradas na figura 8.1.
Figura 8.1 – Variações na organização da memória
Faculdade de Tecnologia de Lins
No primeiro modelo o sistema operacional pode estar na base do espaço de endereçamento, em RAM (memória de acesso aleatório) ou estar no topo do espaço de endereçamento, em ROM (memória apenas de leitura), conforme segundo esquema. E um terceiro modelo onde os drivers de dispositivos podem estar no topo do espaço de endereçamento, em ROM, e o restante do sistema mais embaixo, em RAM.
O primeiro modelo foi inicialmente empregado em computadores de grande porte e minicomputadores, mas praticamente não é mais usado. O segundo modelo é utilizado em alguns computadores de mão (palmtop) e em sistemas embarcados. O terceiro modelo fez parte dos primeiros computadores pessoais (por exemplo, com o sistema MS-DOS), nos quais a parte do sistema contida em ROM é denominado BIOS (basic input output system - sistema básico de E/S).
Nestes sistemas, somente um processo pode ser executado a cada instante. Quando o usuário teclava um comando, o sistema operacional carregava o programa solicitado do disco na memória e o executava. No término do processo, o sistema operacional disponibilizava novamente o prompt esperando por novo comando.
A monoprogramação é usada raramente hoje em dia, a não ser em sistemas embarcados simples. A maioria dos sistemas modernos permite que múltiplos processos estejam em execução simultânea. A maneira mais comum de realizar a multiprogramação consiste em simplesmente dividr a memória em n partições de tamanhos diferentes.
Ao chegar, um job pode ser colocado em uma fila de entrada associada à menor partição, grande o suficiente para armazená-lo. Como o tamanho das partições é fixo nesse esquema, todo o espaço de uma partição não usado pelo job é perdido. Este desperdício de memória é chamado de fragmentação interna (espaço de memória perdido dentro da área alocada ao processo).
Por outro lado, imagine que exista duas partições livres, uma de 25 e outra de 100 Kbytes. Nesse instante é criado um processo de 110 Kbytes que não poderá ser carregado em memória pela forma como ela é gerenciada. Este problema ocasiona o que chamamos de fragmentação externa (memória perdida fora da área ocupada por um processo).
A figura 8.2 apresenta esse sistema de partições fixas.
Figura 8.2 – Partições fixas de memória com múltiplas filas e fila única
Faculdade de Tecnologia de Lins
A desvantagem da ordenação em filas separadas dos jobs que estão chegando torna-se evidente quando a fila para uma grande partição está vazia, mas a fila para uma pequena partição está cheia. Nesse caso jobs pequenos têm de esperar pela liberação de memória, embora exista muita memória disponível.
Uma organização alternativa é manter uma única fila, conforme figura 8.2. Nesse caso, sempre que uma partição se torna disponível, o job mais próximo ao início da fila e que caiba nessa partição pode ser carregado e executado. No entanto, esta estratégia pode desperdiçar muito espaço ao armazenar um job pequeno em uma partição grande.
Esse sistema com partições fixas foi usado durante muitos anos pelo OS/360 em computadores IBM de grande porte. Foi denominado MFT (multiprograming with a fixed number of tasks - multiprogramação com número fixo de tarefas). Atualmente, praticamente nenhum sistema operacional suporta esse modelo.
8.2 Multiprogramação com Partições Variáveis
Em sistemas de tempo compartilhado, às vezes, não há memória principal suficiente para conter todos os processos ativos, de modo que os excedentes devem ser mantidos em disco e trazidos dinamicamente para a memória a fim de serem executados.
Existem dois métodos que podem ser usados para o gerenciamento de memória, a estratégia mais simples denominada troca de processos (swapping), consiste em trazer totalmente cada processo para a memória, executá-lo durante certo tempo e então devolvê-lo ao disco. O outro método é denominado memória virtual, permite que programas possam ser executados mesmo que estejam parcialmente carregados na memória principal.
O funcionamento de um sistema de troca de processos é ilustrado na figura 8.3, existem duas formas de swapping: swap in - trazer um processo do disco para a memória; e swap out - executá-lo durante um intervalo de tempo e depois devolvê-lo ao disco. Inicialmente, somente o processo A está na memória. Em seguida, os processos B e C são criados ou trazidos do disco, depois o processo A é devolvido ao disco. Então, o processo D entra na memória e em seguida o processo B é retirado. Por fim, o processo A é novamente trazido do disco para a memória.
A flexibilidade em não estar amarrada a um número fixo de partições, que podem ser muito grandes ou pequenas, melhora a utilização da memória. Entretanto, complica a alocação e a liberação de memória e o gerenciamento dessas trocas.
Um ponto importante
...