세그먼트 설명자
Segment descriptorIntel x86 컴퓨터 아키텍처의 메모리 주소 지정에서 세그먼트 설명자는 논리 주소를 선형 주소로 변환하는 데 사용되는 분할 단위의 일부다.세그먼트 설명자는 논리 주소에서 언급된 메모리 세그먼트를 설명한다.[1]세그먼트 설명자(80286 이상에서 8바이트 길이)에는 다음 필드가 포함되어 있다.[2]
- 세그먼트 기준 주소
- 세그먼트 크기를 지정하는 세그먼트 제한
- 보호 메커니즘 정보를 포함하는 액세스 권한 바이트
- 컨트롤 비트
구조
x86 및 x86-64 세그먼트 설명자의 형식은 다음과 같다.[3]
31 | — | 24 | 23 | 22 | 21 | 20 | 19 | — | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | — | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
기준 주소[31:24] | G | D/B | L | AVL | 세그먼트 제한[19:16] | P | DPL | 1 | 유형 | C/E | R/W | A | 기본 주소[23:16] | |||||||
기본 주소[15:0] | 세그먼트 제한[15:0] |
필드의 약자:
- 기본 주소
- 세그먼트의 32비트 시작 메모리 주소
- 세그먼트 제한
- 세그먼트의 20비트 길이. (더 구체적으로, 마지막으로 액세스 가능한 데이터의 주소, 따라서 길이는 여기에 저장된 값보다 하나 더 길다.)이것을 정확히 어떻게 해석해야 하는가는 세그먼트 설명자의 다른 비트에 달려 있다.
- G=그랜룰러리티
- 클리어할 경우, 한계는 바이트 단위로, 최대 2바이트가20 된다.설정된 경우, 제한은 최대 2바이트의32 4096바이트 페이지 단위로 한다.
- D=기본 피연산자 크기
- 클리어할 경우 16비트 코드 세그먼트, 설정될 경우 32비트 세그먼트.
- B=큰
- 설정된 경우 데이터 세그먼트의 최대 오프셋 크기가 32비트 0xffffffff로 증가한다.그렇지 않으면 16비트 최대 0x0000ffff이다.본질적으로 "D"와 같은 의미.
- L=긴 길이
- 설정된 경우 이것은 64비트 세그먼트(그리고 D는 0이어야 함)이며, 이 세그먼트의 코드는 64비트 명령 인코딩을 사용한다."L"은 "D"라고 하는 "B"와 동시에 설정할 수 없다.
- AVL=사용 가능
- 하드웨어에서 사용하지 않는 소프트웨어용
- P=현재
- 클리어할 경우 이 세그먼트에 대한 참조에서 "세그먼트 없음" 예외가 생성됨
- DPL=디렉터 권한 수준
- 이 설명자에 액세스하는 데 필요한 권한 수준(링)
- 유형
- 설정된 경우 코드 세그먼트 설명자.명확하다면, 이것은 데이터/스택 세그먼트 설명자로, "D"는 "B"로, "C"는 "E"로, "R"은 "W"로 대체된다.이것은 사실 2비트 유형 필드의 특별한 경우로서, 앞의 비트 12가 "0"으로 지워진 것은 LDT, LSS 및 게이트에 대해 더 많은 내부 시스템 설명자를 가리킨다.
- C=적합
- 이 세그먼트의 코드는 권한이 적은 수준에서 호출될 수 있다.
- E=Expand-Down
- 클리어하면 세그먼트가 기본 주소에서 base+limit까지 확장된다.설정된 경우 최대 오프셋에서 제한으로 확장되며, 일반적으로 스택에 사용되는 동작이다.
- R=읽을 수 있는
- 클리어할 경우 세그먼트는 실행되지만 읽지는 못할 수 있다.
- W=쓰기 가능
- 클리어할 경우 데이터 세그먼트를 읽을 수 있지만 쓸 수는 없다.
- A=액세스
- 이 비트는 세그먼트에 액세스할 때 하드웨어에 의해 1로 설정되고 소프트웨어에 의해 지워진다.
참고 항목
참조
- ^ 보벳 D.P. & Cesati, M. (2000)Linux 커널 이해(First Edition).오릴리 & 어소시에이츠 주식회사
- ^ Tabak, Daniel (1995). Advanced Microprocessors. Mcgraw Hill Publishers. p. 149. ISBN 9780070628434.
- ^ AMD64 Architecture Programmer's Manual Volume 2: System Programming (PDF) (Technical report). 2013. p. 80. Archived from the original (PDF) on 2018-02-18.
- Tabak, Daniel. Advanced Microprocessors. McGraw Hill and Co.
- Hall, Douglas. Microprocessors and Interfacing. McGraw Hill Publications.
추가 읽기
- Robert R. Collins (August 1998). "The Segment Descriptor Cache". Dr Dobb's Journal.
외부 링크