28
SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis, abundantes e de baixo custo. Como o processador somente executa instruções localizadas na memória principal, o sistema operacional deve sempre transferir programas da memória secundária para a memória principal, antes de serem executados.

SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

Embed Size (px)

Citation preview

Page 1: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memória

Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não-voláteis, abundantes e de baixo custo. Como o processador somente executa instruções localizadas na memória principal, o sistema operacional deve sempre transferir programas da memória secundária para a memória principal, antes de serem executados.

Page 2: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memória

A gerência de memória deve tentar manter na memória principal o maior número de processos residentes, permitindo maximizar o compartilhamento do processador e demais recursos computacionais. Mesmo na ausência de espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados.

Page 3: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memória

Isso é possível por meio da transferência temporária de processos residentes na memória principal para a memória secundária, liberando espaço para novos processos. Esse mecanismo é conhecido como swappping e será detalhado posteriormente.

Page 4: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memória

Em um ambiente de multiprogramação, o sistema operacional deve proteger as áreas de memória ocupadas por cada processo, além da área onde reside o próprio sistema. Caso um programa tente realizar algum acesso indevido à memória, o sistema deve impedi-lo de alguma forma.

Page 5: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação contígua simplesNa alocação contígua simples a memória principal é subdividida em duas áreas: uma para o sistema operacional e outra para o programa do usuário. Dessa forma, o programador deve desenvolver suas aplicações, preocupado apenas em não ultrapassar o espaço de memória disponível, ou seja, a diferença entre o tamanho total da memória principal e a área ocupada pelo sistema operacional.

Page 6: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação contígua simplesEsse tipo de organização foi implementado nos primeiros sistemas operacionais, porém ainda está presente em alguns sistemas monoprogramáveis.

Page 7: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação contígua simplesPara proteger o sistema do acesso de usuários, que pode ser intencional ou não, alguns sistemas implementam proteção por meio de um registrador que delimita as áreas do sistema operacional e do usuário. Dessa forma, sempre que um programa faz referência a um endereço na memória, o sistema verifica se o endereço está dentro dos limites permitidos.

Page 8: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação contígua simplesApesar da fácil implementação e do código reduzido, a locação contígua simples não permite a utilização eficiente dos recursos computacionais, pois apenas um usuário pode dispor desses recursos. Em relação à memória principal, caso o programa do usuário não a preencha totalmente, existirá um espaço de memória livre, sem utilização.

Page 9: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionadaNos sistemas monoprogramáveis, o processador permanece grande parte do tempo ocioso e a memória principal é subutilizada. Os sistemas multiprogramáveis já são muito mais eficientes no uso do processador, necessitando assim, que diversos programas estejam, ao mesmo tempo, na memória principal e que novas formas de gerência da memória sejam implementadas.

Page 10: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaNa alocação particionada estática ou fixa, a memória é dividida em pedaços de tamanho fixo, chamados partições. O tamanho das partições deve ser estabelecido na fase de iniciação do sistema, e definido em função do tamanho dos programas que executarão no ambiente. Sempre que for necessária a alteração do tamanho de uma partição, o sistema deverá ser desativado e reinicializado com uma nova configuração.

Page 11: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaEsse tipo de gerência de memória foi utilizado nos primeiros sistemas multiprogramáveis.

Page 12: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaInicialmente, os programas só podiam ser carregados e executados em apenas uma partição específica, mesmo se outras estivessem disponíveis. Essa limitação se devia aos compiladores e montadores que geravam apenas código absoluto. No código absoluto, todas as referências a endereços no programa são posições físicas na memória principal, ou seja, o programa só poderia ser carregado, a partir do endereço de memória especificada no seu código próprio.

Page 13: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaSe, por exemplo, os programas A e B estivessem sendo executados e a terceira partição estivesse livre, os programas C e E não poderiam ser processados.

Page 14: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaCom a evolução dos compiladores, montadores, linkers e loaders, o código gerado deixou de ser absoluto e passou a ser relocável. No código relocável, todas as referências a endereços no programa são relativas ao início do código, e não, a endereços físicos de memória. Dessa forma, os programas puderam ser executados a partir de qualquer partição.

Page 15: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaEsse tipo de gerência de memória é denominado alocação particionada estática relocável.

Page 16: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaPara manter o controle sobre quais partições estão alocadas, a gerência de memória mantém uma tabela com o endereço inicial de cada partição, seu tamanho e a informação de seu uso.

Page 17: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaNesse esquema de alocação de memória, a proteção baseia-se em dois registradores que indicam o limite inferior e superior de partição, onde o programa está sendo executado.

Page 18: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada estáticaTanto nos sistemas de alocação absoluta quanto nos de alocação relocável, os programas, normalmente, não preenchem totalmente as partições onde são carregados. Esse tipo de problema, decorrente da alocação fixa das partições, é conhecido como fragmentação interna.

Page 19: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada dinâmicaNa alocação particionada dinâmica ou variável, cada programa utiliza um espaço necessário, tornando essa área sua partição. Como os programas utilizam apenas o espaço de que necessitam, o problema da fragmentação interna não ocorre no esquema de alocação particionada dinâmica.

Page 20: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada dinâmicaEm princípio, o problema da fragmentação interna está resolvido, porém, nesse caso, existe um problema que não é tão óbvio quanto no esquema anterior. Um tipo diferente de fragmentação começará a ocorrer, quando os programas forem terminando e deixando espaços cada vez menores na memória, não permitindo o ingresso de novos programas.

Page 21: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada dinâmicaEsse tipo de problema é chamado fragmentação externa.

Page 22: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada dinâmicaExistem duas soluções para o problema da fragmentação externa da memória principal. Na primeira solução, conforme os programas terminam, apenas os espaços livres adjacentes são reunidos, produzindo áreas livres de tamanho maior.

Page 23: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação particionada dinâmicaA segunda solução para o problema envolve a relocação de todas as partições ocupadas, eliminando todos os espaços entre elas e criando uma única área livre contígua.

Page 24: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação no LinuxO Linux dá suporte a diversos mecanismos para alocação de memória. O principal deles é denominado alocador de páginas, que opera utilizando o conhecido algoritmo companheiro. A ideia básica para a alocação de um bloco de memória é a seguinte: inicialmente, a memória consiste em uma divisão contígua única, com 64 páginas.

Page 25: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação no LinuxQuando uma requisição de memória é feita, a quantidade requerida é primeiro arredondada para uma potência de 2 – por exemplo oito páginas.

Page 26: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação no LinuxA memória toda é, então, dividida pela metade. Visto que cada uma dessas partes ainda é muito grande, a parte mais abaixo é dividida na metade novamente e de novo dividida. Nesse ponto, temos um bloco de tamanho correto que é alocado para o chamador.

Page 27: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Gerência de memóriaAlocação no LinuxEsse algoritmo gera uma considerável fragmentação interna pois, se você deseja um bloco de 65 páginas, você tem de solicitar e obter um bloco de 128 páginas. Para amenizar esse problema, o Linux tem uma segunda alocação de memória, denominada alocador de fatias, que corta em fatias ainda menores e as gerencia separadamente.

Page 28: SISTEMAS OPERACIONAIS I Gerência de memória Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não- voláteis,

SISTEMAS OPERACIONAIS I

Exercicios:

1) Qual a finalidade da gerência de memória?2) Defina alocação contigua simples, de memória.3) Diferencie alocação particionada dinâmica e

estática.4) Descreva o funcionamento da gerência de memória

no Linux.