![Page 1: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/1.jpg)
Fundamentos de Sistemas Operacionais
Aula 18: Segmentação e Paginação
Diego Passos
![Page 2: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/2.jpg)
Última Aula
![Page 3: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/3.jpg)
MMU
● Dispositivo de hardware que auxilia o gerenciamento de memória.
● Verifica validade de endereços.● Realiza tradução de endereços lógicos para endereços
físicos.○ Processos acreditam que seu espaço de
endereçamento sempre começa no endereço 0.○ Na prática, SO pode alocar qualquer região da memória.
![Page 4: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/4.jpg)
Tipos de Alocação Primitivos
● Particionamentos.○ Fixo.○ Variável.
● Blocos contíguos de memória são alocados.○ Partições.
● Possibilidade de Fragmentação.○ Interna: bytes são perdidos dentro da partição.○ Externa: bytes são perdidos entre partições.
![Page 5: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/5.jpg)
Blocos Contíguos
● Não há "buracos" na região de memória alocada.● Os endereços lógicos consecutivos são mapeados para
posições consecutivas da memória física.● Simplifica o processo de tradução e verificação da MMU.
○ Comparação com o Registrador Limite.○ Soma com o Registrador Base.
● Duas grandes limitações: ○ Fragmentação externa.○ Impossibilidade de compartilhamento de memória.
● Se o SO pudesse alocar regiões não contíguas, ambas as limitações seriam resolvidas.
○ MMU precisaria ser bem mais complexa.
![Page 6: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/6.jpg)
Segmentação
![Page 7: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/7.jpg)
Ideia
● Primeira tentativade gerenciamento de memória com alocação não contígua.
● Utiliza a divisão natural do espaço de endereçamento.○ Texto.○ Dados.○ Pilha○ ...
● Cada uma destas divisões lógicas, se transforma em um bloco independente.
○ Menores que o espaço de endereçamento completo.○ Podem ser alocados de forma não contígua.
■ Usando qualquer método de alocação.
![Page 8: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/8.jpg)
Exemplo
![Page 9: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/9.jpg)
Exemplo
![Page 10: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/10.jpg)
Segmentos Típicos
● Em geral, processos são dividos em 4 segmentos típicos:○ Segmento de código.
■ Contém as instruções. ○ Segmento de dados.
■ Contém as variáveis estáticas (globais). ○ Segmento de heap.
■ Contém as variáveis alocadas dinamicamente. ○ Segmento de pilha.
■ Contém a pilha de execução. ● Nada impede que outros segmentos sejam criados.
![Page 11: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/11.jpg)
Endereços Lógicos na Segmentação
● Cada segmento recebem um identificador numérico não negativo.
○ Em geral, segmento de código é sempre 0.● Endereços lógicos são quebrados em duas partes:
○ Bits mais representativos indicam o identificador do segmento.
○ Bits menos significativos indicam deslocamento dentro do segmento.
● Exemplo:○ Dois bits para o segmento e 4 para o deslocamento. ○ Endereço lógico 010110.
■ Segmento 1.■ Deslocamento 6.
![Page 12: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/12.jpg)
Mapeamento de um Endereço Lógico
● Quando o SO cria um processo, ele aloca cada um dos segmentos.
○ Possivelmente em regiões diferentes da memória.● Tamanhos e posições dos segmentos são anotados em
uma Tabela de Segmentos.○ Identificador do segmento.○ Endereço base.
■ Endereço do primeiro byte do segmento. ○ Limite.
■ Tamanho do segmento.● A cada acesso à memória, MMU decompõe o endereço
lógico.○ Identificador do segmento é usado como índice na
tabela.○ Base e limite são carregados em registradores.
![Page 13: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/13.jpg)
Mapeamento de um Endereço Lógico (mais)
● Uma vez carregados os valores base e limite, tradução e verificação é identica aos esquemas de gerenciamento de memória baseados em bloco.
● Pode ocorrer da MMU não achar o segmento na tabela.○ Exemplo: processo tenta acessar um endereço no
segmento 20 e só há 8 segmentos.○ MMU gera uma interrupção avisando ao SO do acesso
ilegal.
![Page 14: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/14.jpg)
Mapeamento de um Endereço Lógico (mais)
![Page 15: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/15.jpg)
Acesso à Tabela de Segmentos
● Cada processo tem a sua própria tabela de segmentos. ● MMU precisa acessá-la de alguma forma.
○ Para carregar endereço base e limite.● Duas possibilidades:
○ MMU pode conter uma memória interna para a tabela.■ A cada troca de contexto, SO atualiza a tabela da
MMU.■ Torna a troca de contexto mais lenta.
○ MMU pode buscar a tabela na memória principal.■ Registradores específicos apontam para a tabela.■ Na troca de contexto, basta que o SO atualize estes
registradores.■ Acesso à memória fica mais lento.
■ São necessários dois acessos.
![Page 16: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/16.jpg)
Segmentação: Análise
● Não é um método de alocação.○ É um esquema de organização da memória de um
processo.● Auxilia na alocação, no entanto.
○ Blocos a serem alocados são menores.○ Reduz a fragmentação externa.
■ Blocos de memória física pequenos têm mais chance de serem usados.
● Simplifica compartilhamento de memória.○ Basta que processos compartilhem um segmento.○ Que pode ser alocado em qualquer região da memória
física.
![Page 17: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/17.jpg)
Segmentação: Análise (mais)
● Possibilita alocação dinâmica de memória.○ Por exemplo, com a função malloc().○ Se o processo precisa de mais memória, SO pode
simplesmente criar um novo segmento para ele.■ Desde que haja memória física disponível.
![Page 18: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/18.jpg)
Compartilhamento de Segmentos
● Processos podem compartilhar memória, compartilhando segmentos.
● Um único bloco alocado de memória física está presente nas tabelas de segmento de vários processos.
● Em geral, um processo requisita a criação de um novo segmento.
○ Uma vez criado, processo requisita que SO compartilhe o segmento com outros processos.
○ SO inclui entradas nas tabelas dos demais processos.● Note que um segmento compartilhado pode ter IDs
diferentes para processos diferentes.○ Tabelas de segmento fazem as conversões apropriadas.
![Page 19: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/19.jpg)
Compartilhamento de Segmentos (mais)
● Útil para a implementação das bibliotecas compartilhadas.○ Ao invés de carregar uma cópia do código para cada
processo, uma única cópia é carregada em um segmento.
○ Todos os processos que precisam da biblioteca compartilham o segmento.
![Page 20: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/20.jpg)
Paginação
![Page 21: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/21.jpg)
Motivação
● Segmentação reduz o problema da fragmentação externa.○ Blocos menores a serem alocados.○ Maior chance de aproveitar blocos de memória
"sobrando" entre partições.● Mas o problema não é completamente resolvido.
○ Cada segmento ainda é um bloco que precisa ser alocado de forma contígua.
○ Segmentos podem ser blocos grandes.● Solução é evitar completamente necessidade de alocação
contígua.○ A técnica de Paginação faz isso.
![Page 22: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/22.jpg)
Funcionamento
● Memória física é dividida em pequenos blocos de tamanho fixo, chamados quadros.
● Similar ao particionamento fixo, com 3 diferenças básicas.○ Quadros são muito menores que partições.
■ Alguns Kbytes.○ Quadros sempre têm o mesmo tamanho.
■ Partições podem ter tamanhos diferentes.○ Conjunto de quadros alocados para um processo não
precisa ser contíguo.● Espaço de endereçamento do processo é dividido em
pequenos blocos, chamados páginas.○ Do mesmo tamanho dos quadros.
● Cada página é colocada em um quadro da memória principal.
![Page 23: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/23.jpg)
Funcionamento (mais)
● Pode-se pensar nas páginas como segmentos do processo.○ No entanto, páginas são muito menores.
■ E em número muito maior.■ E em tamanho fixo.
○ Além disso, páginas não seguem uma divisão lógica do processo.
■ Espaço de endereçamento simplesmente é dividido em blocos do mesmo tamanho.
● Não confundir páginas e quadros.○ Páginas são os blocos do espaço de endereçamento.○ Quadros são os blocos da memória principal.
■ Páginas são mapeadas em quadros.
![Page 24: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/24.jpg)
Exemplo
![Page 25: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/25.jpg)
Endereçamento Lógico na Paginação
● Semelhante à segmentação.● Endereço lógico é dividido em duas componentes.
○ Número da página.○ Deslocamento dentro da página.
● MMU faz a decomposição e consulta a Tabela de Páginas do processo.
○ Contém as informações de mapeamento entre páginas e quadros.
● Endereço resultante é passado para a controladora da memória.
● Verificações de segurança são feitas como na segmentação.
![Page 26: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/26.jpg)
Exemplo de Tradução● Note que:
○ Não há na tabela campo Limite.○ Tradução se resume a troca de prefixo.
![Page 27: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/27.jpg)
Paginação: Análise
● Resolve completamente o problema da fragmentação externa.
○ Blocos de memória entre duas alocações são sempre ao menos do tamanho de um quadro.
○ Este quadro pode ser alocado para qualquer processo.● Há, no entanto, possibilidade de fragmentação interna.
○ Não é muito relevante.○ Quadros são pequenos.
● Escolha do tamanho do quadro é importante.○ Quadros grandes: menos quadros, menos overhead de
gerenciamento, mais fragmentação interna.○ Quadros pequenos: mais quadros, mais overhead de
gerenciamento, menos fragmentação interna.○ Geralmente, determinado pelo hardware.
![Page 28: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/28.jpg)
Paginação: Análise (mais)
● Outros benefícios da segmentação também são obtidos na paginação:
○ Fácil compartilhamento de memória.■ Processos compartilham páginas.
○ Fácil alocação dinâmica de memória.■ SO aloca novas páginas ao processo de acordo com
a necessidade.
![Page 29: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/29.jpg)
Gerenciamento de Quadros Disponíveis
● SO precisa manter informações sobre os quadros livres.○ Usada durante a alocação de um novo processo.
● Esta manipulação precisa ser eficiente.○ Rápida.○ Com baixo consumo de memória.
● Três maneiras comuns:○ Tabela.
■ Tende a ficar muito grande, pois há muitos quadros.○ Mapa de bits.
■ Ainda é grande: 1 milhão de bits para memória de 4GB.
○ Lista encadeada de blocos livres.■ Se não há muitos "buracos" na memória, lista se
mantém pequena.
![Page 30: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/30.jpg)
Acesso às Tabelas de Páginas
● MMU precisa acessar a tabela de páginas de cada processo.
○ Similar à segmentação.● Três maneiras de se fazer isso.
○ Memória interna da MMU.■ Só aplicável se tabelas de páginas forem muito
pequenas.■ Raro.
○ Ponteiros para a memória principal.■ Registrador PTBR (Page Table Base Register).■ Registrador PTLR (Page Table Limit Register).■ Duplica o número de acessos à memória.
○ TLB.
![Page 31: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/31.jpg)
Translation Lookaside Buffer
● Memória cache interna à MMU.● Mantém algumas entradas muito acessadas das tabelas de
páginas dos processos.● Quando a MMU precisa fazer a tradução de um endereço
lógico:○ Verifica se a entrada da tabela de páginas do processo
referente à página desejada está na TLB.○ Se sim, tradução é feita e acesso à memória é rápido.○ Se não, vai à memória principal (usando registradores
PTBR e PTLR).■ Neste caso, acesso é bem mais lento.
● Se o percentual de acerto da TLB é alto, tempo médio de acesso à memória é baixo.
○ Overhead da paginação é baixo.
![Page 32: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/32.jpg)
Translation Lookaside Buffer (mais)
![Page 33: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/33.jpg)
Translation Lookaside Buffer (mais)
● Implementada através de uma cache totalmente associativa.
○ Buscas são feitas totalmente em paralelo.○ Muito eficiente.○ Muito caro.
■ Espaço de armazenamento reduzido.● Processadores modernos têm TLBs com capacidade
variando de 8 a 4096 entradas.○ Na prática,suficiente para taxa de acerto acima dos
99%.○ Overhead do tempo de acesso fica abaixo dos 30%.
![Page 34: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/34.jpg)
Translation Lookaside Buffer (mais)
● Quando à troca de contexto, TLB contém ainda informações sobre o processo anterior.
○ Entradas da tabela de páginas dele.○ Obviamente, diferentes das entradas do novo processo.
● Isso exige que o SO faça um flush da TLB.● Em alguns processadores, a TLB guarda também o PID do
processo (para cada entrada).○ SO não precisa fazer flush.○ Acelera a troca de contexo.
![Page 35: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/35.jpg)
Outras Informações da Tabela de Páginas
● Basicamente, a tabela de páginas precisa guardar apenas o mapeamento entre número de página e número de quadro.
● Em geral, há também outras informações:○ Bit de validade:
■ Diz a página é válida ou não.○ Bits de permissão:
■ Dizem se a página pode ser lida, escrita ou executada.
![Page 36: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/36.jpg)
Segurança
● A tabela de páginas não pode ser guardada no espaço de endereçamento do processo.
○ Processo poderia alterá-la para acessar regiões de memória indevidas.
○ Armazenamento deve ser feito em área restrita ao SO.● Manipulação dos registradores PTBR e PTLR devem ser
privilegiadas.○ Apenas possível em modo supervisor.
![Page 37: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/37.jpg)
Implementação das Tabelas de Página
● Consultas devem ser rápidas.● Solução comum: acesso direto.
○ Tabela é um vetor indexado pelo número da página desejada.
● Problema:○ A tabela precisa ser extensiva.○ Todas as entradas possíveis devem ser listadas.○ Nem todas as páginas listadas são usadas.
■ Exemplo: pilha de execução.
![Page 38: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/38.jpg)
Implementação das Tabelas de Página (mais)
![Page 39: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/39.jpg)
Implementação das Tabelas de Página
● Estes "buracos" fazem com que a tabela seja grande desnecessariamente.
● Por outro lado, é preciso que a tabela contenha todas as entradas possíveis.
● Solução:○ Paginação Multinível.
![Page 40: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/40.jpg)
Paginação Multinível
● Processos não tem mais apenas uma tabela de páginas.● São várias tabelas, organizadas em uma hierarquia.● Existe uma tabela principal, relativamente pequena.
○ Às vezes chamada de Diretório de Páginas.○ Tem a função de agrupar páginas.○ Contém um ponteiro para tabelas de páginas de um
nível mais baixo.● No nível mais baixo da hierarquia, as tabelas contém as
informações de mapeamento.
![Page 41: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/41.jpg)
Paginação Multinível (mais)
![Page 42: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/42.jpg)
Paginação Multinível (mais)
● Endereços lógicos agora são divididos em mais componentes.
○ Além do deslocamento, há um componente para cada um dos níveis da tabela de página.
● Exemplo com dois níveis (80386):○ Primeiros 10 bits representam índice na tabela principal.○ Próximos 10 bits representam índice na tabela do
segundo nível.○ Últimos 12 bits são o deslocamento.
![Page 43: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/43.jpg)
Paginação Multinível (mais)
![Page 44: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/44.jpg)
Tabela de Páginas Invertida
● Outro método para evitar o crescimento das tabelas de páginas dos processos.
● Ideia é indexar a tabela de páginas pelos quadros da memória principal, e não pelas páginas dos processos.
● Vantagens:○ Uma única tabela.○ Sem os "buracos" da tabela de páginas normal.
● Desvantagens:○ Tradução é muito mais complicada.○ Exige uma busca na tabela pelo número da página
desejado (e pelo PID do processo).● TLB ameniza este problema (por ser associativa).
○ Porém, quando entrada não está na TLB, acesso é bem mais lento.
![Page 45: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/45.jpg)
Paginação com Segmentação
![Page 46: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/46.jpg)
Ideia
● Combinar os dois métodos de gerenciamento de memória.○ Espaço de endereçamento do processo é segmentado.○ Cada segmento é dividido em páginas.○ Páginas são alocadas em quadros na memória principal.
● Endereço lógico agora tem componentes tanto para o número de página, quanto para o número de segmento.
○ Processos têm uma tabela de segmentos.○ Mas também várias tabelas de páginas.
● Processo de tradução tem duas etapas:○ MMU identifica número do segmento.
■ Entrada na tabela de segmentos aponta para a tabela de páginas correspondente.
○ Tabela de páginas é acessada e número do quadro é encontrado.
![Page 47: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/47.jpg)
Motivação
● A paginação com segmentação não traz grandes benefícios.
○ Em relação à paginação pura.● Quando os processadores passaram a suportar paginação,
segmentação já era uma técnica estabelecida.● Conceitos acabaram se misturando.● Hoje, é um método de gerenciamento de memória que está
sendo abandonado.● Processadores mais novos (especificamente, de 64 bits) já
praticamente deixaram de suportar.
![Page 48: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/48.jpg)
Revisão
![Page 49: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula18.pdf · Acesso à Tabela de Segmentos Cada processo tem a sua própria tabela de segmentos. MMU precisa acessá-la](https://reader034.vdocuments.pub/reader034/viewer/2022043008/5f992c3add95364b14176344/html5/thumbnails/49.jpg)
Para Lembrar
● Problemas da alocação contígua:○ Fragmentação Externa.○ Dificuldade de compartilhamento.○ Dificuldade de alocação dinâmica de memória.
● Segmentação:○ Divisão do processo em segmentos.○ Segmentos não precisam ser alocados juntos.○ Necessária uma tabela de segmentos.
● Paginação:○ Divisão do processo em páginas.○ Divisão da memória em quadros.○ Necessária tabela de páginas.
■ TLB, paginação multinível, tabelas invertidas.