Rethinking the Library OS from the Top Down

Ahn9807 (토론 | 기여)님의 2023년 6월 22일 (목) 08:00 판 (새 문서: 분류: 시스템 논문 Donald E. Porter, Silas Boyd-Wickizer, Jon Howell, Reuben Olinsky, Galen C. Hunt ASPLOS’11 250px|가운데 == 개요 == Windows처럼 Pratical하게 사용되고 있는 OS를 LibraryOS로 만들기 위해서는 어떠한 일을 해야 하는지 정리 하였다. == Motivation == Per-application customization을 하게 되면 Application의 성능을 올릴 수 있다. == Importance == LibraryOS를 통...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


Donald E. Porter, Silas Boyd-Wickizer, Jon Howell, Reuben Olinsky, Galen C. Hunt
ASPLOS’11
Drawbridge overview.png

개요

Windows처럼 Pratical하게 사용되고 있는 OS를 LibraryOS로 만들기 위해서는 어떠한 일을 해야 하는지 정리 하였다.

Motivation

Per-application customization을 하게 되면 Application의 성능을 올릴 수 있다.

Importance

LibraryOS를 통하면 Per-application customization을 할 수 있지만, LibraryOS를 실제 사용하는 커널에 적용하는 연구는 적다.

Main Idea

Windows OS의 구성요소를 3가지로 나누고 Hardware를 처리하는 부분은 기존 Host kernel에 나머지 User그리고 Application을 다루는 부분은 Library형태로 올렸다.

  • Hardware service: OS kernel, device drivers, file systems, TCP/IP network stack ...
  • User service: Graphical user interface, desktop, excel, game...
  • Application: Frameworks, rending engines, UI controls, language runtimes ...

그렇게 하면 각 Resource들을 적절히 VM들로 Forwarding해주는 장치가 필요한데, 이를 위해서 Security monitor을 두어서 Security monitor가 Host kernel의 Resource들을 Rule-based로 VM단에 Sharing + Isolation을 제공하였다.

Design

Library OS
우선 Drawbridge의 LibOS는 Multi user환경이 아니다. 따라서 Consistency, Sharing에 대한 고려를 하지 않았다. Library OS를 디자인 하기 위해서 API DLL들을 분석해서, 필요한 Emulation범위를 정하였다.
NT Kernel emulation layer
NT kernel emulation layer는 NT커널을 Emulating하는 Thin한 라이브러리이다. 이때 File system처럼 Hardware abstraction을 Host OS가 제공하기 때문에 Host NT커널과 비교해서 1/50의 크기로 작성할 수 있었다. 이를 통해서 TCB를 줄였다.
Dependency
커널에서 사용하는 Service deamon과 같은 경우 Dependency에 대한 요구를 회피하기 위해서 Library OS로 내렸다. 또한 Console이나 HCI에 대한 Dependency를 제공하기 위해서 몇몇 Device driver도 Emulating하였다. 이때 각 디바이스들은 RDP라는 Virtio비슷한 장치로 진짜 Host Kernel device driver와 연결되었다.
Security Monitor
Security Monitor은 Host kernel의 Resource들을 LibraryOS에 주기 위한 ABI로서 Resource sharing그리고 Isolation을 고려해서 설계되었다. 자세한 ABI디자인은 논문을 참고.

Result

HyperV와 같은 VM과 비교하였을때, Memory사용량, Performance면에서 Native windows에 비슷한 결과를 보였다.

Conclusion

기존의 Unikernel과는 다른 구조를 가지는 Library OS이다. 즉 File system, Network system과 같은 Hardware abstraction layer가 Host 커널에 위치한다는 것이다. 그러나 이러한 구조는 기존 시스템 Porting면에서 이점이 있지만, Specialization과 관련해서는 할 수 있는 범위가 줄어든다는 단점이 있다. 하지만 이 논문은 새로운 구조의 LibOS를 제시하고 기존의 Mature한 OS를 포팅해서 그 유용성을 보여줌으로, LibOS가 아직 관심이 적던 시기에 나온 혁신적인 논문이라고 할 수 있다.