Como o endereço lógico de um processo difere do endereço lógico de outro?

1

Estou lendo Entendendo o kernel do Linux . Lá, estou tentando entender como o endereço lógico foi traduzido para endereço físico . No meu entender, acredito que o endereço lógico foi traduzido para o endereço linear (com a ajuda da Unidade de Segmentação) e, em seguida, linear foi traduzido para o endereço físico (com a ajuda da unidade de paginação). Indo mais a fundo, encontrei um conjunto de mudanças no registro de segmentação apenas se estivermos mudando de usuário para o modo kernel, senão ele permanece constante. isto é, para os vários processos em execução no modo de usuário, o conjunto de registros de segmentação que é cs , ds , ss etc. são os mesmos. E também nos campos da tabela de descritores de segmento base e limite da execução de vários processos também é o mesmo.
Em tal situação, não consigo entender como o endereço lógico de um processo difere do endereço lógico de outro?

    
por user3686233 10.09.2014 / 08:49

1 resposta

0

Os diferentes mapeamentos (por processo) do mesmo conjunto de endereços lógicos para diferentes físicos no Linux x86 são SOMENTE através de paginação. Ou seja Basicamente, o valor do registro CR3 diferente, que aponta para um PGD diferente para cada processo. Com o mesmo CS, os valores do DS por toda parte (ou seja, nada exclusivo sobre esses processos e o mesmo vale para os descritores de segmento também, somente as permissões são diferentes entre modo de usuário e modo kernel), você tem o mesmo conjunto de Endereços lineares para todos os processos e, portanto, a única diferença que pode ser obtida é via paging. Obrigado Krishna Kumar Senhor pela sua resposta.

    
por 12.09.2014 / 08:21