Fast Core Scheduling with Userspace Process Abstraction - SOSP'24

컨셉 자체는 모두가 항상 시도하는 이야기이다. Userspace로 옮겨서 오버헤드 줄이겠다!!!

근데 이 논문은 Userspace interrupt와 Memory protection key 두 가지 새로운 하드웨어 기능을 이용했다고 한다. 이를 이용해 uProcess라는 abstraction을 만들었다.

uProcess는 크게 Address space organization, call gate, Signal handling, 그리고 context switch 네 가지 부분으로 구성되어 있다.

  1. Address space organization
    1. 달성하려는 목표 : 각각 uProcess마다의 Private한 Memory address space, 그리고 kernel space같이 Privileged된 구역
    2. 각각의 uProcess들은 각자 고유의 MPK를 가짐. 그걸로 구역 보호
  2. Call gate
    1. MPK 통해 privileged Mode 만들고, function call 통해 진입. HodorERIM 도 시도했지만 Limitation 있었음
    2. executable을 mmap하는데에서 문제 발생 -> uProcess에서는 mmap, mprotect 등의 syscall들을 막음
    3. PLT entry 수정해서 공격 가능 -> static function 이용
    4. ROP도 가능 -> stack 수정
  3. Signal Handling
    1. Uintr -> context switch
    2. 조심해야 할 거: uProcess가 죽을 때 전체 프로세스를 죽이면 안됨.
  4. Context Switch
    1. 이건 기존 kernel thread의 context switch랑 비슷한 듯?