맨위로가기

모놀리식 커널

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

1. 개요

모놀리식 커널은 운영 체제의 모든 기능을 단일 메모리 공간에서 실행하는 커널 구조이다. 마이크로 커널과 대조되는 개념으로, 초기에는 성능 면에서 유리하다는 평가를 받았으나, 기술 발전과 하이브리드 커널의 등장으로 그 경계가 모호해졌다. 현대의 모놀리식 커널 운영 체제는 런타임에 커널 모듈을 동적으로 로드 및 언로드할 수 있는 유연성을 제공한다. 리눅스, FreeBSD, OpenBSD, NetBSD 등이 모놀리식 커널의 대표적인 사례이며, 1992년 리누스 토르발스와 앤드루 타넨바움 간의 논쟁을 통해 주목받기도 했다.

더 읽어볼만한 페이지

  • 모놀리식 커널 - 리눅스 커널
    리눅스 커널은 1991년 리누스 토르발스가 개발을 시작한 UNIX에서 영감을 받은 운영 체제 커널로, GPLv2 라이선스를 채택하여 자유로운 사용과 배포를 허용하며 다양한 하드웨어 아키텍처를 지원하고 모듈형 구조를 통해 장치 드라이버 추가가 가능하다.
  • 모놀리식 커널 - XNU
    XNU는 NeXTSTEP 운영 체제를 위해 개발된 하이브리드 커널로, Mach 커널, BSD 컴포넌트, I/O Kit를 결합하여 macOS, Darwin, iOS 등에서 사용되며 ARM64 및 x86-64 프로세서를 지원한다.
  • 운영체제 기술 - 프로세스
    프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다.
  • 운영체제 기술 - 커널 (컴퓨팅)
    커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다.
모놀리식 커널
일반 정보
이름모놀리식 커널
유형커널
특징모든 서비스가 커널 공간에서 실행됨
구조
디자인단일 주소 공간에서 모든 서비스를 제공하는 통합 커널 구조
모듈커널 모듈 형태로 기능 확장 가능
장단점
장점서비스 간 통신 오버헤드 감소
높은 성능
단점커널 크기 증가
유지 보수 어려움
보안 취약성 증가 가능성
예시
운영 체제리눅스
BSD 계열 운영 체제
솔라리스
DOS
마이크로소프트 윈도우 9x
macOS (XNU 커널, 하이브리드 커널이지만 모놀리식 커널에 가까움)

2. 마이크로 커널과의 관계

운영 체제(OS)를 구성하는 요소들을 단일 메모리 공간에서 실행하는 모놀리식 커널과 달리, 마이크로 커널은 OS를 구성하는 몇 가지 요소, 기능을 커널 공간에서 분리하여 외부 모듈화하는 기법을 말한다. 모놀리식 커널의 설계 사상 및 개념 자체는 이전부터 존재했지만, '모놀리식 커널'이라는 용어는 마이크로커널이라는 개념이 등장하면서 그 반대 개념으로 명명되었다.[4]

모놀리식 커널 방식은 OS 기능의 대부분이 단일 메모리 공간에서 수행되므로, 마이크로커널 방식에 비해 동일한 처리를 수행할 때 컨텍스트 스위치나 프로세스 간 통신 등에 의한 오버헤드가 상대적으로 적어, 실질적인 성능 면에서 유리하다는 견해가 있다. 실제로 프로세서의 동작 클럭이 수 MHz - 수십 MHz 정도였던 1980년대에는 컨텍스트 스위치 등의 실행 비용 문제가 컸기 때문에, 당시 상용 UNIX의 대부분은 모놀리식 커널 방식을 채택했다.

하지만 프로세서의 처리 속도가 비약적으로 발전하고, 마이크로커널의 고속화 기술 발전 및 필요에 따라 일부 서브 시스템을 커널 공간에 통합하는 구현이 등장하면서, 모놀리식 커널의 성능상 우위는 작아졌다.

모놀리식 커널은 OS 커널의 풋프린트를 비교적 작게 유지하기 쉽고, 비선점 제약을 추가하면 서비스 구현 시 고려 사항이 줄어들어 개발이 쉬워지는 장점이 있다. 반면, 다양한 기능을 통합함으로써 거대화되어 OS의 기능을 동적으로 전환하거나 업데이트하는 것이 (마이크로커널에 비해) 어려워지는 단점이 있다.

1990년대 초, 커널 기능을 최소한으로 유지하는 마이크로커널이 연구 개발 세계에서 주류가 되면서 모놀리식 커널은 시대에 뒤떨어진 것으로 여겨지기도 했다. 그러나 구현 레벨에서의 차이가 동작상의 치명적인 설계 문제는 아니며, 현재는 필요한 기능을 필요한 성능 레벨로 제공할 수 있다면 문제없다는 형태로 논의가 종결되었다.

Solaris, HP-UX, AIX와 일본의 국산 UNIX 계통, x86계 PC에서 UNIX 호환 기능을 제공하는 리눅스[4]는 모놀리식 커널을 기초로 한다. 리눅스는 실행 시에 읽어 들이는 커널 모듈을 통해 실행 시 유연성을 높였다.

Windows NT는 초기에는 마이크로커널 방식으로 구현하려 했으나, 오버헤드를 줄이기 위해 여러 수정이 가해졌다. NT 4.0에서는 Windows 서브 시스템과 그래픽스 장치 드라이버가 커널 공간에서 직접 보이도록 수정되었고, Windows 2000 이후에는 하드웨어 관리 기능 일부를 커널 제어부 본체에서 제어하는 방식으로 전환하여 순수한 마이크로커널에서 벗어났다. 결과적으로 Windows NT는 마이크로커널과 모놀리식 커널의 절충을 취한 하이브리드 커널이 되었다.

Mach에서 파생된 macOS도 BSD 서브 시스템, 파일 시스템, 네트워크 등을 커널 공간에 통합하여 순수한 마이크로커널에서 벗어났다. Windows와 마찬가지로, 마이크로커널과 모놀리식 커널 양쪽의 장점을 살린 설계이다.

3. 커널 구현 방식

운영 체제의 구성 요소를 단일 메모리 공간에서 실행하는 모놀리식 커널과 달리, OS를 구성하는 몇몇 요소나 기능을 커널 공간에서 분리하여 외부 모듈화하는 방식으로 구현하는 것을 마이크로 커널이라고 부른다. 모놀리식 커널은 마이크로 커널의 등장으로 인해 그 반대 개념으로 명명되었다.

모놀리식 커널은 마이크로 커널 방식에 비해 문맥 교환프로세스 간 통신(IPC) 등에 의한 오버헤드가 적어 성능상 유리하다는 주장이 있다. 과거 프로세서 성능이 낮았던 시절에는 이러한 성능 차이가 중요하게 고려되었다. 1980년대 상용 유닉스는 대부분 모놀리식 커널을 채택했다.

그러나 현대에는 프로세서 성능 향상, 마이크로 커널의 고속화 기술 발전 등으로 인해 모놀리식 커널의 성능상 우위가 모호해졌다. 2005년 이후, 순수 모놀리식 커널 방식 개발의 이점은 적다는 의견이 있으나, 비선점형(non-preemptive) 제약을 추가하면 개발이 용이하다는 장점이 있다.

모놀리식 커널은 기능 추가로 인해 커널이 비대해지면, 동적인 기능 변경이나 업데이트가 어려워질 수 있다. 1990년대 초 연구 개발 분야에서는 마이크로 커널이 주류였으나, 현재는 필요한 기능을 필요한 성능으로 제공하면 문제가 없다는 결론이 내려졌다.

3. 1. 하이브리드 커널

윈도우 NT는 초기에는 마이크로 커널 방식으로 개발을 시도했지만, 성능 향상을 위해 NT 4.0부터 윈도 하부 시스템과 그래픽 장치 드라이버를 커널 공간에 포함시켰다.[4] 윈도우 2000 이후에는 하드웨어 관리 기능 일부도 커널 제어부 본체에서 제어하는 방식으로 변경하여 순수 마이크로 커널에서 벗어났다. NT 4.0에서 800킬로바이트 미만이던 NTOSKRNL(윈도우 NT 계열의 커널 시스템)은 윈도우 XP에서 2메가바이트까지 커졌다. 그러나 마이크로 커널 구조는 여전히 남아있어, 결과적으로 마이크로 커널과 모놀리식 커널의 장점을 결합한 하이브리드 커널 형태가 되었다.

macOS 역시 마하 커널 기반으로 개발되었지만, BSD 하부 시스템, 파일 시스템, 네트워크 등을 커널 공간에 통합하여 순수 마이크로 커널에서 벗어났다.[4] 윈도우와 마찬가지로, 마이크로 커널과 모놀리식 커널의 장점을 모두 활용하는 하이브리드 커널 설계를 채택했다.

4. 로드 가능한 모듈

OS-9, OpenVMS, 리눅스, FreeBSD, NetBSD, DragonFly BSD, 솔라리스, AIX, Multics와 같은 대부분의 최신 모놀리식 커널 운영 체제는 런타임에 커널 모듈을 동적으로 로드 및 언로드할 수 있다.[3]

이는 운영 체제의 기능을 쉽게 확장할 수 있게 하며, 필요에 따라 모듈을 동적으로 로드함으로써 커널 공간에서 실행되는 코드의 양을 최소화하는 데 도움이 된다. 예를 들어, 임베디드 장치나 하드웨어 리소스가 제한된 장치에서 운영 체제 공간을 최소화하기 위해 사용된다. 즉, 언로드된 모듈은 부족한 임의 접근 기억 장치에 저장할 필요가 없다.[3]

5. 앤드루 타넨바움과 리누스 토르발스의 논쟁

1992년, 리눅스 개발자 리누스 토르발스와 MINIX 개발자 앤드루 타넨바움은 모놀리식 커널과 마이크로 커널의 장단점에 대해 논쟁을 벌였다.[1]

6. 모놀리식 커널 사례

참조

[1] 웹사이트 Modular system programming in Minix3 http://www.usenix.or[...]
[2] 웹사이트 Server-Client, or layered structure http://www.gridbus.o[...] The Design of PARAS Microkernel 2009-07-15
[3] 웹사이트 Kernel Definition http://www.linfo.org[...]
[4] 문서 초기 Linux의 모듈 구조



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

문의하기 : help@durumis.com