맨위로가기 타임라인 바로가기

마이크로커널

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
타임라인 바로가기

1. 개요

마이크로커널은 운영체제의 핵심 기능만 커널에 남기고 나머지 기능은 사용자 공간에서 실행하는 운영체제 설계 방식이다. 1960년대에 연구가 시작되어 1980년대에 본격적으로 개발되었으며, 모듈화, 유지 보수 용이성, 보안성 향상 등의 장점을 제공한다. 하지만 프로세스 간 통신(IPC) 오버헤드로 인해 성능 저하가 발생할 수 있다는 단점도 있다. 보안 및 안정성이 중요해지면서 사물 인터넷(IoT) 및 임베디드 시스템 분야에서 다시 주목받고 있으며, L4 마이크로커널과 같은 2세대 마이크로커널이 등장했다. 3세대 마이크로커널은 형식적 분석에 적합하도록 설계되었으며, seL4와 같은 운영 체제는 구현에 대한 완전한 형식적 검증이 이루어졌다. 마이크로커널은 QNX, MINIX, L4 마이크로커널 계열 등 다양한 운영 체제에서 활용되고 있다.

더 읽어볼만한 페이지

  • 마이크로커널 - QNX
    QNX는 고든 벨과 댄 도지가 개발한 마이크로커널 기반의 실시간 운영 체제로, 산업용 기계 제어 분야에서 신뢰성을 인정받아 현재는 블랙베리가 소유하며 자동차 인포테인먼트 시스템, 자율 주행 시스템 등 다양한 임베디드 시스템에 활용되고, POSIX 표준 준수로 유닉스 계열 소프트웨어와 호환된다.
  • 마이크로커널 - Mach (커널)
    Mach 커널은 1980년대 DARPA에서 개발한 멀티프로세서 운영 체제로, 멀티프로세서 지원, 거대한 메모리 공간 활용, 분산 시스템 지원을 목표로 개발되었으며, 마이크로커널 구조를 채택하여 다양한 운영체제의 기반 기술로 활용되었다.
  • 운영체제 기술 - 프로세스
    프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다.
  • 운영체제 기술 - 커널 (컴퓨팅)
    커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다.
마이크로커널
개요
종류커널
특징필요한 기능만 커널에 포함하여 크기를 최소화한 운영 체제 커널
장점안정성 향상
모듈성 증대
유지보수 용이
단점성능 저하 가능성
개발 복잡성 증가
구조
핵심 구성 요소프로세스 관리
메모리 관리
프로세스 간 통신 (IPC)
사용자 공간대부분의 시스템 서비스 및 장치 드라이버 실행
통신 방식메시지 전달 방식 사용
장점 및 단점
장점모듈성: 시스템 서비스가 독립적으로 실행되어 유지보수 및 업데이트 용이
안정성: 서비스 오류가 커널에 직접적인 영향을 주지 않아 시스템 전체 안정성 향상
보안성: 권한 분리 및 최소 권한 원칙 적용 용이
#td: Minix 3는 마이크로커널의 한 예이다.
단점성능 오버헤드: 프로세스 간 통신에 의한 성능 저하 가능성
개발 복잡성: 시스템 서비스 개발 및 관리가 복잡함
예시
운영 체제QNX
MINIX 3
L4
GNU Hurd
seL4
같이 보기
관련 주제모놀리식 커널
하이브리드 커널
엑소커널
나노커널
커널 (운영 체제)

2. 역사

마이크로커널의 역사는 1960년대 덴마크의 컴퓨터 과학자 페르 브린치 한센의 연구에서 시작되었다.[3] 그는 덴마크 회사 레그네센트럴렌에서 RC 4000 컴퓨터 소프트웨어 개발을 이끌면서, 각 설치 환경마다 다른 운영 체제가 필요한 문제점을 해결하고자 했다.[4] 1969년, 그의 팀은 메시지 전달 기반의 프로세스 간 통신을 제공하는 초기 마이크로커널 형태인 RC 4000 다중 프로그래밍 시스템을 완성했다.[5][6]

1980년대에는 컴퓨터 환경 변화와 기존 모노커널의 한계에 대한 대응으로 마이크로커널 개발이 본격화되었다. 새로운 장치 드라이버, 프로토콜 스택, 파일 시스템 등의 개발이 활발해지면서 코드 관리가 중요해졌기 때문이다. 1986년 아미가OS의 Exec 커널은 상업용 PC에 사용된 초기 마이크로커널 사례였다.[9] 비록 메모리 보호 기능은 없었지만, 메시지 전달 성능이 뛰어났다.

리처드 라시드가 개발한 Mach는 초기 마이크로커널의 대표적인 예시였으나, 성능 문제로 어려움을 겪었다.[10] 1990년대 후반까지 주요 연구 대상이었지만, 컴퓨터 속도가 빨라지면서 성능 문제가 더 부각되었다. 2000년대 들어 Mach 커널 기반의 대규모 프로젝트는 대부분 중단되었지만, 애플의 macOS는 여전히 Mach 기반의 하이브리드 커널XNU를 사용하고 있다.[11][12]

1990년대 후반에는 L4 마이크로커널 등 성능이 개선된 2세대 마이크로커널이 등장했다. 이들은 어셈블리 코드를 적극 활용하고 프로세서의 기능을 활용하여 성능을 향상시켰다.

마이크로커널은 엑소커널과 밀접하게 관련되며,[13] 하이퍼바이저와도 공통점이 많다.[14] 특히 L4 마이크로커널은 하이퍼바이저 용도로 자주 사용된다.

3. 특징

마이크로커널은 운영체제의 핵심 기능만 커널에 남기고, 나머지 서비스는 사용자 공간에서 실행하는 구조를 가진다. 이는 모듈화, 유지보수 용이성, 안정성 향상 등의 장점을 제공하지만, 프로세스 간 통신(IPC) 오버헤드로 인해 성능 저하 문제가 발생할 수 있다.[13]

대부분의 주류 프로세서에서 서비스를 얻는 것은 모노리틱 커널 시스템보다 마이크로커널 기반 시스템에서 본질적으로 더 비싸다.[13] 모놀리식 시스템에서는 단일 시스템 호출을 통해 서비스를 얻는데, 이는 두 번의 ''모드 전환'' (CPU 모드 변경)을 필요로 한다. 반면 마이크로커널 기반 시스템에서는 서버에 IPC 메시지를 보내고, 서버로부터 다른 IPC 메시지로 결과를 얻어야 한다. 이는 드라이버가 프로세스로 구현된 경우 컨텍스트 스위치를, 프로시저로 구현된 경우 함수 호출을 필요로 한다. 또한, 데이터를 서버로 전달하고 다시 가져오는 과정에서 추가적인 복사 오버헤드가 발생할 수 있지만, 모놀리식 시스템에서는 커널이 클라이언트의 버퍼에 있는 데이터에 직접 접근할 수 있다.[51]

따라서 성능은 마이크로커널 시스템에서 잠재적인 문제로 간주된다. Mach 및 ChorusOS와 같은 1세대 마이크로커널의 경험은 이를 기반으로 하는 시스템의 성능이 매우 낮다는 것을 보여주었다.[16] 그러나 요헨 리트케는 Mach의 성능 문제가 Mach의 과도한 캐시 점유율과 같은 좋지 않은 설계와 구현의 결과임을 보였다.[17] 리트케는 자신의 L4 마이크로커널을 통해 신중한 설계와 구현, 특히 최소주의 원칙을 따름으로써 IPC 비용을 Mach에 비해 10배 이상 줄일 수 있음을 입증했다. L4의 IPC 성능은 다양한 아키텍처에서 여전히 최고 수준을 유지하고 있다.[24][25][26]

이러한 결과는 1세대 마이크로커널 기반 시스템의 낮은 성능이 L4와 같은 2세대 커널을 대표하지 않는다는 것을 보여주지만, 마이크로커널 기반 시스템이 좋은 성능으로 구축될 수 있다는 완벽한 증거는 아니다. 모놀리식 Linux 서버를 L4로 포팅했을 때 네이티브 Linux에 비해 몇 퍼센트의 오버헤드만 발생한다는 것이 입증되었다.[27] 그러나 그러한 단일 서버 시스템은 운영 체제 기능을 별도의 서버로 구조화하여 마이크로커널이 제공해야 하는 장점을 거의 또는 전혀 나타내지 않는다.

상업적인 다중 서버 시스템, 특히 실시간 시스템인 QNX와 Integrity가 존재한다. 이러한 다중 서버 시스템에 대해 모놀리식 시스템과의 성능에 대한 포괄적인 비교는 발표되지 않았다. 또한, 성능은 이러한 상업용 시스템의 가장 중요한 관심사가 아닌 것으로 보이며, 대신 안정적으로 빠른 인터럽트 처리 응답 시간(QNX)과 견고성을 위한 단순성에 중점을 둔다.

3. 1. 장점

마이크로커널은 다음과 같은 장점을 가진다.

  • OS 개발 효율 향상 (기능 확장, 디버깅 등을 용이하게 수행)
  • 시스템 전체를 멈추지 않고 커널 이외의 OS 업데이트를 수행할 수 있다.
  • 필요한 기능만 제공하는 애플리케이션에 특화된 OS를 구축하기 쉬워진다.[32]


마이크로커널은 사용자 공간 서비스로의 분할로 인해 코드 관리를 더 쉽게 한다. 또한 커널 모드에서 실행되는 코드의 양이 줄어들어 보안과 안정성이 향상된다. 예를 들어 버퍼 오버플로우로 인해 네트워킹 서비스가 충돌하면 네트워킹 서비스의 메모리만 손상되고 나머지 시스템은 계속 작동한다.

일반적으로 마이크로커널에서는 자원의 추상화 수준이 높고, 멀티프로세서 지원 및 네트워크 투명 통신이 자연스럽게 구현될 수 있으므로 대규모 자원 이용에 유리하다.

3. 2. 단점

마이크로커널은 모든 기능이 프로세스 간 통신(IPC)을 이용하기 때문에 기능 상호 간 오버헤드가 크다는 단점이 있다. 모노리틱 커널과 동일한 기능을 구현했을 때, 성능이 수 %에서 수 배까지 저하될 수 있다.[10] 특히 컨텍스트 스위치 비용을 피하기 위해 필요한 기능을 커널 공간으로 옮겨 외형상 모노리틱 커널처럼 동작시키는 경우도 있다. (co-location|코로케이션영어)

4. 핵심 구성 요소

마이크로커널은 운영 체제의 핵심 기능만을 제공하며, 주요 구성 요소는 다음과 같다:


  • 메모리 관리: 주소 공간 관리 및 메모리 보호 기능을 제공한다.[17]
  • 프로세스 관리: 프로세스 생성, 스케줄링, 프로세스 간 통신(IPC) 기능을 제공한다.[17]
  • 하드웨어 추상화 계층 (HAL): 하드웨어 의존적인 부분을 추상화하여 이식성을 높인다. (요약에는 없지만 원문에 HAL에 대한 언급은 없다)


이러한 최소 설계는 페르 브린치 한센의 Nucleus와 IBM의 VM의 하이퍼바이저에 의해 개척되었다.[17] 이후 리트케의 '최소화 원칙'으로 공식화되었다.

> 마이크로커널 내에서 개념은 해당 개념을 커널 외부로 이동하는 경우, 즉 경쟁 구현을 허용하면 시스템의 필수 기능 구현을 방해하는 경우에만 허용된다.[17]

그 외 모든 것은 유저모드 프로그램에서 수행할 수 있지만, 일부 프로세서 아키텍처에서 사용자 프로그램으로 구현된 장치 드라이버는 I/O 하드웨어에 접근하기 위해 특별한 권한이 필요할 수 있다.

최소화 원칙과 관련하여 마이크로커널 설계에 동일하게 중요한 것은 기구와 정책의 분리이며, 이것이 최소 커널 위에 임의의 시스템을 구축할 수 있게 한다.[13] 커널에 내장된 정책은 사용자 수준에서 덮어쓸 수 없으므로 마이크로커널의 일반성을 제한한다.[13] 사용자 수준 서버에서 구현된 정책은 서버를 교체하거나(또는 응용 프로그램이 유사한 서비스를 제공하는 경쟁 서버 중에서 선택하도록 함) 변경할 수 있다.

효율성을 위해 대부분의 마이크로커널은 최소화 원칙과 정책-메커니즘 분리 원칙을 위반하여 스케줄러를 포함하고 타이머를 관리한다.

마이크로커널 기반 시스템의 시작(부팅)은 커널의 일부가 아닌 장치 드라이버가 필요하다. 일반적으로 이는 부팅 이미지에 커널과 함께 패키지되어 있다는 것을 의미하며, 커널은 드라이버의 위치와 시작 방법을 정의하는 부트스트랩 프로토콜을 지원한다. 이것이 L4 마이크로커널의 전통적인 부트스트랩 절차이다. 일부 마이크로커널은 일부 핵심 드라이버를 커널 내부에 배치하여(최소화 원칙 위반), LynxOS와 원래의 Minix가 그 예이다. 일부는 부팅을 단순화하기 위해 파일 시스템을 커널에 포함하기도 한다. 마이크로커널 기반 시스템은 멀티부트 호환 부트로더를 통해 부팅될 수 있다. 이러한 시스템은 일반적으로 초기 부트스트랩을 수행하거나 OS 이미지를 마운트하여 부트스트랩을 계속하기 위해 정적으로 연결된 서버를 로드한다.

마이크로커널의 핵심 구성 요소는 안전한 방식으로 페이지 폴트 처리 및 스와핑을 사용자 모드 서버에서 구현할 수 있는 훌륭한 IPC 시스템과 가상 메모리 관리자 설계이다. 모든 서비스가 사용자 모드 프로그램에 의해 수행되므로 프로그램 간의 효율적인 통신 수단은 모놀리식 커널에서보다 훨씬 더 중요하다. IPC 시스템의 설계는 마이크로커널을 만들거나 망가뜨린다. 효과적이려면 IPC 시스템은 오버헤드가 낮을 뿐만 아니라 CPU 스케줄링과도 잘 상호 작용해야 한다.

5. 프로세스 간 통신 (IPC)

프로세스 간 통신(IPC)은 서로 다른 프로세스가, 일반적으로 메시지 전달을 통해 서로 통신할 수 있게 해주는 메커니즘이다. 공유 메모리도 엄밀하게 정의하면 프로세스 간 통신 메커니즘의 일종이지만, 마이크로커널에서 IPC라고 하면 일반적으로 메시지 전달을 의미한다. IPC를 사용하면 운영 체제를 서버라고 하는 소규모 프로그램으로 구축할 수 있으며, 시스템의 다른 프로그램에서 IPC를 통해 이러한 서버를 호출하여 사용한다. 주변 하드웨어에 대한 대부분 또는 전부의 지원은 장치 드라이버, 네트워크 프로토콜 스택, 파일 시스템, 그래픽 등을 위한 서버를 사용하여 처리된다.

IPC에는 동기식과 비동기식이 있을 수 있다. 초기 마이크로커널은 일반적으로 동기 및 비동기 IPC를 모두 지원했지만 IPC 성능이 좋지 않았다. 요헨 리트케(Jochen Liedtke)는 이러한 성능 저하의 근본적인 이유가 IPC 메커니즘의 설계 및 구현에 있다고 가정했다. 그의 L4 마이크로커널에서 그는 IPC 비용을 규모의 차수만큼 낮추는 방법을 개척했다.[15] 여기에는 전송 및 수신 작업을 모두 지원하는 IPC 시스템 호출, 모든 IPC의 동기화, 가능한 많은 데이터를 레지스터로 전달하는 것이 포함된다. 또한 리트케는 IPC 실행 중에 (불완전한) 컨텍스트 스위치가 발신자에서 수신자로 직접 수행되는 '직접 프로세스 전환' 개념을 도입했다. L4와 같이 메시지의 일부 또는 전부가 레지스터로 전달되는 경우, 이는 복사 없이 레지스터 내 메시지 부분을 전송한다. 또한 스케줄러 호출에 따른 오버헤드를 피할 수 있다. 이는 클라이언트가 서버를 호출하여 원격 프로시저 호출 (RPC) 유형 방식으로 IPC를 사용하는 일반적인 경우에 특히 유용하다. '지연 스케줄링'이라고 하는 또 다른 최적화는 IPC 중에 스레드를 차단하여 스케줄링 큐를 순회하는 것을 피하고, IPC 중에 차단된 스레드를 준비 큐에 둔다. 스케줄러가 호출되면 이러한 스레드를 적절한 대기 큐로 이동한다. 많은 경우에 스레드는 다음 스케줄러 호출 전에 차단 해제되므로 이 접근 방식은 상당한 작업을 절약한다. 유사한 접근 방식은 이후 QNX와 MINIX 3에서 채택되었다.

일련의 실험에서, 첸과 버샤드는 모놀리식 Ultrix의 메모리 명령당 사이클 (MCPI)을 사용자 공간에서 실행되는 마이크로커널 Mach와 4.3BSD 유닉스 서버의 MCPI와 비교했다. 그들의 결과는 높은 MCPI로 인해 Mach의 성능이 저조하다는 것을 설명하고, IPC만으로는 시스템 오버헤드의 많은 부분을 차지하지 않는다는 것을 보여주었으며, 이는 IPC에만 집중된 최적화가 제한적인 효과를 가질 것이라는 것을 시사한다.[16] 리트케는 나중에 Ultrix와 Mach MCPI의 차이 대부분이 용량 캐시 미스에 의해 발생한다는 점을 관찰하고, 마이크로커널의 캐시 작업 집합을 대폭 줄이면 문제가 해결될 것이라고 결론을 내리면서 첸과 버샤드의 결과를 개선했다.[17]

클라이언트-서버 시스템에서 대부분의 통신은 비동기 기본 요소를 사용하더라도 클라이언트가 서버를 호출한 다음 응답을 기다리는 일반적인 작업이므로 본질적으로 동기적이다. 또한 보다 효율적인 구현에 적합하므로 대부분의 마이크로커널은 일반적으로 L4의 선례를 따라 동기 IPC 기본 요소만 제공했다.

5. 1. 동기식 IPC

마이크로커널에서 동기식 IPC는 송신자와 수신자가 서로를 기다리며 통신하는 방식이다. 이는 구현이 간단하지만, 교착 상태를 발생시킬 수 있다.

5. 2. 비동기식 IPC

마이크로커널의 비동기식 프로세스 간 통신(IPC)은 송신자가 메시지를 보내고 바로 다음 작업을 수행하며, 수신자는 메시지 도착 여부를 확인하거나 알림을 받는 방식으로 작동한다. 이러한 방식은 교착 상태 발생 가능성은 낮지만, 메시지 버퍼링 및 관리가 필요하다는 특징이 있다.

6. 서버

마이크로커널에서 서버는 사용자 공간에서 실행되는 프로세스로, 특정 기능을 제공한다. 일반적인 서버로는 파일 시스템 서버, 장치 드라이버 서버, 네트워크 서버, 디스플레이 서버 등이 있다. 서버는 일반 애플리케이션처럼 개발 및 유지보수가 가능하다.[20] 서버 오류 발생 시 해당 서버만 재시작하면 되므로, 시스템 전체 안정성이 향상된다.[46]

마이크로커널 서버는 다른 데몬 프로그램과 유사하지만, 커널은 일부 서버에 물리 메모리 영역과 상호 작용할 수 있는 권한을 부여한다. 이를 통해 장치 드라이버가 하드웨어와 직접 상호 작용할 수 있다.

범용 마이크로커널의 기본 서버에는 파일 시스템 서버, 장치 드라이버 서버, 네트워킹 서버, 디스플레이 서버, 사용자 인터페이스 장치 서버가 포함된다. 이 서버 집합은 QNX에서 가져온 것으로, Unix 모놀리식 커널에서 제공하는 서비스와 거의 동일하다. 필요한 서버는 시스템 시작 시 시작되며, 일반 응용 프로그램에 파일, 네트워크 및 장치 액세스 등의 서비스를 제공한다. 서버가 사용자 응용 프로그램 환경에서 실행되므로, 서버 개발은 일반 응용 프로그램 개발과 유사하며, 커널 개발에 필요한 빌드 및 부팅 프로세스가 필요하지 않다.

서버에 오류가 발생해도 시스템 전체가 중단되지 않고, 해당 서버만 재시작하면 된다. 하지만 시스템 상태 일부가 손실될 수 있으므로, 응용 프로그램은 서버 오류에 대처해야 한다. 예를 들어, TCP/IP 연결을 담당하는 서버를 재시작하면 응용 프로그램은 연결이 끊기는 것을 경험하는데, 이는 네트워크 시스템에서 정상적으로 발생할 수 있는 장애이다. 다른 서비스의 경우, 응용 프로그램이 오류를 예상하지 못하면 코드 변경이 필요할 수 있다. QNX는 QNX High Availability Toolkit을 통해 재시작 기능을 제공한다.[20]

ChorusOS와 같이 트랜잭션이나 복제 등의 데이터베이스 기술을 도입하여 전체 서버를 재시작 가능하게 만든 마이크로커널도 있다.

7. 장치 드라이버

장치 드라이버직접 메모리 접근(DMA)을 수행하는 경우가 많아, 커널 데이터 구조를 포함한 물리 메모리의 임의 위치에 쓰기 작업을 할 수 있다. 따라서 이러한 드라이버는 신뢰성이 높아야 한다. 하지만, 드라이버가 커널의 일부가 된다고 해서 본질적으로 더 신뢰할 수 있거나 덜 신뢰할 수 있는 것은 아니다.

사용자 공간에서 장치 드라이버를 실행하면 버그가 있는 드라이버(악의적인 드라이버는 제외)로 인한 시스템 안정성 문제를 줄일 수 있다. 드라이버 코드 자체의 메모리 접근 위반은 메모리 관리 하드웨어에 의해 감지될 수 있기 때문이다. 또한, DMA를 사용하지 않는 많은 장치는 사용자 공간에서 실행하여 신뢰할 수 없게 만들 수 있다. 최근에는 IOMMU를 탑재한 컴퓨터가 늘어나고 있으며, 이를 통해 장치의 물리적 메모리 접근을 제한할 수 있다.[47] 이는 사용자 모드 드라이버를 신뢰할 수 없게 만드는 또 다른 방법이다.

사용자 모드 드라이버는 마이크로커널보다 먼저 등장했다. 1967년 미시간 터미널 시스템(MTS)은 사용자 공간 드라이버(파일 시스템 지원 포함)를 지원한 최초의 운영 체제였다.[48] 역사적으로는 장치 수가 적고 신뢰할 수 있었기 때문에 드라이버를 커널에 포함하는 것이 일반적이었다. 이는 설계를 단순화하고 성능 문제를 피할 수 있게 해주었다. 유닉스,[49] 리눅스, 윈도우 XP 이전의 윈도우는 이러한 전통적인 드라이버-인-커널 방식을 따랐다. 하지만 다양한 종류의 주변 장치가 확산되면서 드라이버 코드의 양이 증가했고, 현대 운영 체제에서는 커널 코드 크기의 상당 부분을 차지하게 되었다.

8. 나노커널

나노커널(nanokernel) 또는 피코커널(picokernel)이라는 용어는 역사적으로 다음을 가리킨다.[69]

# 커널 코드, 즉 하드웨어의 특권 모드에서 실행되는 코드의 양이 매우 작은 커널.

# 운영 체제 밑에 존재하는 가상화 계층 (하이퍼바이저)[70]

# 커널의 최하층부를 형성하는 하드웨어 추상화 계층(HAL)

"나노커널"이라는 용어를 만들어낸 것은 조나단 S. 샤피로(Jonathan S. Shapiro)이며, [https://web.archive.org/web/20110621235229/http://www.cis.upenn.edu/~KeyKOS/NanoKernel/NanoKernel.html ''The KeyKOS NanoKernel Architecture''] (1992)라는 논문에서 처음 사용했다. 그것은 Mach에 대한 냉소적인 반응이었다. 그는 Mach에 대해 본질적으로 비구조적이며, 모노리식인데 마이크로커널이라고 주장할 뿐이며, 대체하려는 것보다 성능이 나쁘다고 평했다.

커널이 극히 작은 것을 강조할 때 "피코커널"이라는 호칭도 사용되었다. "나노커널"과 "피코커널"이라는 용어가 다른 곳에서 사용되고, 피코커널이라는 호칭이 생겨난 배경에는, 기존의 마이크로커널이 "커널이 작다"는 점에서 크게 벗어났음을 시사하고 있다. 그 후, 나노커널과 피코커널은 마이크로커널과 같은 의미로 사용되었다.

OS 아래에 있는 가상화 계층은 더 정확하게는 "하이퍼바이저"라고 불린다. 커널의 최하층부를 형성하고 있는 하드웨어 추상화 계층으로는 Adeos가 있으며, 일반적인 OS에 실시간 기능을 제공하는 데 사용된다.

또한, 작지 않은 커널을 나노커널이라고 부르는 용례도 적어도 하나 있으며, 그 경우에는 클록 간격으로 나노초 단위까지 지원하는 커널을 가리킨다.[67]

9. 3세대 마이크로커널

최근 연구에서는 보안 및 안정성을 강화한 3세대 마이크로커널이 등장하고 있다. 3세대 마이크로커널은 형식적 분석에 적합하도록 설계되었으며, 역량으로 제어되는 리소스 접근, 가상화를 최우선 고려 사항으로 하고, 커널 리소스 관리에 대한 새로운 접근 방식을 특징으로 한다.[36] 또한 높은 성능을 목표로 한다.[35]

대표적인 3세대 마이크로커널로는 코요토스, seL4, 노바,[37][38] 레독스 및 Fiasco.OC가 있다.[37][39]

seL4의 경우, 구현에 대한 완전한 형식적 검증이 이루어졌는데,[1] 이는 커널의 구현이 형식적 명세와 일치한다는 수학적 증명이 이루어졌음을 의미한다. 이는 API에 대해 증명된 속성이 실제로 실제 커널에 적용된다는 보증을 제공하며, 이는 CC EAL7보다도 높은 수준의 보증이다. 이어서 API의 보안 강제 속성에 대한 증명과 실행 가능한 바이너리 코드가 C 구현의 올바른 번역이며 컴파일러를 TCB에서 제거한다는 증명이 이어졌다. 이러한 증명들은 함께 커널의 보안 속성에 대한 종단 간 증명을 확립한다.[40]

10. 비판 및 논쟁

마이크로커널은 모놀리식 커널에 비해 성능이 떨어진다는 비판을 받아왔다.[43] 모놀리식 시스템에서는 한 번의 시스템 호출로 서비스를 얻으며, 이때 두 번의 모드 전환(프로세서의 링 또는 CPU 모드 변경)이 필요하다. 반면, 마이크로커널 기반 시스템에서는 IPC 메시지를 통해 서비스를 요청하고 결과를 받는다.[13] 이 과정은 드라이버가 프로세스로 구현되면 컨텍스트 스위치를, 프로시저로 구현되면 함수 호출을 유발한다. 또한, 데이터 송수신 과정에서 추가적인 복사 오버헤드가 발생할 수 있다. 모놀리식 시스템에서는 커널이 클라이언트 버퍼에 직접 접근 가능하다는 장점이 있다.

이러한 구조적 차이로 인해, Mach와 ChorusOS 같은 1세대 마이크로커널 시스템은 성능 저하를 겪었다.[16] 그러나 요헨 리트케는 Mach의 성능 문제가 과도한 캐시 점유율 등 잘못된 설계 및 구현에 기인함을 밝혔다.[17] 그는 L4 마이크로커널을 통해 신중한 설계와 최소주의 원칙을 적용하면 IPC 비용을 Mach보다 10배 이상 줄일 수 있음을 입증했다. L4의 IPC 성능은 다양한 아키텍처에서 최고 수준을 유지하고 있다.[24][25][26]

L4에 모놀리식 Linux 서버를 포팅했을 때 네이티브 Linux 대비 오버헤드는 몇 퍼센트에 불과했다.[27] 하지만 이는 단일 서버 시스템으로, 운영 체제 기능을 여러 서버로 분산하는 마이크로커널의 장점을 보여주지 못한다.

QNX와 Integrity와 같은 상용 다중 서버 시스템(특히 실시간 운영 체제)이 존재한다. 그러나 이들 시스템과 모놀리식 시스템 간의 포괄적인 성능 비교는 발표되지 않았다. 이들 시스템은 성능보다 빠른 인터럽트 처리 응답 시간(QNX)과 견고성을 위한 단순성에 중점을 둔다. IBM Sawmill Linux 프로젝트는 고성능 다중 서버 운영 체제 구축을 시도했지만,[28] 완료되지 못했다.

최근 연구에 따르면, 사용자 수준 장치 드라이버가 기가비트 이더넷과 같이 높은 처리량과 잦은 인터럽트를 요구하는 장치에서도 커널 내 드라이버에 근접한 성능을 낼 수 있다.[29] 이는 고성능 다중 서버 시스템의 가능성을 시사한다.

11. 활용 사례

마이크로커널은 다양한 분야에서 활용되고 있다. 특히, 실시간 운영체제(RTOS)가 필요한 임베디드 시스템이나 보안이 중요한 시스템에서 많이 사용된다.

마이크로커널 기반 운영체제의 대표적인 예는 다음과 같다:



최근에는 IoT 기기, 스마트폰, 자동차 등 다양한 분야에서 마이크로커널 기술이 활용되고 있다.

12. 더불어민주당 관점에서의 서술 (예시)

해당 섹션은 원본 소스가 제공되지 않아 작성할 수 없습니다.

참조

[1] 웹사이트 Toward a True Microkernel Operating System http://www.minix3.or[...] 2005-02-23
[2] 웹사이트 read-more http://wiki.minix3.o[...] 2016-12-20
[3] 웹사이트 Per Brinch Hansen https://www.computer[...] IEEE Computer Society 2016-09-13
[4] 서적 A Programmer's Story: The Life of a Computer Pioneer http://brinch-hansen[...] 2016-09-13
[5] 기술 보고서 RC 4000 Software: Multiprogramming System http://brinch-hansen[...] 2016-09-13
[6] 학술지 The Nucleus of a Multiprogramming Operating System http://www.brinch-ha[...]
[7] 학술지 HYDRA: The Kernel of a Multiprocessor Operating System 1974-06
[8] 학회 Accent: A communication oriented network operating system kernel 1981-12
[9] 서적 Amiga ROM Kernel Reference Manual
[10] 웹사이트 CMU CS Project Mach Home Page https://www.cs.cmu.e[...] Carnegie Mellon University 2024-08-08
[11] 비디오 미디어 WWDC 2000 Session 106 - Mac OS X: Kernel https://www.youtube.[...]
[12] 웹사이트 Porting UNIX/Linux Applications to Mac OS X https://developer.ap[...] Apple 2011-04-26
[13] 학술지 Towards Real Microkernels 1996-09
[14] 학술지 Are Virtual-Machine Monitors Microkernels Done Right? http://os.ibds.kit.e[...] ACM 2006-01
[15] 학회 Improving IPC by kernel design 1993-12
[16] 학회 The Impact of Operating System Structure on Memory System Performance https://people.eecs.[...] 1993-12
[17] 학회 On µ-Kernel Construction 1995-12
[18] 학회 From L3 to seL4: What Have We Learnt in 20 Years of L4 Microkernels? 2013-11
[19] 웹사이트 Synchronous Message Passing https://www.qnx.com/[...] 2024-09-03
[20] 웹사이트 The QNX High Availability Toolkit http://www.qnx.com/d[...]
[21] 학술지 I/O, I/O, It's Off to Virtual Work We Go http://www.electroni[...] 2007-04-27
[22] 학회 Organization and Features of the Michigan Terminal System
[23] 서적 Lions' Commentary on UNIX 6th Edition, with Source Code Peer-To-Peer Communications 1977-08-01
[24] 학회 Achieved IPC performance (still the foundation for extensibility) IEEE 1997-05
[25] 학회 Itanium—a system implementor's tale http://www.usenix.or[...] 2005-04
[26] 학회 High-performance microkernels and virtualisation on ARM and segmented architectures http://ertos.nicta.c[...] NICTA 2007-01
[27] 학회 The performance of μ-kernel-based systems http://portal.acm.or[...] 1997-10
[28] 학회 The Sawmill multiserver approach
[29] 학술지 User-level device drivers: achieved performance 2005-09
[30] 웹사이트 Tanenbaum-Torvalds debate, part II http://www.cs.vu.nl/[...]
[31] 문서 2006-05
[32] 학회 The Jury Is In: Monolithic OS Design Is Flawed: Microkernel-based Designs Improve Security https://dl.acm.org/d[...] Association for Computing Machinery 2018
[33] 학회 Verifying the EROS Confinement Mechanism http://www.eros-os.o[...]
[34] 서적 Verified Protection Model of the seL4 Microkernel http://ertos.org/pub[...] submitted for publication
[35] 학회 seL4: Formal verification of an OS kernel http://www.sigops.or[...] 2009-10
[36] 학회논문 Kernel design for isolation and assurance of physical memory http://ertos.nicta.c[...] 2009-08-17
[37] 웹사이트 TUD Home: Operating Systems: Research: Microkernel & Hypervisor http://www.inf.tu-dr[...] Technische Universität Dresden 2011-11-05
[38] 학회논문 NOVA: A Microhypervisor-Based Secure Virtualization Architecture 2010-04-00
[39] 학회논문 Taming Subsystems – Capabilities as Universal Resource Access Control in L4 http://portal.acm.or[...] 2009-03-00
[40] 저널논문 Comprehensive Formal Verification of an OS Microkernel 2014-02-00
[41] 웹사이트 The Nanokernel http://www.eecis.ude[...] 2017-08-28
[42] 웹사이트 Porting UNIX/Linux Applications to Mac OS X http://developer.app[...] Apple 2011-04-26
[43] 저널논문 Towards Real Microkernels 1996-09-00
[44] 저널논문 Are Virtual-Machine Monitors Microkernels Done Right? ACM 2006-01-00
[45] 학회논문 Improving IPC by kernel design http://citeseerx.ist[...] 1993-12-00
[46] 문서 QNX High Availability Toolkit http://support7.qnx.[...]
[47] 저널논문 I/O, I/O, It's Off to Virtual Work We Go http://electronicdes[...] 2009-06-08
[48] 저널논문 Organization and Features of the Michigan Terminal System
[49] 서적 Lions' Commentary on UNIX 6th Edition, with Source Code Peer-To-Peer Communications 1977-08-01
[50] 학회논문 On µ-Kernel Construction 1995-12-00
[51] 학회논문 The Impact of Operating System Structure on Memory System Performance 1993-12-00
[52] 학회논문 Achieved IPC performance (still the foundation for extensibility) http://os.ibds.kit.e[...] IEEE 1997-05-00
[53] 학회논문 Itanium—a system implementor's tale http://www.usenix.or[...] 2005-04-00
[54] 학회논문 High-performance microkernels and virtualisation on ARM and segmented architectures http://www.ssrg.nict[...] NICTA 2007-04-01
[55] 저널논문 The performance of µ-kernel-based systems http://portal.acm.or[...] 1997-10-00
[56] 학회논문 The Sawmill multiserver approach
[57] 저널논문 User-level device drivers: achieved performance 2005-09-00
[58] 웹사이트 Tanenbaum-Torvalds debate, part II http://www.cs.vu.nl/[...]
[59] 문서 Tanenbaum, A., Herder, J. and Bos, H. (May 2006).
[60] 학회논문 Verifying the EROS Confinement Mechanism http://www.eros-os.o[...]
[61] 서적 Verified Protection Model of the seL4 Microkernel http://www.nicta.com[...] submitted for publication
[62] 학회논문 seL4: Formal verification of an OS kernel http://www.sigops.or[...] 2009-10-00
[63] 학회논문 Kernel design for isolation and assurance of physical memory http://ertos.nicta.c[...] 2008-04-00
[64] 웹사이트 TUD Home: Operating Systems: Research: Microkernel & Hypervisor http://www.inf.tu-dr[...] Technische Universität Dresden 2011-11-05
[65] 학회논문 NOVA: A Microhypervisor-Based Secure Virtualization Architecture http://doi.acm.org/1[...] 2010-04-00
[66] 학회논문 Taming Subsystems - Capabilities as Universal Resource Access Control in L4 http://portal.acm.or[...] 2009-03-00
[67] 웹사이트 http://www.eecis.ude[...]
[68] 웹인용 The MINIX 3 Operating System http://www.minix3.or[...] 2012-06-08
[69] 저널논문 Towards Real Microkernels 1996-09-00
[70] 저널논문 Are Virtual-Machine Monitors Microkernels Done Right? http://os.ibds.kit.e[...] ACM 2016-08-12

관련 사건 타임라인

( 최근 20개의 뉴스만 표기 됩니다. )



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com