한 프로세스의 논리 주소는 다른 프로세스의 논리 주소와 어떻게 다릅니까?

한 프로세스의 논리 주소는 다른 프로세스의 논리 주소와 어떻게 다릅니까?

내가 읽고 있어요Linux 커널에 대해 알아보기. 나는 어떻게 이해하려고 노력하고 있습니다.논리 주소로 번역됩니다실제 주소. 내 이해에 따르면 논리 주소는 분할 단위의 도움으로 선형 주소로 변환되고, 페이징 단위의 도움으로 선형 주소는 물리적 주소로 변환됩니다. 더 자세히 살펴보면 분할 레지스터는 사용자 모드에서 커널 모드로 전환할 때만 변경되고, 그렇지 않으면 동일하게 유지된다는 사실을 발견했습니다. 즉, 사용자 모드에서 실행되는 다양한 프로세스의 경우 분할 레지스터 세트는 다음과 같습니다.CS,DS,봄 여름 시즌등은 동일합니다. 또한 세그먼트 설명자 테이블에서도~에 따르면그리고한계각 프로세스에서 실행되는 필드도 동일합니다.
이 경우 프로세스의 논리적 주소가 어떻게 작동하는지 이해할 수 없습니다.다른다른 논리 주소?

답변1

동일한 논리 주소 세트를 x86 Linux의 다른 물리적 주소에 대한 서로 다른 매핑(프로세스별)은 페이징을 통해서만 달성할 수 있습니다. 즉, 기본적으로 서로 다른 CR3 레지스터 값은 각 프로세스마다 서로 다른 PGD를 가리킨다. 동일한 CS, DS 값을 사용하면(즉, 각 프로세스에 고유한 것이 없고 세그먼트 설명자가 동일하며 사용자 모드와 커널 모드 간에 권한만 다를 뿐임) 모든 프로세스에 대해 동일한 선형 주소 세트를 갖게 됩니다. 유일한 차이점은 페이지 매기기를 통해서입니다. 귀하의 답변에 Mr. Krishna Kumar에게 감사드립니다.

관련 정보