O Sistema Operacional
Por: KrausKaue • 7/6/2015 • Monografia • 2.074 Palavras (9 Páginas) • 188 Visualizações
Introdução
Gerenciar a memória é algo que o sistema operacional por si só gerencia tanto a memória física quanto a virtual, há distintos modos de gerenciar essa memória seja por paginação ou seja por segmentação, cada um usa uma estrutura para utilizar o recurso, cada sistema com sua limitação porem tanto Windows quanto Linux utiliza bem a gerencia para obter um ótimo desempenho seja retirando da memória física quando da virtual.
Passo 1
1
Gerenciamento de memória
Gerenciar a memória o Sistema Operacional que é responsável por cuidar de que modo vai ser, pode ser em uso, livre, pode alocar memória a processos quando precisa deslocar quando eles não precisar mais e gerenciar a troca dos processos entre memória principal e disco.
Maneira de gerenciar a memória:
Troca ou Paginação: É um método utilizado de movimentação da memória pro disco e vice-versa durante a execução dos processos, sem troca ou paginação é o caso mais simples.
Mapa de Bits: A memória é subdividida em unidades em um tamanho, a cada unidade é associada 1 bit que se for 0 indica que essa parte da memória está livre e se for 1 está ocupada, o tamanho deve ser escolhido com cuidado, a desvantagem é que quando um novo processo ocupa varias unidades de memória deve ser carregado na memória principal, ai o gerenciador percorre o mapa para encontrar N bits iguais a zero ,o que não é simples.
Listas encadeadas: Mantem uma lista encadeada de segmentos alocados e livres, sendo que cada segmento é um processo ou um buraco entre dois processos, a lista apresenta uma ordem de endereço e quando um processo termina ou é enviado para o disco, atualiza a lista de um por um, desde que ele não seja o primeiro e nem o ultimo da lista, apresenta cerca de dois segmentos, que podem ser buracos ou processos distintos, os buracos devem ser combinados num único bloco, para escolher o ponto em que deve ser carregado um processo recém-criado ou que veio do disco em meio de troca.
Utiliza alguns algoritmos assumindo que o gerenciador de memória saiba quanto espaço alocar:
- Primeiro encaixe: Percorre a fila até encontrar o primeiro espaço em que caiba o processo, é um algoritmo rápido.
- Próximo encaixe: o mesmo que o primeiro, só que ao invés de procurar sempre o início, procura a partir do último ponto em que encontrou, tem um desempenho próximo ao primeiro.
- Melhor encaixe: consiste em verificar toda a lista e procurar onde o espaço está mais próximo da necessidade do processo, é mais lento e desempenho pior que o primeiro.
- Pior ajuste: sempre procura o disponível, desempenho ruim.
Esses algoritmos podem ter sua velocidade aumentada pela manutenção de duas listas separadas, uma para processos e outra para buraco.
Quando temos duas listas separadas obtemos outro algoritmo o Ajuste rápido que consiste em manter listas separadas para alguns dos tamanhos comuns especificados, neste caso é extremamente rápido porem quando um processo termina a liberação do espaço é complicada porque tem que reagrupar e modificar o espaço na fila.
Espaço de troca (swap): Ocupa no disco pelos processos que estão guardados, pois foram retirados da memória por uma troca, os algoritmos para gerenciar o espaço alocado em disco para swap são os mesmo do gerenciamento de memória, a diferença é que alguns sistemas faz com que cada processa tenho no disco um espaço reservado para o mesmo e a na memória é constante essa mudança, porém como nos disco são blocos, a quantidade de espaço reservado para o processo no disco deverá ser múltipla do tamanho do bloco.
Memória Virtual
A primeira solução para programas grandes demais para a quantidade de memória é a overlays, o programa é subdivido em partes menores (overlays) que podiam ser rodadas separadas e quando um overlay termina a execução num outro podia ser carregado na mesma posição de memória utilizada no outro, o problema é a divisão do programa em overlays não é simples e só programador deve realizar.
Podemos alocar diversos processos na memória virtual, de forma que cada um pensa ter uma quantidade de memória que somadas ultrapassam a quantidade real de memória.
Técnicas utilizadas:
Paginação: Espaço virtual é o espaço de memória que pode ser referenciado por um programa qualquer em dado processador.
Em um computador sem memória virtual, o endereço virtual corresponde ao endereço efetivamente colocado no endereçamento da memória, quando o computador possui a virtual esse endereço é enviado para uma unidade de gerenciamento de memória, que corresponde a um chip ou um conjunto que translada esse endereço virtual em físico.
O espaço de endereço virtual é divido em unidades que chama-se paginas e os físico é divido em quadros de paginas, de mesmo tamanho das páginas, o gerenciador tem uma tabela que indica para cada página qual o quadro de página corresponde a ela.
A paginação fornece uma forma de se conseguir grandes espaços de endereçamento lineares em uma quantidade finita de memória.
Segmentação: Na segmentação temos um espaço bidimensional no sentido que é dividido em um certo número de segmentos, cada um com dado número de bytes, dessa forma um endereçamento é sempre expresso da forma (deslocamento), os diferentes segmentos são associados a diversos programas ou arquivos, de forma que os arquivos podem ser acessados como se fossem posições de memória, na segmentação os programadores tentam colocar entidades diferentes em segmentos diferentes para facilitar o compartilhamento de objetos entre processos distintos.
Lucas.
Gerência de memória
Memória (bytes) cada uma com um endereço próprio, a memória é usada para armazenar os diversos programas em execução, como os dados sobre a execução dos programas, na multiprogramação diversos processos são colocados na memória ao mesmo tempo para que o chaveamento entre eles seja o mais rápido, o SO deve compartilhar a memória de forma segura e eficiente usando os recursos disponíveis no hardware.
Memória Lógica e Física: memória lógica é a que o processo enxerga, ou seja é onde o processo acessa.
Unidade de gerencia de memória: gerência a memória para o SO convertendo/ mapeando endereços lógicos e físicos.
Partições fixas: é simples, reserva uma área de memória para o SO, o resto da memória é dividido em partições fixas de tamanhos diferentes.
Partições variáveis: as partições são ajustadas dinamicamente ás necessidades dos processos.
Swapping: é utilizada quando não dá para manter todos os processos simultaneamente na memória
Virtual
Paginação: acaba com a necessidade de colocar o programa em uma área contígua de memória.
Implementação: o controle dos quadros livres pode ser implementado através de um mapa de bits, de lista encadeada, tabela de páginas, através de registradores na memória principal,
Segmentação: a memória lógica geralmente é vista como uma coleção de segmentos de tamanho variável, quatro segmentos típicos são códigos, estáticos, dinâmicos e pilha.
Segmentação Paginada: fragmentação externa da segmentação.
...