Você está na página 1de 45

UNIVERSIDADE LURIO

FACULDADE DE ENGENHARIA
LICENCIATURA EM ENGENHARIA INFORMÁTICA
SISTEMA OPERATIVO
3º ANO
Maio, 2021

ALBERTO TEMBE (ATEMBE@UNILURIO.AC.MZ ), BELILO AMADEU


(BAMADEU@UNILURIO.AC.MZ ), ELIFIRIA BENE ( EBENE@UNILURIO.AC.MZ ),
EUNICE N’VAHE (ENVAHE@UNILURIO.AC.MZ), EUSTACIO CUATENA
(ECUATENA@UNILURIO.AC.MZ )
Gestão de Memória
Resumo
A Memoria é um recurso que precisa ser gerido com muito cuidado, pois
uma gestão ineficiente da memória pode influenciar a multprogramação. A
arquictetura dos computadores modernos foi baseada numa arquitectura
que exigia o carregamento completo do programa para memoria antes de se
iniciar a sua execução. Esse mecanismo mostrou-se muito ineficiente na
gestão de memória por parte do sistema operativo, com o intuito de garantir
a gestão eficiente da memória muitas técnicas foram implementas para
garantir uso eficiente da memória de tal forma que seja possível ter muitos
processos, carregados parcialmente para memoria.
Palavras-Chave: gestão de memória, página, hardware, sistema operativo,
processo, CPU.
Introdução
A seguir discutiremos várias formas de gerir a memória em que podemos observar
qual o papel da memória na multi-programação, como a memória real e virtual está
organizada, assim como os algoritimos de substituição de páginas em caso de haver
falta de uma páginas. Na gestão de memória, os algoritmos variam desde uma
abordagem primitiva da bare-machine até estratégias de paginação e segmentação.
Cada abordagem tem as suas próprias vantagens e desvantagens. A Seleção de um
método de gestão de memória para um sistema específico depende de muitos
factores, especialmente da concepção do hardware do sistema. Como veremos,
muitos algoritmos requerem suporte de hardware, embora os designs recentes
integraram de perto o hardware e o sistema operativo.
O trabalho tem como bjectivo geral, descrever as principais técnicas de gestão de
memória implementas pelos sistemas operativos modernos.
Gestão de Memória
Segundo (Silberschatz, Galvin, & Gagne, 2009), a memória
principal é uma grande variedade de palavras ou bytes, de
centenas de milhares a milhares de milhões. Cada palavra ou
byte tem o seu próprio endereço. A memória principal é um
repositório de acesso rápido dos dados partilhados pelo CPU e
dispositivos E/S.
Gestão de Memória
Segundo (Silberschatz, Galvin, & Gagne, 2009), o sistema operativo é
responsável pelas seguintes actividades relacionadas com gestão de
memória:
Manter um registo de que partes da memória estão actualmente a ser
utilizadas e por quem;
Decidir quais os processos (ou partes dos mesmos) e dados a entrar e
a sair de memória;
Atribuição e desalocação de espaço de memória conforme necessário.
Hierarquia
As restrições de concepção da memória de um computador podem ser resumidas em três
questões:
Quanto?
Com que rapidez?
Quanto custa?
Hierarquia
Existe uma relação entre as três características-chave de memória:
capacidade, tempo de acesso, e custo. Uma variedade de tecnologias são
utilizados para implementar sistemas de memória, e em todo este
espectro de tecnologias, as relações seguintes mantêm-se:
Tempo de acesso mais rápido, maior custo por bit;
Maior capacidade, menor custo por bit;
Maior capacidade, velocidade de acesso mais lenta.
Hierarquia
Hierarquia
É possível organizar os dados em toda a hierarquia de modo a que a percentagem de
acessos a cada nível sucessivamente inferior é substancialmente menor do que a de o nível
acima. O tipo de memória mais rápido, mais pequeno e mais caro consiste nos registos
internos para o processador.
Cada local na memória principal tem um endereço único, e a maioria das instruções da
máquina referem-se para um ou mais endereços de memória principais. A memória
principal é normalmente estendida com um de maior velocidade, menor cache.
A memória cache não é normalmente visível para o programador mas sim para o
processador. É um dispositivo para encenar o movimento de dados entre memória principal
e registos do processador para melhorar o desempenho.
Hierarquia
As formas de memória descritas são, tipicamente, voláteis.

A memória externa, não volátil, é também referida como memória


secundária ou memória auxiliar, que são utilizadas para armazenar
ficheiros de programas e de dados, e são normalmente visíveis para
o programador apenas em termos de ficheiros e registos.
Papel da gestão da memória em multi-programação:
Arquitectura de partições fixas
Para que a multprogramação exista, é necessário que vários programas
possam coexistir em memória primária. A forma mais simples de o fazer é
dividir a memória do computador em partições, carregando-se um
programa em cada uma delas;

O grau de multprogramação máximo é dado pelo número de partições


existentes.
Papel da gestão da memória em multi-programação:
Programas Recolocáveis
Inicialmente os programas eram compilados para uma determinada
partição, e somente nessa poderiam ser executados. Isso porque quer as
variáveis quer o código estavam associados a endereços que só faziam
sentido numa partição;

Em algumas situações, uma partição podia ter uma fila de programas a


espera de serem executados, enquanto outra estava vazia. Para resolver
esse problema tornaram-se os programas recolocáveis.
Papel da gestão da memória em multi-
programação: Programas Recolocáveis
A recolocação efectuada deste modo tem um custo elevado que se repete
sempre que o programa é carregado em memória. Uma evolução consistiu
em dotar os computadores de um registo base que era carregado com o
endereço físico do início da partição. Em tempo de execução, o hardware
somava o valor do registo base com o endereço proveniente do programa
para obter o endereço real.

Esse tipo de endereçamento, também chamado endereçamento baseado,


constitui já uma aproximação ao endereçamento virtual, pois conta com uma
ajuda do hardware para transformar os endereços.
Papel da gestão da memória em multi-
programação: Proteção
A existência de programas de vários utilizadores simultâneos
obriga a existência de mecanismos de proteção entre eles, para
impedir que um programa, que se esteja a executar numa
partição, possa aceder as zonas de memória de outra. Houve
varias tentativas para obviar alguns destes problemas usando
endereçamento real, mas apenas o endereçamento virtual
surgiu como resposta para estes problemas.
Papel da gestão da memória em multi-
programação: Arquitectura de partições variáveis
Devido a inflexibilidade imposta pelas partições fixas, era um importante
factor de perda de eficácia, que poderia ser resolvido mudando de forma
dinâmica, o número e a dimensão das partições em tempo de execução.

Ao colocar um segundo processo em execução, procede-se de maneira


semelhante, cria-se uma partição de memória de dimensão suficiente
para conter o seu espaço de endereçamento. Isto é o número de partição
poderá crescer ate se esgotar a memória (Marques, Ferreira, Ribeiro,
Veiga, & Rodrigues,2012, pp. 312-313).
Papel da gestão da memória em multi-programação:
Multprogramação com partições variáveis
Papel da gestão da memória em multi-
programação: Fragmentação
Para este método, quando um processo termina, o bloco de
memória onde estava sendo executado e liberado, e
normalmente assocado ao outro bloco livre que lhe seja
contiguo, o que pode permitir a execução de outro programa
que estivesse executável e não residente (Marques, Ferreira,
Ribeiro, Veiga, & Rodrigues, 2012).
Organização de memória real
Segundo (Marques, Ferreira, Ribeiro, Veiga, & Rodrigues, 2012), a gestão
de memória tem por objectio:
Gerir o espaço de endereçamento dos processos
Assegurar que cada processo dispõe da memória que precisa;
Garantir que cada processo só aceda a memória a que tem direito
(protecção);
Optimizar as transferências de informação em memórias organizadas
hierarquicamente.
Organização de memória real:
Endereçamento Real
Um endereço real refere-se sempre a memória primária, nunca a memória secundária.
Este método apresenta desvantagens como:
A dimensão dos programas é limitada pela dimensão da memória primária do computador;
Um programa só pode funcionar nos endereços físicos para onde foi escrito, ou gerado por
um compilador de uma linguagem de alto nível, não podendo ser executado directamente
noutra máquina com um mapa de memória diferente ou mesmo noutro endereço da
mesma máquina;
A multiplicação fica seriamente dificultada. Como os endereços físicos onde o programa se
vai executar têm de ser decididos numa fase inicial (compilação ou carregamento em
memoria), não é possível executar simultaneamente dois programas que tivessem sido
preparados para se executarem nos mesmos endereços.
Organização de memória virtual
Memória virtual é uma técnica que permite a execução de
processos que não estejam completamente na memória;
porque com este esquema de alocação de memória é possível
endereçar a memória secundária como se esta fizesse parte da
memória principal (Silberschatz, Galvin e Gagne, 2009;
Stallings, 2012)
Organização de memória virtual
Organização de memória virtual
Organização de memória virtual:
Segmentação Da Memória Virtual
Segmentação é um esquema de gestão de memória com espaços de
endereços ou segmentos completamente diferentes. Cada segmento
consiste numa sequência linear de endereços (Tanembaum & Bos,
2015; Silberschatz, Galvin e Gagne, 2009)
Organização de memória virtual: Segmentação Da
Memória Virtual-Organização

Legenda:
M = 1, segmento modificado; M = 0, segmento não modificado
Segment base, o primeiro endereço físico do segmento.
Length, o tamanho do segmento.
Organização de memória virtual: Segmentação
Da Memória Virtual-paginação
Um endereço virtual usando paginação é composto por
dois campos:
1. Número de páginas: usado com um índice para a
tabela de páginas que contem os enderecos base e de
cada página em memória.
2. Deslocamento: é combinado com o endereço-base
para definir o endereço físico para ser enviado à
unidade de memória.
Organização de memória virtual:
Implementação da Tabela de Páginas
Cada processo tem uma Tabela de Páginas, onde há uma
entrada para cada página do processo. Com a memória virtual,
um processo pode consistir de um grande número de páginas,
impossibilitando alocar a Tabela de Páginas dentro da memória
física. As Tabelas de Páginas desses processos são
implementadas em memória virtual (disco).
Para evitar esse problema, é usada uma memória cache
especial Translation Lookaside Buffer (TLB), para entradas da
Tabela de Páginas.
Organização de memória virtual:
Translation Lookaside Buffer (TLB)
O Translation Lookaside Buffer (TLB) funciona como uma
memória cache e contém as entradas (i.e. as linhas) da Tabela
de Páginas mais recentemente usadas. Para localizar uma
dada página, TLB é consultado e se encontrar (TLB hit), o
número do bloco correpondente é obtido e se nao encontrar
(TLB miss).
Organização de memória virtual: Tabelas
de Páginas
Existem duas formas básicas de projetar tabelas de páginas:
Ter uma única tabela de páginas, através de uma matriz de
rápidos registradores de hardware, com uma entrada para cada
página virtual, indexada pelo número da página. Esta é uma
solução cara se a tabela de páginas é grande;
Manter a tabela de páginas inteiramente na memória principal,
sendo que o hardware precisa de apenas um registrador que
aponta para o início da tabela de páginas.
Algoritmos de substituição de páginas
Quando ocorre uma falta de página, o sistema operacional
tem de escolher uma página para remover da memória a fim
de abrir espaço para a que está chegando. Se a página a ser
removida foi modificada enquanto estava na memória, ela
precisa ser reescrita para o disco a fim de atualizar a cópia em
disco. Se, no entanto, ela não tiver sido modificada (por
exemplo, ela contém uma página de código), a cópia em disco
já está atualizada, portanto não é preciso reescrevê-la.
Algoritmos de substituição de páginas
Vários critérios podem ser usados para :escolher “vítimas”, ou seja,
páginas a transferir da memória para a área de troca no disco como:
Idade da página;
Frequência de acessos à página;
Data do último acesso;
Prioridade do processo proprietário;
Conteúdo da página;
Páginas especiais.
Algoritmos de substituição de páginas
O algoritmo ótimo de substituição de página;

O algoritmo de substituição de páginas não usadas recentemente (NRU-


Not Recently Used);

O algoritmo de substituição de páginas primeiro a entrar, primeiro a sair


(first in, first out-- FIFO).

O algoritmo de substituição de página WSClock


Algoritmos de substituição de páginas
O algoritmo de substituição de páginas do Relógio
Algoritmos de substituição de páginas
O algoritmo de substituição de páginas segunda chance (SC-Second
Chance)
Algoritmos de substituição de páginas
Algoritmo de substituição de páginas usadas menos recentemente (LRU-
Least Recently Used )

Uma boa aproximação para o algoritmo ótimo é baseada na observação


de que as páginas que foram usadas intensamente nas últimas instruções
provavelmente o serão em seguida de novo. De maneira contrária,
páginas que não foram usadas há eras provavelmente seguirão sem ser
utilizadas por um longo tempo. Essa ideia sugere um algoritmo realizável:
quando ocorre uma falta de página, jogue fora aquela que não tem sido
usada há mais tempo. (Tanenbaum, 2010)
Algoritmos de substituição de páginas
Algoritmos de substituição de páginas
Simulação do LRU em software
Porque as abordagens de soluções em Hardware enfrentam
problemas, dos quais: dependem de um Hardware especial e
necessitam procurar uma solução em Software, surge o Algoritmo
NFU (Not Frequently Used) e o Algoritmo Aging.
Algoritmos de substituição de páginas
O algoritmo de substituição de páginas do conjunto de trabalho
Na forma mais pura de paginação, os processos são inicializados sem
nenhuma de suas páginas na memória. A seguir a CPU tenta buscar a
primeira instrução, ela detecta uma falta de página, fazendo que o
sistema operacional traga a página contendo a primeira instrução. Outras
faltas de páginas para variáveis globais e a pilha geralmente ocorrem logo
em seguida. Após um tempo, o processo tem a maior parte das páginas
que ele precisa para ser executado com relativamente poucas faltas de
páginas. Essa estratégia é chamada de paginação por demanda, pois as
páginas são carregadas apenas sob demanda, não antecipadamente.
(Tanenbaum, 2010)
Algoritmos de substituição de páginas
O algoritmo de substituição de páginas do conjunto de trabalho
Eles apresentam uma localidade de referência significando que durante
qualquer fase de execução o processo referencia apenas uma fração
relativamente pequena das suas páginas. O conjunto de páginas que um
processo está atualmente usando é o seu conjunto de trabalho.
Algoritmos de substituição de páginas
O algoritmo de substituição de página WSClock
Uma vez que esse limite de tráfego de disco tenha sido alcançado, não
serão escalonadas mais escritas novas. Há dois casos que precisamos
considerar:
Pelo menos uma escrita foi escalonada;
Nenhuma escrita foi escalonada.
Algoritmos de substituição de páginas
O algoritmo de substituição de página WSClock
Na ocorrência de um Page Fault:
Se o bit R desta página for 0, ela é substituída, e o ponteiro roda uma
casa;
Se R=1, é feito o reset e o ponteiro avança para a próxima página até
encontrar uma página com R=0.
Algoritmos de substituição de páginas
Algoritmo ARC – Adaptive Replacement Cache

Divide a memória em duas áreas de gestão, uma com as páginas recém-


carregadas e outra armazenando aquelas que receberam mais de um
acesso. Entretanto, a substituição é feita sempre utilizando o critério LRU
em uma das duas áreas. A seleção da área se dá de forma balanceada, de
acordo com o estado em que cada uma delas se encontra nos momentos
de substituição (Megiddo & Modha, 2003).
Conclusão
Sistemas computacionais mais simples não precisam realizar nenhum tipo de
gerenciamento pois, usualmente, seus programas rodam diretamente na memória
principal disponível. No entanto, esta não é a situação mais comum. Na maioria dos
sistemas em uso, os programas são muito maiores que a quantidade de memória
principal disponível e/ou é necessário rodar mais de um programa ao mesmo tempo.
Nestes casos, a utilização de esquemas de troca, páginas e segmentos pode ser uma
alternativa. Um modelo de memória virtual, que fornece um espaço de
endereçamento maior do que o físico, pode ser disponibilizado para os
programadores no desenvolvimento de seus sistemas. Internamente, no entanto, o
S.O. deve ser capaz de gerenciar a memória de forma a manter as partes do programa
em uso na memória principal, armazenando as demais partes em disco.
Referências Bibliográficas
•Maziero, C. A. (2017). Sistemas Operativos: Conceitos e Mecanismos. Curitiba: DINF-UFPR.
•Megiddo, N., & Modha, D. (2003). ARC: a self-tuning, low overhead replacement cache. USENIX.
•Silberschatz, A., Galvin, P. B., & Gagne, G. (2009). Operating System Concepts (8 ed.). Danvers,
United States of America: John Willey&Sons, Inc. Acesso em Maio de 2021
•Stallings, W. (2011). Operating Systems: Internals and Design Principles (7 ed.). (P. E. Inc, Ed.)
New Jersay, United States of America: Pretince Hall. Acesso em Maio de 2021
•Tanenbaum, A. S. (2010). Sistemas Operacionais Modernos (3 ed.). (P. Education, Ed.) Sao PAulo,
Brasil: Pearson Education, Inc. Acesso em Maio de 2021
•Marques, J. A., Ferreira, P., Ribeiro, C., Veiga, L., & Rodrigues, R. (2012.). Sistemas Operativos.
FCA.
OBRIGADA!

Você também pode gostar