'RPL'에 해당되는 글 1건

  1. 2011.05.25 특권 레벨 (Privilege ring level)

특권 레벨 (Privilege ring level)

CS/Common 2011. 5. 25. 14:19
원문 : Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3A

권한 레벨은 세그먼트 디스크립터의 세그먼트 셀렉터가 세그먼트 레지스터로 로드될 때 체크된다.

CPL (Current Privilege Level)
: 현재 실행되고 있는 태스크의 특권 레벨로, CS, SS 세그먼트 레지스터 0, 1 번째 비트.
: 일반적으로 CPL은 명령어가 페치되는 코드 세그먼트의 특권 레벨과 동일하다. 
: 프로세서는 프로그램 컨트롤이 다른 권한 레벨을 가진 코드 세그먼트로 전이될 때 CPL을 변경한다.
: CPL은 conforming 코드 세그먼트에 접근할 때 약간 다르게 취급된다. Confirming 코드 세그먼트는 confirming 코드의 DPL보다 같거나 더 작은 권한(숫자적으로 높은)을 가진 어떤 다른 권한 레벨에서 접근될 수 있다.
: CPL은 프로세서가 CPL과 다른 권한 레벨을 가진 conforming 코드 세그먼트에 접근할 때 변경되지 않는다. 


DPL (Descriptor Privilege Level)
: 세그먼트나 게이트 디스크립터가 포함하고 있는 필드.
: 세그먼트나 게이트의 특권레벨.
: 현재 실행되고 있는 코드가 세그먼트나 게이트에 접근하려고 할 때, 세그먼트나 게이트의 DPL은 CPL과 세그먼트가 게이트의 RPL과 비교된다.
: DPL은 세그먼트나 게이트가 엑세스되고 있는 타입에 따라 다르게 해석된다.
  • Data segment - DPL은 프로그램이나 태스크가 세그먼트에 엑세스를 허용해야만 하는 가장 낮은 권한 레벨(숫자상으로 가장 높은)을 가리킨다. 예를 들어, 만약 데이터 세그먼트의 DPL이 1이라면, 0이나 1의 CPL에서 동작하고 있는 프로그램만이 세그먼트에 엑세스 할 수 있다.
  • Nonconforming code segment (without using call gate) - DPL은 프로그램이나 태스크가 세그먼트에 엑세스하기 위해 가져야 하는 권한 레벨을 가리킨다. 예를 들어 만약 nonconforming 코드 세그먼트의 DPL이 0이라면 CPL 0에서 수행되는 프로그램만이 이 세그먼트에 엑세스 할 수 있다.
  • Call gate - DPL은 현재 수행되고 있는 프로그램이나 태스크가 될 수 있고 여전히 콜 게이트에 접근할 수 있는 가장 낮은 레벨(숫자상으로 가장 높은)을 가리킨다. (data segment와 같은 규칙)
  • Conforming code segment and nonconforming code segment accessed through a call gate - DPL은 프로그램이나 태스크가 세그먼트에 엑세스를 허용해야만 하는 가장 높은 레벨(숫자상으로 가장 낮은)을 가리킨다. 예를 들어, 만약 conforming 코드 세그먼트의 DPL이 2 이고, 프로그램이 0이나 1의 CPL에서 동작하고 있다면 세그먼트에 엑세스 할 수 없다.
  • TSS - DPL은 현재 실행되고 있는 프로그램이나 태스크가 될 수 있거나 여전히 TSS에 접근 할 수 있는 가장 낮은 권한 레벨(숫자상으로 가장 높은)을 가리킨다. (data segment와 같은 규칙)
RPL (Requested Privilege Level)
: 세그먼트 셀렉터의 0, 1 번째 비트.
: 세그먼트 셀렉터에 할당된 override된 권한 레벨이다.
: 프로세서는 세그먼트의 접근이 허용되는지 판단하기 위해 CPL과 함께 RPL을 체크한다. 
: 비록 세그먼트의 접근을 요청하는 프로그램이나 태스크가 세그먼트에 접근하기 위한 충분한 권한을 가지고 있더라도, 만약 RPL이 충분한 권한 레벨을 가지고 있지 않다면, 접근은 거부된다. 즉, 세그먼트 셀렉터의 RPL이 CPL보다 낮은 권한 레벨(숫자상으로 높은)인 경우, RPL은 CPL을 override 한다. (반대도 마찬가지이다.)
: 5.10.4 Checking Caller Access Privileges (ARPL Instruction) 참고
: RPL은 만약 프로그램 자체가 세그먼트에 대한 엑세스 권한을 가지고 있지 않다면 에플리케이션 프로그램 대신에 권한 코드(privileged code)가 세그먼트에 접근하지 않는 것을 보장하기 위해 사용된다.


발번역 주의. 이놈의 영어... ㅜㅜ 







: