O que é o espaço de endereço do usuário e qual é o seu propósito?

2

Estou lendo sobre processos. Eu me deparei com um tópico "Como um processo é criado" em que eu encontrei o seguinte: -

A imagem do processo, conforme visualizada pelo kernel, é executada em seu próprio user address space - um espaço protegido que não pode ser perturbado por outros usuários. Este espaço de endereço tem vários segmentos: -

a. Segmento de texto
b. Segmento de dados
c. Segmento de Usuários

Eu ainda não entendi o que isso significa, alguém poderia me esclarecer sobre esse assunto?

    
por Ankit 09.05.2013 / 22:04

1 resposta

3

Memória (RAM) para um processo Linux ou Unix, é apenas uma matriz linear de bytes. Cada byte tem um número, de 0 a um máximo. Esse é o processo "espaço de endereço". O tamanho de um espaço de endereço varia dependendo se é uma CPU de 32 ou 64 bits, mas qualquer byte na memória pode ser lido ou escrito com base no endereço desse byte, que é apenas um número.

Um processo tem partes diferentes, digamos, código executável, dados com os quais ele trabalha e uma pilha de registros de ativação de última para entrada para as chamadas de função feitas pelo código executável. Esses são os segmentos. Uma parte do espaço de endereço é dedicada ao código executável, que é o "segmento de código". Outra parte do espaço de endereçamento é alocada para variáveis inicializadas (geralmente variáveis globais), que podem ser o segmento de dados, embora geralmente recebam o nome "segmento de dados". O " segmento BSS " geralmente existe para variáveis não inicializadas e geralmente você pode aumentar esse segmento. A pilha LIFO de registros de ativação de função geralmente não aparece explicitamente.

Algumas outras partes do espaço de endereçamento de um processo podem ser dedicadas a coisas como bibliotecas de carregamento dinâmico, construtores ou destruidores de C ++, código para o vinculador dinâmico, pode ser muito complicado.

E depois há o problema do formato de arquivo executável. A maioria dos processos Linux ou Unix tem um formato de arquivo "ELF" , embora os Macs usem o formato Mach-O. Muito do espaço de endereço inicial do processo tem partes correspondentes do arquivo executável.

Acho que esta página da web lhe dará uma ideia de o que preenche o espaço de endereço de um processo. Tente ter em mente que "endereço" é um número e, basicamente, apenas nomeia um byte na memória. Alguns autores também confundem o processo de execução com o arquivo em disco, portanto, tente manter isso claro ao pensar ou ler.

No que diz respeito ao propósito de um espaço de endereço ... existe um espaço de endereço de usuário para cada processo em execução. Isso pode impedir que um processo seja gravado nos dados de outro processo e interromper o segundo processo. Ou seja, espaços de endereço são usados para impedir que programas com bugs destruam outros programas. Além disso, o segmento de espaços de endereçamento processa dados uns dos outros, permitindo que os programas de um usuário armazenem informações na memória que você não deseja que outros usuários vejam. Os espaços de endereço permitem controlar o acesso aos dados na memória.

    
por 09.05.2013 / 22:22

Tags