Diferença entre paginação e segmentação

O gerenciamento de memória é uma das funções básicas do sistema operacional. Os sistemas operacionais modernos permitem que cada processo obtenha mais memória virtual do que o tamanho total da memória (física) real em um determinado sistema de computador. O principal objetivo do gerenciamento de memória é que, combinando memória grande, mas lenta, com memória pequena, mas de alta velocidade, para obter o efeito de maior memória de alta velocidade.

O que é paginação?

A separação entre particionamento fixo e variável é ineficaz em termos de utilização da memória, pois o particionamento fixo resulta em fragmentação interna e dinâmica na fragmentação externa. Uma possível solução para o problema da fragmentação é permitir que o processo não seja gravado em um bloco de memória contínuo. O programa pode ser espalhado arbitrariamente na memória. Nesse caso, a memória de trabalho é dividida em blocos menores de tamanho fixo chamados quadros. O espaço de endereço lógico do programa também é dividido em blocos do mesmo tamanho, chamados de páginas. Quando um programa é inserido na memória, as páginas são gravadas em quadros de memória livre. Para facilitar a transferência de programas de um disco para uma memória de trabalho, o disco também é dividido em quadros do mesmo tamanho que os quadros de memória. Assim, um quadro do disco é gravado em um quadro da memória de trabalho. O sistema de paginação opera da seguinte maneira: quando o programa é aceito para execução, seu tamanho é calculado, expresso com o número necessário de páginas. Se um número suficiente de quadros estiver livre, o processo será gravado na página de memória por página. Ao mesmo tempo, o número de quadros em que cada página é gravada é inserido na tabela de quadros.

O que é segmentação?

O programa do usuário e os dados associados podem ser divididos em vários segmentos. Os segmentos de todos os programas não precisam ter o mesmo tamanho, embora exista um tamanho máximo de segmento. Assim como na paginação, o endereço lógico que usa a segmentação consiste em duas partes, nesse caso, o número de segmentos e deslocamentos dentro desse segmento. Devido ao uso de segmentos de tamanhos diferentes, a segmentação é semelhante ao particionamento dinâmico. Na ausência de um esquema de sobreposição ou uso de memória virtual, é necessário que todos os segmentos do programa sejam carregados na memória para execução. A diferença em relação ao particionamento dinâmico é que a segmentação pode levar mais de uma partição e essa partição não precisa ser adjacente. A segmentação resolve o problema da fragmentação interna, mas, assim como o particionamento dinâmico, o problema da fragmentação externa permanece. No entanto, como o processo é dividido em várias partes menores, a fragmentação externa geralmente é menor. Ao contrário da paginação invisível para o programador, a segmentação geralmente é visível e adequada para organizar programas e dados. Para fins de programação modular, o programa ou dados podem ser divididos em vários segmentos menores. A desvantagem dessa técnica é que o programador deve conhecer as limitações do tamanho máximo do segmento. A próxima conveniência de usar segmentos de tamanhos diferentes é que não há conexão em potencial entre endereços lógicos e físicos. Semelhante à paginação, a técnica de segmentação simples usa a tabela de segmentos para cada processo e uma lista de blocos disponíveis na memória principal.

Diferença entre paginação e segmentação

1. Conceito de paginação e segmentação

A paginação fornece um espaço de endereço virtual e físico e um espaço de memória secundário em blocos (páginas) de tamanhos iguais. Isso permite que o espaço de endereço virtual contínuo seja alocado ao processo de dispersão (não necessariamente distribuído continuamente) no espaço de endereço real e na memória secundária. Até a página, como termo, refere-se à memória e não a objetos lógicos visíveis no nível do programa. A segmentação fornece um espaço de endereço virtual em blocos (segmentos) que correspondem diretamente a objetos no nível do programa. Por esse motivo, o segmento não possui comprimento fixo, portanto, mesmo o tamanho do segmento pode ser alterado durante a execução do programa. A proteção e a divisão são, portanto, possíveis no nível do objeto e existem processos visíveis onde a segmentação é realizada.

2. Características de paginação e segmentação

O desenvolvedor do aplicativo não tem conhecimento da paginação. Ele escreve programas como se a memória fosse linear e o sistema operacional e o processador estivessem preocupados com o particionamento e a conversão em endereços virtuais. Programador em sistemas de segmentação, no entanto, lista duas partes do endereço, segmento e página em seus programas. Todas as páginas têm o mesmo tamanho, enquanto os segmentos são diferentes. A segmentação possui vários espaços de endereço lineares e paginação apenas um. Os segmentos permitem particionamento lógico e proteção dos componentes do aplicativo, e as páginas não.

3. Vantagens da paginação e segmentação

A paginação, que é transparente para o programador, elimina a fragmentação externa e, portanto, garante o uso eficiente da memória principal. As partes que entram e saem da memória principal são fixas e do mesmo tamanho, por isso é possível desenvolver algoritmos sofisticados de gerenciamento de memória que exploram o comportamento do programa. A segmentação é visível para o desenvolvedor e tem a capacidade de gerenciar o crescimento da estrutura de dados, modularidade e suporte para troca e proteção.

Paginação x segmentação: gráfico de comparação

Paging

Segmentação

tamanho fixo das páginas segmentos não têm tamanho fixo
invisível para programador visível para programador
um espaço de endereço linear vários espaços de endereço lineares
não permite particionamento lógico e proteção de componentes de aplicativos permite

Resumo de paginação e segmentação

  • A paginação é baseada na distribuição de todo o espaço de endereço em blocos de comprimento fixo que são operados como quantizes de memória. Além disso, é necessário fornecer um meio para marcar a memória disponível que pode ser executada pela presença do "cabeçalho" de cada página, indicando o status da página (lista vinculada global onde cada nó aponta para a próxima página livre) ou por colocando o endereço da página grátis na matriz global, que geralmente é a pior solução.
  • Segmentação significa dividir o espaço de endereço em segmentos que possuem direitos de acesso claramente marcados no processador MMU. Dentro do segmento, os processos alocam exatamente a quantidade de memória necessária, mas o problema do gerenciamento de memória é como fornecer uma alocação em que ele possa preservar uma memória de bloco contínua grande o suficiente que pode levar algum tempo.