유니커넬
Unikernel유니커넬(unikernel)은 라이브러리 운영 체제를 사용하여 구성된 전문화된 단일 주소 공간 머신 이미지다.[1]개발자는 모듈형 스택에서 애플리케이션을 실행하는 데 필요한 OS 구성에 해당하는 최소 라이브러리 세트를 선택한다.그런 다음 이러한 라이브러리를 애플리케이션 및 구성 코드로 컴파일하여 Linux나 Windows와 같은 OS가 개입되지 않고 하이퍼바이저나 하드웨어에서 직접 실행되는 밀봉된 고정 목적 이미지(유니커넬)를 구축한다.
그 첫 번째 시스템은 1990년대 후반의 엑소커넬과 네메시스였다.
디자인
라이브러리 운영 체제에서 보호 경계가 가장 낮은 하드웨어 계층에 푸시되어 다음과 같은 결과를 초래한다.
- 하드웨어를 구동하거나 네트워크 프로토콜을 말하는 데 필요한 메커니즘과 같은 메커니즘을 구현하는 라이브러리 세트
- 애플리케이션 계층에서 액세스 제어와 분리를 시행하는 정책 세트
라이브러리 OS 아키텍처는 기존의 OS 설계에 비해 몇 가지 장단점이 있다.하나의 주소 공간만 있기 때문에 사용자 공간과 커널 공간 간에 데이터를 이동하기 위해 반복적인 권한 전환이 필요하지 않다는 것도 장점이다.따라서 라이브러리 OS는 사용자 모드와 커널 모드 간에 전환하지 않고도 하드웨어에 직접 액세스할 수 있도록 함으로써 향상된 성능을 제공할 수 있다(이 전환은 전통적인 커널에서 단일 TRAP[2] 명령으로 구성되며 컨텍스트 스위치와[3] 같지 않음).성능 향상은 기존 운영 체제에서 제로 카피 장치 드라이버로도 가능하지만 사용자 공간과 커널 공간 간에 데이터를 복사할 필요가 없어짐에 따라 실현될 수 있다.
단점은 분리가 없기 때문에 라이브러리 OS에서 여러 애플리케이션을 나란히 실행하려고 하지만 리소스 격리가 심해지면 복잡해질 수 있다는 점이다.[4]또한 라이브러리 OS가 실행되는 특정 하드웨어에 대해서는 장치 드라이버가 필요하다.하드웨어가 빠르게 변화하고 있기 때문에, 이것은 최신 상태를 유지하기 위해 정기적으로 드라이버를 다시 작성해야 하는 부담을 야기한다.
OS 가상화는 범용 하드웨어의 이러한 결점 중 일부를 극복할 수 있다.최신 하이퍼바이저는 가상 시스템에 CPU 시간과 강력하게 격리된 가상 디바이스를 제공한다.가상 머신으로 실행되는 라이브러리 OS는 이러한 안정적인 가상 하드웨어 디바이스용 드라이버만 구현하면 되며 실제 물리적 하드웨어를 구동하는 하이퍼바이저에 의존할 수 있다.그러나, 프로토콜 라이브러리는 전통적인 운영 체제의 서비스를 대체하기 위해 여전히 필요하다.이러한 프로토콜 라이브러리를 만드는 것은 현대 라이브러리 OS를 구현할 때 작업의 대부분을 차지하는 것이다.[1]또한 하이퍼바이저에 의존하면 유니커널과 하이퍼바이저 간에 전환할 때와 하이퍼바이저 가상 디바이스에서 데이터를 주고 받을 때 성능 오버헤드가 다시 발생할 수 있다.
배치된 코드의 양을 줄임으로써, 유니커넬은 반드시 공격의 가능성이 있는 표면을 줄임으로써, 따라서 보안 속성이 향상되었다.[5][6]
유니커넬 기반의 메시징 클라이언트는 리눅스를 사용하는 동등한 코드 베이스의 약 4%의 크기를 가지고 있다.[7]
이들의 구조 특성상 기기 드라이버와 애플리케이션 로직 전반에 걸쳐 전체 시스템 최적화를 수행할 수 있어 전문화를 개선할 수 있다.[8][9]예를 들어, nginx, SQLite, Redis와 같은 기성 애플리케이션은 유니커넬을 통해 1.7배-2.7배의 성능 향상을 보였다.[10]
유니커넬은 정기적으로 요청 시간 초과 전에 들어오는 요청에 응답하기 위해 매우 빠르게 부팅되는 것으로 보여 왔다.[11][12][13]
유니커넬은 서비스 지향적 또는 마이크로 서비스 소프트웨어 아키텍처를 따르는 시스템을 만드는 데 자신을 빌려준다.
높은 수준의 전문화는 유니커넬이 전통적인 운영체제가 사용되는 일반적인 목적, 다중 사용자 컴퓨팅의 종류에 적합하지 않다는 것을 의미한다.추가 기능을 추가하거나 컴파일된 유니커넬을 변경하는 것은 일반적으로 불가능하며, 대신 원하는 변경사항으로 새로운 유니커넬을 컴파일하고 배치하는 것이 접근방식이다.
참고 항목
참조
- ^ a b "Unikernels: Rise of the Virtual Library Operating System". Retrieved 31 August 2015.
- ^ Tanenbaum, Andrew S. (2008). Modern Operating Systems (3rd ed.). Prentice Hall. pp. 50–51. ISBN 978-0-13-600663-3.
. . . nearly all system calls [are] invoked from C programs by calling a library procedure . . . The library procedure . . . executes a TRAP instruction to switch from user mode to kernel mode and start execution . . .
- ^ 컨텍스트 스위치#사용자 및 커널 모드 전환
- ^ Chia-Che, Tsai; Arora, Kumar-Saurabh; Bandi, Nehal; Jain, Bhushan; Jannen, William; John, Jitin; Kalodner, Harry; Kulkarni, Vrushali; Oliviera, Daniela; Porter, Donald E. (2014). Cooperation and Security Isolation of Library OSes for Multi-process Applications (PDF). Proceedings of the Ninth European Conference on Computer Systems (EuroSys). pp. 1–14. CiteSeerX 10.1.1.589.1837. doi:10.1145/2592798.2592812. ISBN 9781450327046.
- ^ "Why Unikernels Can Improve Internet Security". April 2015. Retrieved 31 August 2015.
- ^ Madhavapeddy, Anil; Mortier, Richard; Charalampos, Rotsos; Scott, David; Singh, Balraj; Gazagnaire, Thomas; Smith, Steven; Hand, Steven; Crowcroft, Jon (March 2013). "Unikernels: Library Operating Systems for the Cloud" (PDF). SIGPLAN Notices (ASPLOS 13). 48 (4): 461. doi:10.1145/2499368.2451167.
- ^ Kaloper-Meršinjak, David; Mehnert, Hannes; Madhavapeddy, Anil; Sewell, Peter (2015). "Not-Quite-So-Broken TLS: Lessons in Re-Engineering a Security Protocol Specification and Implementation". Proceedings of the 24th USENIX Security Symposium (USENIX Security 15).
- ^ Madhavapeddy, Anil; Mortier, Richard; Sohan, Ripduman; Gazagnaire, Thomas; Hand, Steven; Deegan, Tim; McAuley, Derek; Crowcroft, Jon (2010). "Turning Down the LAMP: Software Specialisation for the Cloud" (PDF). Proceedings of the 2Nd USENIX Conference on Hot Topics in Cloud Computing.
- ^ Martins, Joao; Mohamed, Ahmed; Raiciu, Costin; Huici, Felipe (2013). Enabling Fast, Dynamic Networking Processing with ClickOS (PDF). Proceedings of the Second ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking. p. 67. doi:10.1145/2491185.2491195. ISBN 9781450321785.
- ^ Kuenzer, Simon; Bădoiu, Vlad-Andrei; Lefeuvre, Hugo; Santhanam, Sharan; Jung, Alexander; Gain, Gaulthier; Soldani, Cyril; Lupu, Costin; Teodorescu, Ştefan; Răducanu, Costi; Banu, Cristian (2021-04-21). "Unikraft: fast, specialized unikernels the easy way". Proceedings of the Sixteenth European Conference on Computer Systems. Online Event United Kingdom: ACM: 376–394. arXiv:2104.12721. doi:10.1145/3447786.3456248. ISBN 978-1-4503-8334-9.
- ^ "Just-in-Time Summoning of Unikernels (v0.2)". Magnus Skjegstad. Retrieved 30 August 2015.
- ^ "Zerg". Zerg — an instance per request demo. Retrieved 30 August 2015.
- ^ Madhavapeddy, Anil; Leonard, Thomas; Skjegstad, Magnus; Gazagnaire, Thomas; Sheets, David; Scott, David; Mortier, Richard; Chaudhry, Amir; Singh, Balraj; Ludlam, Jon; Crowcroft, Jon; Leslie, Ian (2015). Jitsu: Just-In-Time Summoning of Unikernels (PDF). The 12th USENIX Conference on Networked Systems Design and Implementation (NSDI). ISBN 978-1-931971-218.
외부 링크
- 역사 및 비즈니스 모델, IncludeOS의 적용 범위(LWN.net)