Buscar

SISTEMA OPERACIONAIS TEMP 4 -3 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 23 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 23 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 23 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

Memória virtual: segmentação
Apresentação
Mecanismos de paginação de memória resolvem o problema da escassez de memória principal no 
computador, estendendo o espaço de endereçamento além da capacidade instalada na máquina. A 
paginação, no entanto, é uma abordagem limitada por oferecer um único espaço de endereçamento 
linear. Isso pode causar problemas quando programas crescem na memória e precisam alocar muito 
mais espaço do que outros programas em execução.
Os mecanismos de segmentação visam a permitir a existência de múltiplos espaços de 
endereçamento que possam crescer de forma independente, sem interferir ou sofrer interferência 
dos espaços de outros processos. O uso de segmentação também pode fazer com que a memória 
disponível seja usada de forma mais eficiente, pois é possível contar com propriedades de proteção 
de memória que permitem o compartilhamento seguro de segmentos de memória para usos 
específicos.
Nesta Unidade de Aprendizagem, você aprenderá o conceito de segmentação de memória, como as 
abordagens desse tipo funcionam e como elas se diferenciam do modelo de paginação de memória. 
Com a implementação de segmentação pura, você será apresentado ao problema da fragmentação 
de memória.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Explicar o funcionamento de segmentação.•
Comparar paginação e segmentação.•
Discutir a implementação de segmentação pura.•
Desafio
A aplicação de mecanismos de memória virtual, como a paginação e a segmentação, exige que, a 
cada leitura de memória efetuada pelo processador, um tipo de tradução seja realizado da posição 
de memória virtual indicada pela instrução que o processador está executando para a posição na 
memória física onde os dados referenciados pela memória virtual realmente estão presentes.
Na segmentação, cada posição de memória pode ser referenciada a partir de um par de 
informações: o número do segmento X e a posição de memória dentro do segmento Y. Ao receber 
o valor X,Y, o sistema deve verificar se o segmento X está carregado em memória. Se o segmento 
ainda não está disponível, ele deve carregá-lo (a depender do nível de fragmentação, antes de 
carregar pode ser necessário efetuar uma compactação). 
Com o segmento X na memória, a tradução pode ocorrer para obter a posição real do dado a ser 
acessado. Obtém-se a posição base do segmento X na memória principal, e é somado Y a esse 
valor. O resultado desse processo é a posição na memória física relativa ao par X,Y informado, e 
com esse valor é possível obter os dados e retorná-los ao processador para que o processo 
continue a sua execução. 
 
A partir das informações acima, responda aos seguintes questionamentos:
a) Se o processador tentar acessar a posição 256 do segmento 2, qual posição na memória principal 
precisaria ser acessada?
b) Se o processador tentar acessar a posição 4224 do segmento 1, qual posição na memória 
principal precisaria ser acessada? O acesso a essa posição de memória teria sucesso? Explique a sua 
resposta.
c) Com base na observação do cenário descrito, explique por que os dados de um segmento 
precisam ser carregados completos e de forma contínua na memória principal.
Infográfico
A fragmentação de memória ocorre quando lacunas vão sendo acumuladas na memória principal na 
medida em que os segmentos, que têm tamanho variável, são carregados, removidos e substituídos. 
Em casos extremos, a memória principal pode ter espaço suficiente para carregar um segmento, 
mas não ser capaz de suportá-lo, pois esse espaço é não contínuo, ou seja, está fragmentado. Nessa 
situação, é necessário executar rotinas de desfragmentação da memória, como a compactação, 
fazendo movimentações na memória para que haja espaço contínuo livre na memória principal.
No Infográfico a seguir, você poderá compreender visualmente o que é a fragmentação de 
memória, em que situação ela ocorre e qual procedimento pode ser tomado para resolver esse 
problema.
 
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/c19eb26a-a4be-4ed2-988b-76a75cf66ac2/f04eacd9-e35f-480c-99f2-7d9a5a5c6ce3.jpg
Conteúdo do livro
A segmentação de memória é uma abordagem para lidar com a memória virtual, que permite que 
existam vários espaços de endereçamento separados. Essa implementação de memória virtual, na 
qual cada programa tem conhecimento de seu próprio espaço de endereçamento, é muito útil para 
o desenvolvimento de sistemas mais complexos. 
Como cada segmento tem a sua própria posição zero, e toda a sua memória é indexada a partir 
dessa posição, os programas podem crescer sem causar problemas para outros dados que são 
armazenados na memória do computador. Isso também permite que o programa seja carregado em 
qualquer posição de memória inicial fisicamente.
Leia o capítulo Memória virtual: segmentação, da obra Sistemas Operacionais, no qual você irá 
aprender o funcionamento dos mecanismos de segmentação de memória e entenderá como ele se 
difere das estratégias de paginação.
 
T164s Tanenbaum, Andrewa S.
 Sistemas operacionais [recurso eletrônico] : projeto e
 implementação / Andrew S. Tanenbaum, Albert S. Woodhull ;
 tradução João Tortello. – 3. ed. – Dados eletrônicos. – Porto
 Alegre : Bookman, 2008.
 Editado também como livro impresso em 2008.
 ISBN 978-85-7780-285-2
 1. Sistemas operacionais. I. Woodhull, Albert S. II. Título.
 CDU 004.4
Catalogação na publicação: Mônica Ballejo Canto – CRB 10/1023
CAPÍTULO 4 • GERENCIAMENTO DE MEMÓRIA 383
O compartilhamento de páginas também pode ser usado para implementar um sistema 
de passagem de mensagens de alto desempenho. Normalmente, quando as mensagens são 
passadas, os dados são copiados de um espaço de endereçamento para outro a um custo 
considerável. Se os processos puderem controlar seus mapas de página, uma mensagem po-
derá ser passada, com o processo remetente desfazendo o mapeamento da(s) página(s) que 
contém(êm) a mensagem e o processo receptor mapeando-a(s) novamente. Aqui, apenas os 
nomes de página precisam ser copiados, em vez de todos os dados.
Uma outra técnica avançada de gerenciamento de memória é a memória comparti-
lhada distribuída (Feeley et al., 1995; Li e Hudak, 1989; e Zekauskas et al., 1994). A idéia 
aqui é permitir que vários processos em uma rede compartilhem um conjunto de páginas, 
possivelmente (mas não necessariamente) como um único espaço de endereçamento linear 
compartilhado. Quando um processo referencia uma página que não está correntemente ma-
peada, obtém uma falta de página. Então, a rotina de tratamento de falta de página, que pode 
estar em espaço de núcleo ou em espaço de usuário, localiza a máquina que contém a página 
e envia para ela uma mensagem pedindo para que desfaça o mapeamento da página e a envie 
pela rede. Quando a página chega, é mapeada e a instrução que provocou a falta de página é 
reiniciada.
 4.6 SEGMENTAÇÃO
A memória virtual discutida até aqui é unidimensional, pois os endereços virtuais vão de 0 até 
algum endereço máximo, um endereço após o outro. Para muitos problemas, ter dois ou mais 
espaços de endereçamento virtuais separados pode ser muito melhor do que ter apenas um. 
Por exemplo, um compilador tem muitas tabelas que são construídas à medida que a compi-
lação prossegue, possivelmente incluindo:
 1. O salvamento do texto do código-fonte para a listagem impressa (em sistemas de 
lote).
 2. A tabela de símbolos, contendo os nomes e atributos das variáveis.
 3. A tabela contendo todas as constantes inteiras e em ponto fl utuante usadas.
 4. A árvore de análise, contendo a análise sintática do programa.
 5. A pilha usada para chamadas de função dentro do compilador.
Cada uma das quatro primeiras tabelas cresce continuamente, à medida que a compila-
ção prossegue. A última aumenta e diminui de maneiras imprevisíveis durante a compilação. 
Em uma memóriaunidimensional, para essas cinco tabelas, teriam de ser alocados trechos 
adjacentes do espaço de endereçamento virtual, como se vê na Figura 4-21.
Considere o que acontecerá se um programa tiver um número excepcionalmente grande 
de variáveis, mas uma quantidade normal do restante. O trecho do espaço de endereçamento 
alocado para a tabela de símbolos poderá ser totalmente preenchido, mas ainda poderá haver 
muito espaço disponível nas outras tabelas. Naturalmente, o compilador poderia simplesmen-
te emitir uma mensagem dizendo que a compilação não pode continuar devido à existência de 
variáveis demais, mas fazer isso não parece muito justo, quando resta espaço sem utilização 
nas outras tabelas.
Outra possibilidade é brincar de Robin Hood, roubando espaço das tabelas com excesso 
de espaço e dando-o para as tabelas com pouco espaço. Essa troca pode ser feita, mas é aná-
logo a gerenciar os próprios overlays – na melhor das hipóteses, um incômodo, e, na pior, um 
trabalho enorme e sem recompensa.
384 SISTEMAS OPERACIONAIS
O que é realmente necessário é uma maneira de fazer com que o programador não tenha 
que gerenciar o aumento e a redução das tabelas, da mesma maneira que a memória virtual 
elimina a preocupação de organizar o programa em overlays.
Uma solução simples e extremamente geral é fornecer à máquina vários espaços de 
endereçamento completamente independentes, chamados de segmentos. Cada segmento con-
siste em uma seqüência linear de endereços, de 0 até algum máximo. O comprimento de cada 
segmento pode ser qualquer um, de 0 até o máximo permitido. Diferentes segmentos podem 
ter (e normalmente têm) comprimentos diferentes. Além disso, o comprimento dos segmen-
tos pode mudar durante a execução. O comprimento de um segmento de pilha pode aumentar 
quando algo for colocado na pilha e diminuir quando algo for retirado dela.
Como cada segmento constitui um espaço de endereçamento separado, diferentes seg-
mentos podem aumentar ou diminuir independentemente, sem afetar uns aos outros. Se uma 
pilha em determinado segmento precisa de mais espaço de endereçamento para crescer, ela 
pode tê-lo, pois não há mais nada em seu espaço de endereçamento para colidir. É claro que 
um segmento pode ser preenchido, mas os segmentos normalmente são muito grandes, de 
modo que essa ocorrência é rara. Para especifi car um endereço nessa memória segmentada, 
ou bidimensional, o programa precisa fornecer um endereço de duas partes, um número de 
segmento e um endereço dentro do segmento. A Figura 4-22 ilustra uma memória segmen-
tada sendo usada para as tabelas de compilador discutidas anteriormente. Cinco segmentos 
independentes são mostrados aqui.
Salientamos que, em sua forma mais pura, um segmento é uma entidade lógica, da qual 
o programador está ciente e a usa como tal. Um segmento pode conter uma ou mais funções, 
um array, uma pilha ou um conjunto de variáveis escalares, mas normalmente ele não contém 
uma mistura de tipos diferentes.
Uma memória segmentada tem outras vantagens, além de simplifi car a manipulação de 
estruturas de dados que crescem ou diminuem. Se cada função ocupa um segmento separado, 
com o endereço 0 como seu endereço inicial, a ligação de funções compiladas separadamente 
é bastante simplifi cada. Depois que todas as funções que constituem um programa tiverem 
Árvore de análise
Pilha de chamadas
Espaço correntemente
usado pela árvore de análise
Livre
Espaço de endereçamento virtual
Tabela de símbolos
A tabela de símbolos
colidiu com a tabela
do texto do código-fonte
Espaço de
endereçamento
alocado para a
árvore de análise
Texto do
código-fonte
Tabela de
constantes
Figura 4-21 Em um espaço de endereçamento unidimensional com tabelas que crescem, 
uma tabela pode colidir com outra.
CAPÍTULO 4 • GERENCIAMENTO DE MEMÓRIA 385
sido compiladas e ligadas, uma chamada para a função no segmento n usará o endereço de 
duas partes (n, 0) para endereçar a palavra 0 (o ponto de entrada).
Se a função no segmento n for subseqüentemente modifi cada e recompilada, nenhuma 
outra função precisará ser alterada (pois nenhum endereço inicial foi modifi cado), mesmo que 
a nova versão seja maior do que a antiga. Com uma memória unidimensional, as funções são 
concisamente empacotadas uma ao lado da outra, sem nenhum espaço de endereçamento entre 
elas. Conseqüentemente, alterar o tamanho de uma função pode afetar o endereço inicial de ou-
tras funções não relacionadas. Isso, por sua vez, exige modifi car todas as funções que chamam 
qualquer uma das funções deslocadas por essa alteração para incorporar seus novos endereços 
iniciais. Se um programa contém centenas de funções, esse processo pode ser dispendioso.
A segmentação também facilita o compartilhamento de funções ou dados entre vários 
processos. Um exemplo comum é o de biblioteca compartilhada. As estações de trabalho mo-
dernas que executam avançados sistemas de janelas, freqüentemente têm bibliotecas gráfi cas 
extremamente grandes compiladas em praticamente todo programa. Em um sistema segmenta-
do, a biblioteca gráfi ca pode ser colocada em um segmento e compartilhada por vários proces-
sos, eliminando a necessidade de tê-la no espaço de endereçamento de cada processo. Embora 
também seja possível ter bibliotecas compartilhadas nos sistemas de paginação puros, isso é 
muito mais complicado. Na verdade, esses sistemas fazem isso simulando a segmentação.
Como cada segmento forma uma entidade lógica da qual o programador está ciente, 
como uma função, um array ou uma pilha, diferentes segmentos podem ter diferentes tipos 
de proteção. Um segmento de função pode ser especifi cado como apenas de execução, proi-
bindo tentativas de leitura ou de armazenamento de dados nele. Um array em ponto fl utuante 
pode ser especifi cado como de leitura/escrita, mas não execução, e as tentativas de “executá-
lo” serão detectadas. Tal proteção é útil na identifi cação de erros de programação.
Você deve tentar entender por que a proteção faz sentido em uma memória segmentada, 
mas não em uma memória paginada unidimensional. Em uma memória segmentada, o usuá-
rio está ciente do que há em cada segmento. Normalmente, um segmento não conteria uma 
função e uma pilha, por exemplo, mas uma ou a outra. Como cada segmento contém apenas 
um tipo de objeto, o segmento pode ter a proteção apropriada para esse tipo em particular. A 
paginação e a segmentação são comparadas na Figura 4-23.
Tabela de
símbolos
Texto do
código-fonte
Constantes
Árvore
de análise
Pilha
Segmento
0
Segmento
1
Segmento
2
Segmento
3
Segmento
4
20K
16K
12K
8K
4K
0K
12K
8K
4K
0K 0K
16K
12K
8K
4K
0K
12K
8K
4K
0K
Figura 4-22 Uma memória segmentada permite que cada tabela aumente ou diminua inde-
pendentemente das outras tabelas.
386 SISTEMAS OPERACIONAIS
Consideração Paginação Segmentação
O programador precisa estar ciente de 
que essa técnica está sendo utilizada?
Não Sim
Quantos espaços de endereços lineares 
existem?
1 Muitos
O espaço de endereçamento total pode 
ultrapassar o tamanho da memória 
física?
Sim Sim
As funções e os dados podem 
ser distinguidos e protegidos 
separadamente?
Não Sim
As tabelas cujo tamanho varia podem 
ser acomodadas facilmente?
Não Sim
O compartilhamento de funções entre os 
usuários é facilitado?
Não Sim
Por que essa técnica foi inventada? Para se obter 
um espaço de 
endereçamento linear 
sem ter de comprar 
mais memória física
Para permitir que 
programas e dados sejam 
divididos em espaços de 
endereçamento logicamente 
independentes e para ajudar 
no compartilhamento e na 
proteção
Figura 4-23 Comparação entre paginação e segmentação.
De certo modo, o conteúdo de uma página é acidental. O programador ignora até mes-
mo o fato de que a paginação está ocorrendo. Embora fosse possível colocar alguns bits em 
cada entrada da tabela de páginas para especifi car o acesso permitido, o programador para 
utilizar esse recurso teria de monitorar onde estariam todos os limites de página emseu espa-
ço de endereçamento. Entretanto, a paginação foi inventada para eliminar precisamente esse 
tipo de gerenciamento mais complexo. Como o usuário de uma memória segmentada tem a 
ilusão de que todos os segmentos estão o tempo todo na memória principal – isto é, ele pode 
endereçá-los como se estivessem lá –, ele pode proteger cada segmento separadamente, sem 
precisar se preocupar com a administração de overlays.
 4.6.1 Implementação da segmentação pura
A implementação da segmentação difere da paginação de uma maneira fundamental: as 
páginas têm tamanho fi xo e os segmentos, não. A Figura 4-24(a) mostra um exemplo de me-
mória física contendo inicialmente cinco segmentos. Agora, considere o que acontece se o 
segmento 1 é eliminado e o segmento 7, que é menor, for colocado em seu lugar. Chegamos 
à confi guração de memória da Figura 4-24(b). Entre o segmento 7 e o segmento 2 existe uma 
área não utilizada – isto é, uma lacuna. Então, o segmento 4 é substituído pelo segmento 5, 
como na Figura 4-24(c), e o segmento 3 é substituído pelo segmento 6, como na Figura 4-
24(d). Depois que o sistema tiver executado por algum tempo, a memória será dividida em 
várias porções, algumas contendo segmentos e outras contendo lacunas. Esse fenômeno, 
chamado de checkboarding (formação de um tabuleiro de xadrez) ou fragmentação exter-
na, desperdiça memória nas lacunas. Isso pode ser tratado com compactação, como se vê na 
Figura 4-24(e).
CAPÍTULO 4 • GERENCIAMENTO DE MEMÓRIA 387
(c)(b)(a) (d) (e)
Segmento 0
(4K)
Segmento 7
(5K)
Segmento 2
(5K)
Segmento 5
(4K)
(3K)
Segmento 3
(8K) Segmento 6
(4K)
(3K)
Segmento 0
(4K)
Segmento 7
(5K)
Segmento 2
(5K)
Segmento 3
(8K)
(3K)
Segmento 2
(5K)
Segmento 0
(4K)
Segmento 1
(8K)
Segmento 4
(7K)
Segmento 4
(7K)
Segmento 3
(8K)
Segmento 0
(4K)
Segmento 7
(5K)
Segmento 2
(5K)
(3K)
Segmento 5
(4K)
(3K)
(4K)
Segmento 0
(4K)
Segmento 7
(5K)
Segmento 2
(5K)
Segmento 6
(4K)
Segmento 5
(4K)
(10K)
Figura 4-24 (a)-(d) Desenvolvimento da fragmentação externa. (e) Eliminação da fragmen-
tação externa pela compactação.
 4.6.2 Segmentação com paginação: o Pentium Intel
O Pentium suporta até 16K segmentos, cada um com até 232 bytes de espaço de endereça-
mento virtual. O Pentium pode ser confi gurado (pelo sistema operacional) para usar apenas 
segmentação, apenas paginação ou ambos. A maioria dos sistemas operacionais, incluindo 
o Windows XP e todos os tipos de UNIX, usa o modelo de paginação puro, no qual cada 
processo tem um único segmento de 232 bytes. Como o Pentium é capaz de fornecer aos pro-
cessos um espaço de endereçamento muito maior, e apenas um sistema operacional (OS/2) 
usava todo esse poder de endereçamento, descreveremos o funcionamento da memória virtual 
do Pentium em toda sua generalidade.
O centro da memória virtual do Pentium consiste em duas tabelas, a LDT (Local Des-
criptor Table – tabela de descritores local) e a GDT (Global Descriptor Table – tabela de 
descritores global). Cada programa tem sua própria LDT, mas há apenas uma GDT, compar-
tilhada por todos os programas no computador. A LDT descreve os segmentos locais de cada 
programa, incluindo seu código, dados, pilha etc., enquanto a GDT descreve os segmentos de 
sistema, incluindo o sistema operacional em si.
Para acessar um segmento, um programa primeiro carrega um seletor para esse segmen-
to em um dos seis registradores de segmento do processador. Durante a execução, o registra-
dor CS armazena o seletor do segmento de código e o registrador DS armazena o seletor do 
segmento de dados. Os outros registradores de segmento são menos importantes. Cada seletor 
é um número de 16 bits, como se vê na Figura 4-25.
Um dos bits do seletor informa se o segmento é local ou global (isto é, se ele está na 
LDT ou na GDT). Outros 13 bits especifi cam o número de entrada da LDT ou da GDT; por-
Índice
0 = GDT/1 = LDT Nível de privilégio (0-3)
Bits 13 1 2
Figura 4-25 Um seletor do Pentium.
Dica do professor
Apesar de tanto a segmentação como a paginação serem abordagens para implementação de 
memória virtual em sistemas operacionais, cada uma delas contém motivações diferentes, e, dessa 
forma, são implementadas seguindo abordagens distintas. É possível usar ambos os mecanismos em 
conjunto, de forma que os objetivos tanto da paginação como da memória virtual sejam atendidos 
no sistema. Inclusive, processadores, como os Intel da família Intel64 e IA-32, dão suporte via 
hardware para abordagens de uso misto de paginação com segmentação.
Nesta Dica do Professor, você poderá conferir as principais diferenças existentes entre 
segmentação e paginação de memória. Serão apresentadas questões técnicas e práticas do ponto 
de vista de programadores, assim como princípios que orientaram a criação de cada um desses 
mecanismos. 
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/1d67f10ab5d71f596bee2a51dc9ea157
Exercícios
1) A carga de trabalho de alguns tipos de programa faz com que sua alocação de memória seja 
imprevisível em tempo de desenvolvimento. Dependendo da entrada repassada para o 
programa, em uma execução pode ser necessário que a estrutura X tenha uma quantidade 
de memória alocada maior que a estrutura Y, mas outra entrada pode exigir do mesmo 
programa exatamente o contrário, ou seja, mais memória para a estrutura Y do que para a 
estrutura X.
Assinale a alternativa que explica corretamente como a segmentação permite que um 
programa tenha estruturas em memória que possam crescer de forma independente, sem 
causar interferência umas nas outras:
A) A segmentação permite que a memória seja dividida em partes de tamanhos iguais, que 
podem ser alocadas individualmente.
B) A segmentação permite que existam vários espaços de endereçamento de tamanhos 
diferentes e independentes.
C) A segmentação permite que um único espaço de endereçamento seja compartilhado por 
várias estruturas.
D) A segmentação permite a criação de múltiplos espaços de endereçamento, todos com o 
mesmo tamanho, porém independentes.
E) A segmentação evita a ocorrência de fragmentação externa na medida em que os segmentos 
são carregados na memória.
2) Bibliotecas compartilhadas são muito usadas para permitir a modularização de sistemas 
operacionais e aplicações. Elas permitem a evolução do software sem a necessidade de uma 
recompilação completa, por exemplo. Mesmo sistemas operacionais que não têm suporte à 
segmentação implementam alternativas para permitir o uso do conceito de bibliotecas 
compartilhadas.
Assinale a alternativa que descreve corretamente como o uso de segmentação otimiza o uso 
de bibliotecas compartilhadas:
A) Espaços de endereçamento independentes, cada um com uma base zero, permitem que a 
biblioteca compartilhada seja carregada apenas uma vez na memória.
B) Bibliotecas compartilhadas podem ser carregadas em fragmentos separados, permitindo uma 
maior distribuição do código na memória principal.
C) A memória unidimensional oferecida pelo modelo de segmentação permite que a biblioteca 
compartilhada tenha endereços fixos sem a necessidade de alteração para uso por outros 
processos.
D) A disponibilidade de mecanismos de proteção no modelo de segmentação permite que a 
biblioteca compartilhada tenha endereços fixos sem a necessidade de alteração para uso por 
outros processos.
E) O espaço de endereçamento único, com apenas uma base zero, permite que a biblioteca 
compartilhada seja carregada apenas uma vez na memória, sendo essa mesma instância usada 
por todos os processos.
3) Paginação e segmentação são abordagens diferentes para a implementação de memória 
virtual, cada uma com seus objetivos, vantagens e desvantagens. Apesar do mecanismo de 
paginação ser mais presente nos principais sistemas operacionais contemporâneos, as ideias 
gerais do mecanismo de segmentação de memória também são aplicadas.
Assinale a alternativacorreta sobre as características dos mecanismos de paginação e 
segmentação:
A) Ao contrário da paginação, na segmentação, não é possível definir níveis de proteção 
distintos para cada segmento.
B) Ao contrário da segmentação, a paginação exige que o desenvolvedor projete o sistema 
ciente de que há um mecanismo de paginação.
C) A segmentação não permite que cada segmento cresça de forma independente, sem interferir 
em outros segmentos.
D) A paginação exige que páginas sequenciais sejam carregadas de forma contínua na memória 
principal.
E) Tanto a paginação como a segmentação permitem que o espaço de endereçamento total seja 
maior que a memória principal disponível.
A fragmentação de memória é um problema sério, que pode causar redução de performance 
do sistema ou impossibilitar o seu uso. Identificar a sua ocorrência nem sempre é uma tarefa 
simples.
4) 
Assinale a alternativa que contém a afirmação correta sobre fragmentação de memória:
A) Não é possível ocorrer fragmentação de memória com o uso de paginação, apenas com 
segmentação.
B) A fragmentação externa, quando não tratada, tem sintomas similares à falta de memória 
principal disponível.
C) A fragmentação interna é o principal tipo de fragmentação possível com o uso de 
segmentação.
D) A fragmentação não ocorre se há memória principal disponível no sistema.
E) A fragmentação interna tem resolução mais simples do que a externa.
5) Apesar de ser um problema sério, a fragmentação de memória tem na compactação da 
memória uma solução relativamente simples, apesar de computacionalmente cara.
Assinale a alternativa correta sobre o uso de compactação para resolver a fragmentação 
externa de memória.
A) A compactação reduz o tamanho de cada segmento, liberando mais espaço livre na memória 
principal.
B) A compactação escolhe o segmento menos usado para ser removido da memória principal.
C) A compactação move os segmentos na memória principal para aumentar o espaço livre 
contínuo.
D) A compactação transfere dados entre os segmentos, para aumentar o espaço livre na 
memória.
E) A compactação executa um algoritmo de substituição de segmento quando não há espaço 
livre contínuo.
Na prática
Problemas relacionados à fragmentação de memória tendem a ser difíceis de se identificar. Um 
sistema sofrendo com alto nível de fragmentação terá sintomas similares ao de um computador, no 
qual não há memória principal disponível. No entanto, o sistema pode indicar que há muita 
memória livre, induzindo o profissional, que está analisando o problema, ao erro de acreditar que 
não há nada de errado com a memória. Nesse caso, apesar de haver memória disponível, ela não é 
contínua, e não poderá ser alocada para um processo caso seja solicitado um espaço maior do que 
o maior bloco de memória livre contínuo.
Na Prática, você verá um caso real de análise de um problema de fragmentação de memória em um 
servidor de grande porte focado na disponibilização de um serviço de banco de dados. 
 
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/97f09db3-6d8f-4b35-8a90-4c6102489a8f/4550d1c0-d330-4c07-8480-44fc4c97bbaf.jpg
 
 
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Segmentação e paginação combinada com segmentação
Nestas seções do livro Princípios Básicos de Arquitetura e Organização de Computadores, você poderá 
aprender mais detalhes sobre o mecanismo de segmentação, assim como de sua implementação em 
conjunto ao uso de paginação.
Conteúdo interativo disponível na plataforma de ensino!
Gerência de memória
Este vídeo apresenta três estratégias para alocar um bloco de memória em um sistema baseado em 
uma abordagem que permita a ocorrência de fragmentação externa, como a segmentação. Cada 
uma das estratégias discutidas tenta minimizar os efeitos da fragmentação externa de uma forma 
diferente.
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/Q2yRR1SmdK4

Continue navegando