메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

How to Run POSIX Apps in a Minimal Picoprocess

noriwiki


Jon Howell, Bryan Parno, John R. Douceur Microsoft Research, Redmond, WA
2013 USENIX Annual Technical Conference (USENIX ATC ’13)

개요

Web, Mobile, Desktop등 다양한 Platform에서 서로다른 Level의 Abstraction을 제공한다. 이러한 플랫폼에서 Transparent하게 Application을 실행시키기 위해서, Minimal한 Prcoess abstraction, Picoprocess을 제공하고, 여기에 POSIX와 같은 라이브러리를 올려서 모든 플랫폼에서 Universal하게 작동하는 Application-Process모델을 개발하였다.

Motivation

Modern host platform은 점차 대양해지고 있고, 이에 따라서 서로 다른 Platform마다 Porting시키는 노력이 점차 힘들어 지고 있다. 그러나 Application이 사용하는 Platform layer의 기능은 제한적이다. 따라서 쉽게 Porting할 수 있도록, 또한 Native code를 Transparent할 수 있도록 하는 연구가 필요하다.

Main Idea

Application의 Interface를 바꾸는 것이 아니라, Picoprocess라는 모든 Platform에서 Universal하게 지원할 수 있는 최소한의 Process abstraction을 제공하고, 이 위에 POSIX Layer에서 기존 Host의 기능을 Emulation한다.

Picoprocess는 다음 최소한의 기능을 수행한다.

  1. Execution primitives: APP's Internal computation
  2. Cryptographic primitives: Privacy and integrity
  3. IPC and network primitives: Communication
  4. User interface primitives: User interaction

Design

Picoprocess라는 최소한의 Memory allocation, Thread Execution, Pipe, Synchronization primitives들을 제공하는 Process abstraction위에 POSIX Layer에 Host kernel을 마치 Unikernel처럼 올려서 Application을 수행하도록 하였다. Design Section은 과연 어떻게 API를 작성했고, 세부적인 Implementation details을 소개하고 있다. 자세한 내용은 논문을 참조.

Conclusion

Microsoft에서 만든 Drawbridge혹은 Graphene의 Series of work이다. POSIX Layer에 Host kernel를 올린다는 Design과 Implementation은 흥미로운 부분이다. 그러나 Motivation측면에서 점차 Edge computing의 능력이 Host computing의 능력을 따라오고 있는 2025년 현재로서는, Picoprocess의 Motivation은 Somewhat 희미해지는 느낌이 있다.