• Nenhum resultado encontrado

Fundamentos de Sistemas Operacionais

N/A
N/A
Protected

Academic year: 2022

Share "Fundamentos de Sistemas Operacionais"

Copied!
49
0
0

Texto

(1)

Fundamentos de Sistemas Operacionais

Aula 18: Segmentação e Paginação

Diego Passos

(2)

Última Aula

(3)

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.

(4)

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.

(5)

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.

(6)

Segmentação

(7)

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.

(8)

Exemplo

(9)

Exemplo

(10)

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.

(11)

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.

(12)

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.

(13)

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.

(14)

Mapeamento de um Endereço Lógico

(mais)

(15)

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.

(16)

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.

(17)

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.

(18)

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.

(19)

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.

(20)

Paginação

(21)

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.

(22)

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.

(23)

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.

(24)

Exemplo

(25)

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.

(26)

Exemplo de Tradução

● Note que:

○ Não há na tabela campo Limite.

○ Tradução se resume a troca de prefixo.

(27)

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.

(28)

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.

(29)

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.

(30)

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.

(31)

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.

(32)

Translation Lookaside Buffer (mais)

(33)

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%.

(34)

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.

(35)

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.

(36)

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.

(37)

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.

(38)

Implementação das Tabelas de Página

(mais)

(39)

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.

(40)

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.

(41)

Paginação Multinível (mais)

(42)

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.

(43)

Paginação Multinível (mais)

(44)

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.

(45)

Paginação com Segmentação

(46)

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.

(47)

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.

(48)

Revisão

(49)

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.

Referências

Documentos relacionados

Após pesquisa realizada com 20 usuários do Spotify, combinando entrevistas e análise de dados, os resultados mostram que a facilidade de acesso incentiva a descoberta de

A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se baseia no fato de que uma

Ellen Semple, discípu l a de Ratzel, discorre sobre as influências das condições geográficas (configuração da costa, padrão dos rios, cadeias de mon - tanhas,

Uma explicação pode ser a semelhança entre os microrganismos em produzir ácido lático, uma vez que todas as cepas de BAL empregadas como inoculantes neste experimento

No caso do esporte, consideramos que o corpo (entendido aqui como o.. próprio homem) é a matéria que torna possível a criação de gestos técnicos específicos de

No caso clínico em questão, o uso da membrana de polipropileno exposta ao meio bucal corroborou para a manutenção do rebordo alveolar acompanhado longitudinalmente.Houve o

Dispersão dos sete porta-enxertos em relação às duas variáveis canônicas (VC1 e VC2) e aos dois primeiros componentes principais (C1 e C2), agrupados pelo método de Tocher (círculos

Unidade Responsável: Companhia de Pesquisa de Recursos Minerais UO: 32202 - Companhia de Pesquisa de Recursos Minerais - CPRM.. A implementação da Ação "Gestão da