x86 세그먼트 쇠퇴와 CHERI를 재귀적 메모리 분할 문제로 해석
- 저자는 x86 세그멘테이션이 286 이후의 특징이었지만, 64비트 전환과 SYSENTER 같은 빠른 시스템 호출 기능에서 세밀한 보호 기능이 약화됐다고 설명함
- 전통적 x86 세그먼트는 비특권 코드도 세그먼트 레지스터를 다시 적재할 수 있어, 4단계 권한 링 수준의 구분 외에는 악의적 코드 격리보다 실수로 인한 장애 격리에 가까웠음
- 저자는 프로그램이 arena, 메모리 풀, 구조체 필드처럼 주소 공간을 계속 중첩 분할하므로 메모리 모델의 문제는 평면형 대 분할형이 아니라 재귀적 분할과 유한 상태 하드웨어의 차이라고 주장함
- CHERI는 하드웨어가 분할 깊이를 고정하지 않고, 소프트웨어가 좁힌 capability bounds를 명시적으로 전달하게 해 임의로 깊은 분할을 다룸. 현재 코드가 접근할 메모리는 도달 가능한 capability의 전이 폐쇄로 결정됨
- CHERI는 capability 파생 과정에서 bounds가 단조 감소해야 한다는 제약을 둠. 저자는 기존 소프트웨어의 비단조 주소 계산 방식과 마찰이 생기며, 보급되려면 산업 전반의 이식 비용이 필요하다고 봄
Hacker News opinions
64비트 주소 공간이면 많은 앱이 같은 주소 공간을 쓰면서도 서로를 꽤 분리할 여지가 있다고 봄. TLB 태그와 세그먼트 레지스터 선택자를 쓰면 문맥 전환 때마다 TLB를 비우지 않고 프로세스 보호가 가능한데, 프로세스용 12비트는 너무 적음. 데이터베이스처럼 파일을 메모리 매핑하는 앱은 이 모델에 잘 안 맞음.