Buscar

SISTEMA OPERACIONAIS TEMP 3 -4 COM RESPOSTA DE EXERCICIOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Gerenciamento de memória
Apresentação
Em qualquer tarefa realizada no computador, diversos programas estão em execução apoiando no 
desenvolvimento, alguns de modo perceptível, como um editor de texto, outros de modo mais 
discreto, como o corretor ortográfico e o sistema operacional.
Os programas, para serem executados, precisam estar armazenados na memória do computador. 
Contudo, a tecnologia atual não alcançou o desenvolvimento de uma memória com 
armazenamento infinito, rápida o suficiente e com baixo custo. Para contornar essa limitação, os 
computadores são compostos por um conjunto de memórias, cada uma com um propósito 
específico.
Nesta Unidade de Aprendizagem, você vai aprender como funciona o gerenciamento de memória 
em um computador, observando as diferentes categorias de memórias usadas, vai verificar como os 
programas são endereçados e aprender as principais características de cada estratégia.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir a hierarquia de memória de um computador.•
Descrever o espaço de endereçamento e de troca de memória.•
Identificar os modos de gerenciamento de memória e suas características.•
Desafio
Os programas de usuário utilizados para diferentes tarefas ficam armazenados na memória do 
computador. Diferentemente do que a maioria das pessoas pensa, o computador não tem uma 
única memória, e sim uma combinação de diferentes tipos de memórias. Isso se dá pelas 
características de cada uma quanto a preço, volatilidade e velocidade.
Você trabalha em uma empresa de hospedagem de sites, servidores e serviços. A empresa oferece 
diversos planos mensais, que variam conforme a capacidade de processamento, transferência de 
dados, quantidade de memória RAM e espaço de armazenamento.
Um cliente da empresa entrou em contato reclamando da velocidade em que os dados estavam 
sendo armazenados no servidor contratado.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/f3d289e3-ae7b-4b3f-83dc-ad7552d4b388/61b9e3d0-9f6a-46c5-8ff7-cfd5824d568c.jpg
A partir da análise do gráfico, responda:
a) O que pode estar causando a lentidão na transmissão de dados relatada pelo cliente?
b) Qual solução pode ser empregada nesse caso?
Infográfico
Na memória do computador, os processos são alocados e desalocados constantemente, muitos 
destes com diferentes tamanhos. Nesse processo de alocação, alguns espaços vazios podem surgir 
entre as regiões de memória alocadas, o que pode exigir que eles sejam gerenciados.
Confira, no Infográfico a seguir, o processo de gerenciamento de espaços vazios com listas 
encadeadas e alguns dos principais algoritmos.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/acc36793-53fa-457d-a99e-64c8b8d54467/dfabe43f-2c84-471c-8399-232993b928b2.jpg
Conteúdo do livro
Gerenciar memória em sistemas operacionais é importante porque a memória é um recurso 
limitado e valioso em um computador. Sem gerenciamento adequado da memória, os processos 
podem consumir mais memória do que o necessário, levando à exaustão de recursos e falhas do 
sistema. Além disso, o gerenciamento de memória é crucial para garantir a proteção de memória e a 
segurança do sistema.
O gerenciamento de memória também é importante para garantir o desempenho do sistema, pois o 
tempo de acesso à memória é significativamente mais rápido do que o tempo de acesso a 
dispositivos de armazenamento, como discos rígidos. Dessa forma, o gerenciamento de memória é 
fundamental para garantir a eficiência, a segurança e a estabilidade de um sistema operacional.
No capítulo Gerenciamento de memória, base teórica desta Unidade de Aprendizagem, você 
poderá compreender como a hierarquia de memória é organizada em camadas em um computador, 
além de entender o espaço de endereçamento e troca de memória e conhecer os principais modos 
de gerenciar memória.
Boa leitura.
SISTEMAS 
OPERACIONAIS
OBJETIVOS DE APRENDIZAGEM
 > Definir a hierarquia de memória de um computador.
 > Descrever o espaço de endereçamento e de troca de memória.
 > Identificar os modos de gerenciamento de memória e suas características.
Introdução
Sistemas operacionais são a base fundamental de qualquer computador moderno. 
Eles são responsáveis por gerenciar todos os recursos do sistema, como a me-
mória, os processadores e os dispositivos de entrada/saída, e por garantir que 
as aplicações sejam executadas de forma eficiente e segura. O gerenciamento de 
memória é uma das principais funções dos sistemas operacionais e é crítico para 
garantir o desempenho adequado de um sistema.
O objetivo do gerenciamento de memória é garantir que o sistema possa alocar 
a quantidade necessária de memória para cada processo em execução e, ao mesmo 
tempo, minimizar o desperdício de recursos. Um gerenciamento inadequado de 
memória pode levar a falhas no sistema, problemas de desempenho e outros 
problemas de estabilidade. Por isso, é crucial entender as técnicas usadas pelos 
sistemas operacionais para gerenciar a memória de forma eficiente.
Neste capítulo, você vai refletir sobre a hierarquia de memória de um compu-
tador e suas diferentes características. Também poderá compreender o espaço de 
endereçamento e de troca de memória, conceitos muito importantes para entender 
como funciona a alocação de recursos. Além disso, vai identificar os diferentes 
modos de gerenciar memória, conhecendo suas caraterísticas e vantagens.
Gerenciamento 
de memória
Nicolli Souza Rios Alves
Memória de um computador
Em um computador, a memória corresponde aos componentes eletrônicos 
usados para armazenar dados e instruções que o processador do computa-
dor pode acessar rapidamente (TANENBAUM; BOS, 2016). A memória em um 
computador normalmente é dividida em duas categorias principais: memória 
primária, também conhecida como “memória principal” ou “memória de acesso 
aleatório” (RAM, do inglês random access memory), e memória secundária 
(como os discos rígidos).
A memória primária é a memória principal em um sistema de computador, 
sendo usada para armazenar dados e instruções que o processador precisa 
acessar rapidamente (TANENBAUM; BOS, 2016). Esse tipo de memória é volátil, 
o que significa que seu conteúdo é perdido quando o computador é desligado. 
Usada para armazenar dados temporariamente enquanto o computador está 
em execução, a memória principal é essencial para o bom funcionamento do 
sistema operacional e do software do computador.
A memória secundária, por sua vez, é usada para armazenamento de longo 
prazo de dados e programas (TANENBAUM; BOS, 2016). Esse tipo de memória 
é não volátil, ou seja, seu conteúdo não é perdido quando o computador é 
desligado. A memória secundária é normalmente usada para armazenar o 
sistema operacional, aplicativos e dados do usuário. Ela fornece uma grande 
capacidade de armazenamento a um custo menor por byte em comparação 
com a memória principal, mas o acesso a ela é muito mais lento.
A hierarquia de memória de um computador é uma organização em ca-
madas de diferentes tipos de memória, cada um com diferentes níveis de 
capacidade, velocidade e custo. Essa hierarquia é projetada para fornecer 
uma combinação ideal de custo e desempenho, maximizando a eficiência e o 
desempenho do sistema de computador (SILBERCHATZ; GALVIN; GAGNE, 2015).
A camada mais alta da hierarquia de memória é composta pela memória 
cache, que é uma memória de acesso rápido e pequena que armazena os 
dados mais frequentemente usados pelo processador (SILBERCHATZ; GALVIN; 
GAGNE, 2015). A memória cache é muito mais rápida do que a memória RAM, 
mas é muito mais cara e tem uma capacidade muito menor.
A camada seguinte da hierarquia de memória é a memória RAM, que é uma 
memória volátil e de acesso aleatório usada para armazenar temporariamentedados e programas enquanto o computador está em execução (SILBERCHATZ; 
GALVIN; GAGNE, 2015). Já a camada mais baixa da hierarquia de memória é a 
memória de armazenamento secundário, que inclui dispositivos como discos 
rígidos e unidades flash. Esses dispositivos oferecem uma capacidade muito 
Gerenciamento de memória2
maior do que a memória RAM, mas são muito mais lentos em termos de acesso 
e transferência de dados.
Existem vários tipos de memória usados em um sistema de computador, 
cada um com suas características e funções exclusivas. Além disso, várias 
opções são possíveis, como mostra a Figura 1. A seguir, vamos descrever as 
características de alguns dos tipos mais comuns de memória (TANENBAUM; 
BOS, 2016).
 � Memória de acesso aleatório (RAM): essa é a memória principal em 
um sistema de computador, sendo usada para armazenar dados e 
instruções que o processador precisa acessar rapidamente. Como já 
descrevemos, a RAM é uma memória volátil (isto é, seu conteúdo é 
perdido quando o computador é desligado) que geralmente é usada 
para armazenar dados temporariamente enquanto o computador está 
em execução, conforme pode ser observado no exemplo de uso mos-
trado na Figura 1a.
 � Memória somente leitura (ROM): essa é uma memória não volátil usada 
para armazenar firmware e outros softwares de baixo nível necessários 
para a inicialização do computador. A ROM é normalmente programada 
na fábrica e não pode ser modificada pelo usuário, como mostra a 
Figura 1b.
 � Memória cache: essa é uma pequena memória de alta velocidade usada 
para armazenar dados e instruções acessados com frequência. A memó-
ria cache é mais rápida que a RAM e ajuda a melhorar o desempenho do 
computador, reduzindo o número de vezes que o processador precisa 
acessar a memória principal mais lenta.
 � Memória virtual: essa é uma técnica usada pelo sistema operacional 
para aumentar a quantidade efetiva de memória disponível transferindo 
temporariamente dados da RAM para o disco rígido. Isso permite que 
o computador execute mais aplicativos do que seria possível, mas 
também poderá diminuir o desempenho se o disco rígido estiver lento, 
como mostra a Figura 1c.
 � Armazenamento secundário: isso inclui dispositivos como discos rí-
gidos, unidades de estado sólido e unidades ópticas, que são usadas 
para armazenar dados e programas para uso a longo prazo. O armaze-
namento secundário é uma memória não volátil, ou seja, seu conteúdo 
não é perdido quando o computador é desligado.
Gerenciamento de memória 3
Figura 1. Três exemplos simples de organização da memória com um sistema operacional e 
um processo de usuário.
Fonte: Adaptada de Tanenbaum e Bos (2016).
Programa
do usuário
Programa
do usuário
Programa
do usuário
Drivers de
dispositivo em ROM
Sistema
operacional
em ROM
Sistema
operacional
em RAM
Sistema
operacional
em RAM
0
0xFFF ...
(a) (b) (c)
0 0
Nesta seção, vimos que os diferentes tipos de memória em um sistema 
de computador incluem a RAM, a ROM, a memória cache, a memória virtual 
e o armazenamento secundário. Cada tipo de memória tem suas próprias 
características e funções únicas, e todas trabalham juntas para permitir que 
o computador execute suas tarefas com eficiência. Agora que aprendemos 
sobre os diferentes tipos de memória, veremos a seguir como funciona o 
espaço de endereçamento e troca de memória.
Espaço de endereçamento e troca de 
memória
O espaço de endereçamento de memória é o conjunto de endereços de me-
mória que podem ser acessados por um processador ou um programa em um 
sistema de computador (SILBERCHATZ; GALVIN; GAGNE, 2015). Ele é dividido 
em várias áreas, cada uma com um propósito específico.
O espaço de endereçamento é organizado em um conjunto de endereços 
numéricos que representam a posição de cada byte de memória no sistema 
(SILBERCHATZ; GALVIN; GAGNE, 2015). Cada endereço corresponde a um byte 
específico de memória, e o processador usa esses endereços para ler e gravar 
dados na memória.
Os programas são carregados na memória a partir de dispositivos de ar-
mazenamento secundário, como um disco rígido, e são atribuídos a um bloco 
de endereços de memória para uso (SILBERCHATZ; GALVIN; GAGNE, 2015). O 
Gerenciamento de memória4
sistema operacional é responsável por gerenciar o espaço de endereçamento 
da memória, alocando e desalocando blocos de memória para diferentes 
programas, conforme necessário.
O espaço de endereçamento também é utilizado para a comunicação 
entre diferentes partes do sistema. Por exemplo, um dispositivo de entrada/
saída pode usar um bloco de endereços de memória para enviar dados para 
o processador, e o processador pode usar outro bloco de endereços para 
enviar dados para um dispositivo de saída (SILBERCHATZ; GALVIN; GAGNE, 2015).
Em sistemas modernos, o espaço de endereçamento é geralmente de 32 ou 
64 bits, o que significa que o processador pode acessar até 232 ou 264 bytes de 
memória, respectivamente (SILBERCHATZ; GALVIN; GAGNE, 2015). Isso fornece 
uma quantidade suficiente de espaço de endereçamento para a maioria das 
aplicações e dos sistemas operacionais.
O endereçamento de memória é usado para acessar diferentes áreas 
de memória por meio de endereços numéricos únicos que correspondem a 
posições específicas na memória do sistema (TANENBAUM; BOS, 2016). Quando 
um programa precisa acessar uma determinada área de memória, ele usa o 
endereço correspondente para ler ou gravar dados.
Os registradores base e limite são usados em sistemas operacionais para 
implementar a proteção de memória (TANENBAUM; BOS, 2016). Cada processo 
tem seu próprio espaço de endereço de memória, que é protegido para garantir 
que um processo não acesse a memória de outro processo.
O registrador base contém o endereço base do espaço de endereço de 
memória do processo, ou seja, é o endereço inicial da memória que o processo 
pode acessar (TANENBAUM; BOS, 2016). O registrador limite, por sua vez, 
contém o tamanho do espaço de endereço de memória do processo, isto é, 
o endereço final que o processo pode acessar. Combinados, o registrador 
base e o registrador limite definem o intervalo de endereços de memória 
permitidos para o processo.
Quando um processo tenta acessar a memória, o sistema operacional 
verifica se o endereço de memória que o processo está tentando acessar está 
dentro do intervalo definido pelos registradores base e limite (TANENBAUM; 
BOS, 2016). Se o endereço estiver fora do intervalo, ocorre uma violação de 
proteção de memória, e o processo é encerrado pelo sistema operacional.
Gerenciamento de memória 5
Suponha que um processo tenha um registrador base com o valor 
1000 e um registrador limite com o valor 500. Isso significa que o 
processo pode acessar a memória do endereço 1000 ao endereço 1499. Se o 
processo tentar acessar um endereço de memória menor que 1000 ou maior 
que 1499, ocorrerá uma violação de proteção de memória.
Swapping
A troca de processos, também conhecida como swapping, é um processo 
utilizado pelo sistema operacional para gerenciar a memória disponível em 
um computador (MACHADO; MAIA, 2007). O objetivo da troca de memória é 
permitir que os programas usem mais memória do que a capacidade física 
da RAM disponível, utilizando uma parte do espaço disponível no disco rígido 
para simular a presença de mais memória RAM.
O processo de troca de memória ocorre da seguinte forma: quando um 
programa solicita mais memória do que a RAM disponível, o sistema opera-
cional utiliza a memória virtual para alocar uma parte do espaço em disco 
rígido, conhecido como “arquivo de paginação” ou “swap file”, para servir como 
extensão da memória RAM (TANENBAUM; BOS, 2016). O sistema operacional 
então divide a memória RAM disponível em blocos chamados “páginas”, que 
têm o mesmo tamanho que as páginas no arquivo de paginação.
Quando um programa precisa acessar uma página de memória que está 
armazenada no arquivo de paginação, ocorre uma falha de página. Nesse mo-
mento, o sistema operacionaltransfere a página correspondente do arquivo de 
paginação para a memória RAM, atualizando a tabela de páginas para refletir a 
nova localização da página de memória (SILBERCHATZ; GALVIN; GAGNE, 2015). Se 
não houver espaço disponível na RAM para acomodar a nova página, o sistema 
operacional escolhe uma página que não está sendo utilizada no momento e 
a transfere para o arquivo de paginação para liberar espaço na RAM.
O processo de troca de memória envolve a transferência de dados entre a 
RAM e o disco rígido, que é significativamente mais lento do que a operação 
de acesso à RAM. Portanto, o uso excessivo de troca de memória pode im-
pactar negativamente o desempenho do sistema, causando lentidão e outros 
problemas de desempenho (SILBERCHATZ; GALVIN; GAGNE, 2015). Por isso, é 
importante que o sistema operacional seja configurado adequadamente para 
balancear o uso da memória RAM e o uso do arquivo de paginação de modo 
a maximizar o desempenho do sistema.
Gerenciamento de memória6
Há dois métodos de gerenciamento de memória bastante conhecidos: 
mapa de bits e lista encadeada. A principal diferença entre eles é como a 
informação é armazenada e gerenciada (TANENBAUM; WOODHULL, 2008).
No método de mapa de bits, a memória disponível é dividida em blocos de 
tamanho fixo, e cada bloco é representado por um bit no mapa de bits, como 
mostra a Figura 2. Se um bit é 1, isso significa que o bloco correspondente está 
sendo usado por algum processo, ao passo que um bit 0 indica que o bloco 
está livre. Esse método é rápido e eficiente para encontrar blocos livres de 
memória, mas pode ser ineficiente em termos de uso de memória, uma vez 
que cada bloco é do mesmo tamanho, o que pode resultar em fragmentação 
de memória (TANENBAUM; WOODHULL, 2008).
Figura 2. (a) Uma parte da memória com cinco processos e três lacunas. Os tracinhos mostram 
as unidades de alocação de memória. As regiões sombreadas (0 no mapa de bits) estão livres. 
(b) O mapa de bits correspondente. (c) As mesmas informações mostradas como uma lista.
Fonte: Adaptada de Tanenbaum e Bos (2016).
A
B C
Lacuna começa
em 18
Comprimento 2 Processo
Já no método de lista encadeada, cada bloco de memória livre é represen-
tado por um nó em uma lista encadeada, como mostra a Figura 2c. Cada nó 
contém informações sobre o tamanho do bloco e a localização na memória. 
Quando um processo precisa de memória, o sistema operacional pesquisa 
na lista encadeada em busca de um bloco livre com tamanho suficiente 
para alocar ao processo (TANENBAUM; WOODHULL, 2008). Quando um bloco 
é liberado por um processo, ele é adicionado à lista encadeada novamente.
Esse método é eficiente em termos de uso de memória, pois os blocos 
de memória podem ser de tamanhos diferentes, o que ajuda a evitar a frag-
mentação de memória. No entanto, a pesquisa por um bloco livre pode ser 
mais lenta do que no método de mapa de bits, já que é necessário percorrer 
toda a lista encadeada.
Gerenciamento de memória 7
Portanto, o método de mapa de bits é eficiente para encontrar blocos 
livres de memória, mas pode levar à fragmentação de memória, ao passo 
que o método de lista encadeada é mais eficiente em termos de uso de me-
mória, mas pode ter uma pesquisa mais lenta por um bloco livre. A escolha 
do método depende das necessidades específicas do sistema operacional e 
dos aplicativos em execução (TANENBAUM; WOODHULL, 2008).
Memória virtual
A memória virtual é uma técnica usada pelos sistemas operacionais para 
permitir que um computador use mais memória do que a que está fisica-
mente disponível no sistema (SILBERCHATZ; GALVIN; GAGNE, 2015). Ela funciona 
transferindo dados temporariamente da RAM do computador para o disco 
rígido, liberando espaço na RAM para outros programas ou dados. Isso é feito 
automaticamente pelo sistema operacional, sem que o usuário precise fazer 
nada (SILBERCHATZ; GALVIN; GAGNE, 2015).
Quando o programa precisa acessar os dados que foram movidos para o 
arquivo de paginação, eles são trazidos de volta para a RAM, e os dados que 
foram usados menos recentemente são movidos para o arquivo de pagina-
ção. Esse processo é conhecido como “paginação”, ou “troca” (SILBERCHATZ; 
GALVIN; GAGNE, 2015).
A memória virtual permite que o computador use efetivamente mais me-
mória do que fisicamente disponível, o que pode ser especialmente útil para 
executar programas grandes ou vários programas simultaneamente (SILBER-
CHATZ; GALVIN; GAGNE, 2015). No entanto, acessar dados do disco rígido é 
muito mais lento do que acessar dados da RAM; portanto, o uso da memória 
virtual também pode causar uma diminuição no desempenho geral do sistema.
A memória virtual é usada pelo sistema operacional para gerenciar o espaço 
de endereçamento e a troca de memória entre a RAM e o disco rígido. Como 
descrevemos anteriormente, quando um programa solicita mais memória 
do que a RAM disponível, o sistema operacional usa a memória virtual para 
alocar uma parte do espaço em disco rígido para servir como extensão da 
memória RAM (TANENBAUM; BOS, 2016). Então, o sistema operacional divide 
a memória RAM disponível em páginas, cujo tamanho é igual ao das páginas 
no arquivo de paginação. As páginas são mantidas em uma tabela de páginas 
que mapeia o endereço lógico do processo para o endereço físico da memória.
Se um processo tenta acessar uma página de memória armazenada no 
arquivo de paginação, acontece uma falha de página, e, então, o sistema 
operacional lê a página correspondente do arquivo de paginação de volta 
Gerenciamento de memória8
para a memória RAM e atualiza a tabela de páginas para refletir a nova 
localização da página de memória. Esse processo é conhecido como “troca 
de páginas” (TANENBAUM; BOS, 2016). A memória virtual também permite 
que os programas usem mais memória do que a capacidade física da RAM, 
já que o sistema operacional pode transferir dados entre a RAM e o arquivo 
de paginação, conforme necessário.
O uso da memória virtual para gerenciamento de memória pode ter um 
impacto no desempenho do sistema, já que a troca de páginas envolve a 
transferência de dados entre a RAM e o disco rígido, que é significativamente 
mais lento (TANENBAUM; BOS, 2016). No entanto, a memória virtual permite 
que o sistema operacional aloque mais memória para processos do que 
seria possível apenas com a RAM física, o que pode ser útil para executar 
aplicativos que exigem grandes quantidades de memória.
Existem diferentes tipos de endereçamento de memória que podem ser 
usados para acessar diferentes áreas de memória, incluindo os apresentados 
a seguir (TANENBAUM; BOS, 2016).
 � Endereçamento absoluto: envolve o uso de um endereço de memória 
específico para acessar uma localização de memória específica. Esse 
tipo de endereçamento é geralmente usado para acessar áreas fixas 
de memória, como as áreas de sistema ou a ROM.
 � Endereçamento relativo: envolve o uso de um endereço de memória 
que é relativo a uma posição atual na memória. Ele é comumente usado 
para acessar áreas de memória de dados que mudam de tamanho ou 
posição ao longo do tempo.
 � Endereçamento indireto: envolve o uso de um endereço que aponta para 
outro endereço de memória. Ele é comumente usado em programação 
para criar ponteiros, que são variáveis que armazenam endereços de 
memória.
Além disso, o endereçamento de memória também pode ser usado para 
acessar diferentes áreas de memória física, como a memória principal, a 
memória cache ou a memória virtual. O sistema operacional é responsável 
por gerenciar o endereçamento de memória, atribuindo áreas de memória 
para diferentes processos e garantindo que eles não interfiram uns nos 
outros (TANENBAUM; BOS, 2016). Agora que pudemos compreender como o 
espaço de endereçamento da memória é usado para acessar diferentes áreas 
da memória, abordaremos a seguir os diferentes modos de gerenciamento 
de memória.
Gerenciamento de memória 9
Modos de gerenciamento de memória
Gerenciamento de memória é o processo de gerenciara alocação, o uso e a 
liberação de memória em um sistema computacional (SILBERCHATZ; GALVIN; 
GAGNE, 2015). O gerenciamento de memória é uma parte essencial de um 
sistema operacional, responsável por garantir que todos os programas tenham 
acesso à quantidade de memória necessária para executar adequadamente, 
sem que ocorram conflitos ou desperdício de recursos.
O gerenciamento de memória inclui várias tarefas, como a alocação e a 
desalocação de memória para programas e processos em execução, o controle 
do acesso à memória por diferentes programas e processos, o gerenciamento 
da memória virtual e a troca de memória (SILBERCHATZ; GALVIN; GAGNE, 2015). 
Para garantir que a memória esteja disponível para os programas que preci-
sam dela, o gerenciamento de memória também envolve o monitoramento 
e a identificação de desperdícios de memória, isto é, onde os programas 
alocam mais memória do que necessitam, mas não a liberam quando não a 
estão utilizando.
O gerenciamento de memória é uma tarefa crítica para o desempenho e 
a estabilidade do sistema, pois o acesso à memória é uma das operações 
mais frequentes realizadas pelos programas em execução (TANENBAUM; 
BOS, 2016). Um gerenciamento ineficiente da memória pode causar lentidão, 
travamentos e outros problemas no sistema. Por isso, é importante que os 
sistemas operacionais implementem estratégias eficazes de gerenciamento 
de memória para garantir o melhor desempenho e a estabilidade do sistema.
Existem vários modos de gerenciamento de memória que podem ser utili-
zados em um sistema operacional, dependendo da arquitetura do hardware e 
dos requisitos de desempenho do sistema. A seguir, apresentamos alguns dos 
modos mais comuns de gerenciamento de memória (TANENBAUM; BOS, 2016).
 � Gerenciamento de memória em modo de usuário: nesse modo, a alo-
cação e a desalocação de memória são controladas pelos próprios 
programas em execução, sem a intervenção do sistema operacio-
nal. O sistema operacional fornece uma interface de programação 
de aplicação (API, do inglês application programming interface) que 
permite que os programas acessem a memória disponível. Esse modo 
de gerenciamento de memória é comum em sistemas embarcados e 
em sistemas operacionais de tempo real.
 � Gerenciamento de memória em modo kernel: nesse modo, o sistema 
operacional é responsável pela alocação e desalocação de memória 
Gerenciamento de memória10
para os programas em execução. Isso garante que a memória seja 
gerenciada de forma centralizada e que todos os programas tenham 
acesso equitativo à memória disponível. Esse modo é comum em sis-
temas operacionais de desktop e servidor.
 � Gerenciamento de memória por segmentação: nesse modo, a memória 
é dividida em segmentos de tamanhos diferentes, cada um com um 
propósito específico. Por exemplo, um segmento pode ser alocado 
para a pilha de execução do programa, enquanto outro segmento é 
alocado para a área de dados. Esse modo de gerenciamento de memória 
é comum em sistemas operacionais mais antigos.
 � Gerenciamento de memória por paginação: nesse modo, a memória é 
dividida em blocos de tamanho fixo chamados “páginas”. Cada página 
é mapeada para um endereço de memória virtual, que, por sua vez, 
pode ser mapeado para um endereço físico correspondente na RAM 
ou no disco rígido. Esse modo de gerenciamento de memória é comum 
em sistemas operacionais modernos.
Cada modo de gerenciamento de memória tem suas vantagens e des-
vantagens, e o modo escolhido dependerá da arquitetura do hardware, dos 
requisitos de desempenho e da finalidade do sistema operacional.
Existem várias estratégias de alocação de memória que podem ser usadas 
pelos sistemas operacionais para gerenciar a memória disponível. Veja a seguir 
algumas das estratégias mais comuns (TANENBAUM; BOS, 2016).
 � Alocação contígua: nessa estratégia, a memória é alocada de forma 
contígua, ou seja, em blocos consecutivos de endereços de memória. 
Isso pode ser útil em sistemas com pouca memória e pode melhorar o 
desempenho ao minimizar a fragmentação da memória. No entanto, a 
alocação contígua pode levar a um problema de fragmentação externa, em 
que a memória livre é dividida em pequenos blocos que não são grandes o 
suficiente para atender às solicitações de alocação de memória maiores.
 � Alocação de lista vinculada: nessa estratégia, a memória é alocada 
em blocos independentes que são vinculados em uma lista. Quando 
um programa solicita memória, um bloco livre é localizado na lista e 
a memória é alocada a partir desse bloco. Esse método pode ser mais 
flexível do que a alocação contígua e pode lidar com fragmentação 
externa, mas pode ter uma sobrecarga maior de gerenciamento de lista.
 � Alocação de pilha: nessa estratégia, a memória é alocada de forma 
semelhante a uma pilha, em que as alocações mais recentes são empi-
Gerenciamento de memória 11
lhadas no topo da pilha. A alocação de memória é rápida, pois a pilha 
é sempre alocada de forma contígua. No entanto, a alocação de pilha 
pode levar a um problema de fragmentação interna, em que a memória 
é alocada em blocos maiores do que o necessário, resultando em uma 
parte não utilizada do bloco.
 � Alocação de heap: nessa estratégia, a memória é alocada dinamica-
mente a partir de um pool de memória livre chamado “heap”. A alocação 
de heap é mais flexível do que a alocação de pilha, pois os blocos de 
memória podem ser alocados de tamanhos variáveis. No entanto, a 
alocação de heap pode ser mais lenta do que a alocação de pilha, pois 
pode haver fragmentação interna e externa.
Cada estratégia de alocação de memória tem suas vantagens e desvan-
tagens, e a estratégia escolhida dependerá dos requisitos de desempenho 
e do uso do sistema operacional.
Atualmente, existem várias técnicas de alocação de memória. A seguir, 
apresentamos algumas das principais (OLIVEIRA; CARISSIMI; TOSCANI, 2001; 
MACHADO; MAIA, 2007).
 � First fit (primeiro ajuste): nessa técnica, o sistema operacional aloca a 
primeira seção de memória livre que pode acomodar a solicitação de 
memória. Essa técnica é rápida e simples, mas pode levar a um alto 
nível de fragmentação de memória.
 � Best fit (melhor ajuste): nessa técnica, o sistema operacional aloca o 
menor bloco de memória livre que pode acomodar a solicitação de 
memória. Essa técnica pode minimizar a fragmentação de memória, 
mas pode levar a um maior número de fragmentos pequenos.
 � Worst fit (pior ajuste): nessa técnica, o sistema operacional aloca o 
maior bloco de memória livre que pode acomodar a solicitação de 
memória. Essa técnica pode acarretar uma maior fragmentação de 
memória e desperdício de espaço livre.
 � Next fit (próximo ajuste): nessa técnica, o sistema operacional aloca a 
primeira seção de memória livre que pode acomodar a solicitação de 
memória, mas começa a procurar no próximo bloco de memória livre 
após o último bloco alocado. Essa técnica pode minimizar a fragmen-
tação de memória e é mais eficiente do que o primeiro ajuste.
 � Buddy system (sistema de amigos): nessa técnica, a memória é alocada 
em blocos que são potências de 2. Quando um bloco é alocado, ele é 
dividido em dois blocos menores, que são denominados “amigos”. Se 
Gerenciamento de memória12
um amigo não é usado, ele pode ser combinado com seu amigo cor-
respondente para formar um bloco maior. Essa técnica é eficiente em 
termos de espaço, mas pode levar a uma sobrecarga de gerenciamento.
O gerenciamento de memória é um aspecto fundamental dos sistemas 
operacionais modernos e é crucial para a eficiência e desempenho geral do 
sistema. Neste capítulo, exploramos a hierarquia de memória de um compu-
tador, desde a memória cache mais rápida até a memória secundária mais 
lenta. Também aprendemos sobre o espaço de endereçamento e a troca de 
memória, que são recursos importantes que permitem que os programas 
acessem mais memória do que a que realmente está disponível no hardware 
físico. Compreender os conceitos e técnicas de gerenciamento dememória 
é essencial para desenvolvedores de software e administradores de siste-
mas operacionais para garantir que os sistemas operacionais e aplicativos 
executem de maneira eficiente e eficaz. À medida que a tecnologia evolui e a 
demanda por processamento de dados aumenta, a gestão eficaz da memória 
continua a ser um elemento chave para o desempenho e a estabilidade de 
um sistema operacional.
Referências
MACHADO, F. B.; MAIA, L. P. Arquiteturas de sistemas operacionais. 4. ed. Rio de Janeiro: 
LTC, 2007.
OLIVEIRA, R. S. D.; CARISSIMI, A. D. S.; TOSCANI, S. S. Sistemas operacionais. Revista 
de informática teórica e aplicada, v. 8, n. 3, dez. 2001. Disponível em: http://www.
romulosilvadeoliveira.eng.br/artigos/Romulo-Carissimi-Simao-Rita2001.pdf. Acesso 
em: 10 jun. 2023.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Fundamentos de sistemas operacionais. 9. 
ed. Rio de Janeiro: LTC, 2015.
TANENBAUM, A. S.; BOS, H. Sistemas operacionais modernos. 4. ed. São Paulo: Pearson 
Prentice Hall, 2016.
TANENBAUM, A. S.; WOODHULL, A. S. Sistemas operacionais: projeto e implementação. 
3. ed. Porto Alegre: Bookman, 2008.
Leituras recomendadas
AWAIS, M. A. Memory management: challenges and techniques for traditional memory 
allocation algorithms in relation with today's real time needs. Advances in Computer 
Science: an International Journal, v. 5, n. 2, 2016. Disponível em: http://www.acsij.org/
acsij/article/view/459. Acesso em: 10 jun. 2023.
MAZIERO, C. Alocação de memória. Curitiba: UFPR, 2021. Disponível em: https://wiki.inf.
ufpr.br/maziero/doku.php?id=prog2:alocacao_de_memoria. Acesso em: 10 jun. 2023.
Gerenciamento de memória 13
NAG, B.; DEWITT, D. J. Memory allocation strategies for complex decision support 
queries. In Proceedings of the seventh international conference on Information and 
knowledge management. In: International Conference on Information and Knowledge 
Management, 17., 1998. Proceedings […]. Maryland, 1998. Disponível em: https://dl.acm.
org/doi/10.1145/288627.288647. Acesso em: 10 jun. 2023.
Os links para sites da web fornecidos neste capítulo foram todos 
testados, e seu funcionamento foi comprovado no momento da 
publicação do material. No entanto, a rede é extremamente dinâmica; suas 
páginas estão constantemente mudando de local e conteúdo. Assim, os editores 
declaram não ter qualquer responsabilidade sobre qualidade, precisão ou 
integralidade das informações referidas em tais links.
Gerenciamento de memória14
Dica do professor
Um fator importante para todo sistema operacional é o gerenciamento e o compartilhamento dos 
recursos. Isso não é diferente quanto ao uso da memória principal do computador, que deve ser 
distribuída entre o sistema operacional e os programas de usuário para garantir o correto 
funcionamento de todas as partes.
Mesmo que o objetivo possa ser simples, o sistema operacional, por meio do gerenciador de 
memória, precisa lidar com diferentes fatores que aumentam a complexidade do gerenciamento da 
memória, como, por exemplo, a implementação de multiprogramação.
Confira, na Dica do Professor, os diferentes modos ou categorias de gerenciamento de memória.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
O gerenciamento de memória em um sistema operacional é essencial para garantir a eficiência dos 
programas que são executados no computador. Existem diferentes tipos de memória que auxiliam 
na execução dos programas. A seguir, neste objeto de aprendizagem, veja as características desses 
tipos de memória e as principais diferenças entre eles.
 
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
 
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/b9cb1a507cc7d6ec2185af0a4d712c3c
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/54ec26472acd5a78505db6db81c3476b
Exercícios
1) A multiprogramação requer que dois ou mais programas estejam carregados na memória 
para a execução. Cada programa apresenta suas próprias variáveis referenciadas, os próprios 
endereços.
Um computador tem dois programas, A e B: o programa A tem uma variável F no endereço 
28, e o programa B uma variável G no endereço. Se o programa A tiver o espaço de memória 
iniciado na posição 0 e o programa B na posição 200, quais serão as posições de endereço 
das variáveis F e G?
A) A variável F ficará no endereço -28, e a variável G, no endereço 172.
B) A variável F ficará no endereço 0, e a variável G, no endereço 200.
C) A variável F ficará no endereço 28, e a variável G, no endereço 228.
D) A variável F ficará no endereço 200, e a variável G, no endereço 0.
E) A variável G ficará no endereço 28, e a variável F, no endereço 228.
2) A respeito do carregamento de processos na memória física do computador, existem dois 
métodos principais: a troca de processos e a memória virtual.
Quanto ao primeiro método, a troca de processos, também conhecido como swapping, pode-
se dizer:
A) Impossibilita a criação de espaços adicionais de memória ao processo.
B) Pode gerar espaços vazios entre os processos na memória.
C) Carrega os processos parcialmente.
D) Impede a alocação dos processos de modo contíguo.
E) Quando um processo cresce, os vizinhos são transferidos para outras áreas.
Quando a memória é atribuída dinamicamente aos processos, o sistema operacional precisa 
controlar quais espaços estão ocupados e quais estão livres, para distribuí-los conforme a 
3) 
necessidade dos processos. Os principais métodos de gerenciamento são o mapa de bits e as 
listas encadeadas.
Sobre esses métodos de controle, pode-se afirmar:
A) O gerenciamento de memória com mapa de bits divide-a em unidades com tamanhos 
variados; se a unidade estiver ocupada, representa-se o bit com 1, se disponível, com 0.
B) O gerenciamento de memória com listas encadeadas divide-a em segmentos de tamanho 
igual, que podem ser ocupados ou estar disponíveis para uso.
C) Um computador com memória física de 1 megabyte usa o método de mapa de bits com 
unidades de tamanho de 4 kilobytes; logo, são necessários 512 bits para representar o mapa.
D) Um computador com memória física de 1 megabyte usa o método de mapa de bits com 
unidades de tamanho de 512 bytes; logo, serão necessários 2.048 bits para representar o 
mapa.
E) O gerenciamento de memória com listas encadeadas não permite que os segmentos de 
memória disponíveis e adjacentes sejam unidos formando um segmento maior.
4) No gerenciamento de memória com listas encadeadas, existem diferentes algoritmos para 
seleção do segmento para alocação dos processos.
Sobre esses algoritmos, é correto afirmar:
A) O algoritmo next fit sempre aloca o processo no segundo seguinte encontrado.
B) O algoritmo best fit aloca o processo no melhor segmento possível, ou seja, o segmento de 
maior espaço.
C) O algoritmo worst fit aloca o processo no menor segmento disponível.
D) O algoritmo best fit aloca o processo no segmento em que sobre o menor espaço possível.
E) O algoritmo next fit aloca o processo no segmento ao lado do segmento atual.
5) Na implementação do espaço de endereçamento de processos, algumas abordagens utilizam 
dois registradores especiais: o registrador-base e o registrador-limite.
Quanto a esses registradores, pode-se afirmar:
A) O registrador-base define o início do espaço de endereçamento.
B) O registrador-limite define o tamanho do espaço de endereçamento em bytes.
C) O registrado-base define o fim do espaço de endereçamento.
D) O registrador-limite define o início do espaço de endereçamento.
E) Dois processos podem conter o mesmo registrador-base, mas não o limite.
Na prática
O processo de gerenciamento de memória é responsável por alocar as regiões de memória aos seus 
respectivos processos, permitindo a execução dos processos e o carregamento dos dados 
necessários. Quando o sistema oferece suporte à multiprogramação, a tarefa se torna mais 
complexa, poisé necessário gerenciar o compartilhamento da memória por todos os processos, 
controlar o acesso ao espaço reservado para cada um e garantir que um processo não corrompa a 
memória do outro.
Confira, Na Prática, como Lucas e sua equipe atuaram no gerenciamanento de memória em 
sistemas embarcados.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/fbbf8658-5f47-407d-84d6-0d3bd444f85c/dd42b625-01d9-4a59-aecb-262fa809aa59.jpg
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Introdução ao gerenciamento de memória
Nesta videoaula da Univesp TV, você pode rever os conceitos relacionados ao gerenciamento de 
memória.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Como funcionam as diferentes memórias quando um 
computador está em uso
Compreenda o funcionamento dos diferentes tipos de memória presentes em computador e o 
propósito de cada um.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Gerência de memória
Conheça, de forma ilustrativa, o processo de gerência de memória que o sistema operacional 
realiza.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.youtube.com/embed/Q8ZqjEafmNc
https://www.tecmundo.com.br/armazenamento/9415-como-funcionam-as-diferentes-memorias-quando-o-computador-esta-em-uso.htm
https://sites.google.com/site/proffernandosiqueiraso/aulas/9-gerencia-de-memoria

Continue navegando