Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Process context identifier

From noriwiki


개요

프로세스 컨텍스트 식별자(PCID, Process Context Identifier)는 현대 CPU(특히 x86의 확장된 페이지 테이블 기능)에서 제공되는 기능으로, 프로세스 간 문맥 전환 시 발생하는 오버헤드를 줄이기 위해 전체 TLB(Translation Lookaside Buffer)를 매번 플러시(초기화)하지 않고도 주소 공간 전환을 수행할 수 있도록 돕는다.

배경

전통적으로 운영체제는 한 프로세스에서 다른 프로세스로 전환할 때, 이전 프로세스의 페이지 테이블과 관련된 TLB 엔트리를 무효화하거나 다시 로드해야 합니다. 이는 메모리 성능에서 중요한 역할을 하는 TLB 접근(lookup)에 큰 비용을 초래한다.

PCID는 TLB 엔트리에 “프로세스(또는 주소 공간)별 ID(식별자)”를 태그 형태로 부여하여, 주소 공간 전환 시 이전 프로세스에 속했던 TLB 엔트리를 전부 제거(플러시)하지 않고, 단지 “현재 프로세스의 PCID와 일치하지 않는 엔트리”를 무시하도록 하는 방식을 제공한다.

PCID 작동 방식

  • 각 프로세스(또는 주소 공간)는 고유한 PCID를 할당
  • CPU의 TLB 엔트리는 해당 PCID 태그와 함께 저장
  • 문맥 전환 시, 운영체제는 새 프로세스의 CR3(페이지 테이블 베이스 레지스터)를 로드하고 적절한 PCID를 설정
  • TLB에는 이전 프로세스의 엔트리가 남아있을 수 있지만, CPU는 “현재 설정된 PCID”와 일치하는 엔트리만 사용하여 주소 변환을 수행

장점

  1. **TLB 플러시 오버헤드 감소**: 문맥 전환마다 전체 TLB를 비울(플러시) 필요가 줄어듬
  2. **성능 향상**: 불필요한 TLB 재로딩 과정을 피하므로, 문맥 전환 시의 메모리 접근 지연이 감소