(3.2 절은 분할에 대한 모든 의혹을 명확히해야한다) 프로그래머 참조 설명서 1986 :
또한 x86 및 x86-64의 아키텍처에 대한 정보의이 귀중한 소스를 확인 할 수 있습니다
Figure 5-1. Address Translation Overview
15 0 31 0
LOGICAL ╔═══════════════╗ ╔══════════════════════════════╗
ADDRESS ║ SELECTOR ║ ║ OFFSET ║
╚═══════════╤═══╝ ╚═══╤══════════════════════════╝
v v
╔══════════════════════════════╗
║ SEGMENT TRANSLATION ║
╚══════════════╤═══════════════╝
╔══╧═╗ PAGING ENABLED
║PG ?╟────────────────────┐
╚══╤═╝ │
31 PAGING v DISABLED 0 │
LINEAR ╔═══════════╦═══════════╦═══════════╗ │
ADDRESS ║ DIR ║ PAGE ║ OFFSET ║ │
╚═══════════╩═════╤═════╩═══════════╝ │
v │
╔══════════════════════════════╗ │
║ PAGE TRANSLATION ║ │
╚══════════════╤═══════════════╝ │
│<─────────────────────┘
31 v 0
PHYSICAL ╔══════════════════════════════╗
ADDRESS ║ ║
╚══════════════════════════════╝
Figure 5-2. Segment Translation
15 0 31 0
LOGICAL ╔════════════════╗ ╔═════════════════════════════════════╗
ADDRESS ║ SELECTOR ║ ║ OFFSET ║
╚═══╤═════════╤══╝ ╚═══════════════════╤═════════════════╝
┌──────┘ v │
│ DESCRIPTOR TABLE │
│ ╔════════════╗ │
│ ║ ║ │
│ ║ ║ │
│ ║ ║ │
│ ║ ║ │
│ ╠════════════╣ │
│ ║ SEGMENT ║ BASE ╔═══╗ │
└─>║ DESCRIPTOR ╟──────────────>║ + ║<──────┘
╠════════════╣ ADDRESS ╚═╤═╝
║ ║ │
╚════════════╝ │
v
LINEAR ╔════════════╦═══════════╦══════════════╗
ADDRESS ║ DIR ║ PAGE ║ OFFSET ║
╚════════════╩═══════════╩══════════════╝
Windows에서 대부분의 프로세스에서 DS = ES = SS가 가장 많이 사용되고 CS 및 DS 값은 모든 프로세스에서 공유됩니다. 프로세스는 세그먼트 레지스터를 변경할 수 있지만 거의 필요하지 않으므로 대부분의 경우 동일한 CS 및 DS/ES/SS 값 세트를 보게됩니다. 커널은 자체 CS 및 DS를 사용합니다.
'세그먼트, 레지스터 및 그와 유사한 것들을 사용하는 방법을 알고 있다면'당신이 '함께 묶을 수 없다'는 것이 무엇이며 어떻게하면 여분의 세그먼트가 어떤 데이터 스택인지에 대해 이해할 수 없습니까? '? 질문이 뭐야? 각 프로세스는 다른 DS/SS/ES를 가지고 있습니까? " –
리얼 모드에서는 세그먼트 + 오프셋 주소 지정 모드를 사용하여 페이징으로 변경되는 보호 메모리에서 메모리를 지정하기 때문에 혼란스러워합니다. 사용자 영역의 각 프로세스마다 다른 DS/SS/ES가 있습니까? 커널 모드에서 변경되거나 동일합니까? –