엑소커널(Exokernel)은 매사추세츠 공과대학교의 병렬 및 분산 운영 체제 그룹에서 개발한 운영 체제 커널이다.
엑소커널의 기본 아이디어는 개발자에게 가장 낮은 수준의 추상(abstraction) 수준을 제공함으로써 개발자들이 하드웨어와 관련해 가능한 많은 결정권을 갖도록 만드는 것이다. 엑소커널은 자원에 대한 보호(protection)와 다중화(multiplexing)만을 제공하므로 매우 크기가 작고, 마이크로커널의 메시지 전달(message passing)이나 모놀리틱 커널의 추상 계층들에 비해 훨씬 간단하다.
엑소커널 위에서 구현된 애플리케이션은 라이브러리 운영 체제(library OS)라고 불리는데, 이 라이브러리 운영 체제들은 특정 메모리 영역, 디스크 블록 등의 자원을 엑소커널에 요청할 수 있다. 커널은 요청된 자원이 쓸 수 있는지, 요청한 애플리케이션이 접근 가능한지만을 확인한다. 이런 낮은 수준의 하드웨어 접근 방식은 애플리케이션 프로그래머들이 예전의 추상 계층들을 똑같이 구현하거나, 쓸모없는 부분을 생략하거나, 프로그램의 성능을 향상시키는 데 쓰일 수 있다. 따라서 프로그래머들은 어느 수준의 추상화를 원하는지를 선택할 수 있다.
엑소커널은 하나의 애플리케이션이 다른 요구조건(requirements)을 가진 다른 추상 계층 위에 놓이도록 강제하지 않는다는 점에서 단대단 원칙(end-to-end principle)을 운영 체제에 적용한 한 예로도 볼 수 있다. 예를 들어 MIT 엑소커널 프로젝트에서는 치타 웹 서버는 미리 형태가 준비된 인터넷 프로토콜(IP) 패킷을 디스크에 저장해놓고, 커널은 그 디스크에 대한 다른 애플리케이션의 읽기 및 쓰기를 차단해준다. 하지만 디스크가 어떻게 추상화되어 있는지는 전적으로 애플리케이션이나 그 애플리케이션이 쓰는 라이브러리에 달려있을 뿐이다.
엑소커널은 추상화를 제공하는 라이브러리 운영 체제(libOSes)를 이용한다. 라이브러리 운영 체제는 응용 소프트웨어 프로그래머에게 고수준, 전통적인 운영 체제 추상화, 맞춤 추상화 구현의 의한 더 유동적인 방법을 제공한다. 이론적으로 엑소커널 체제는 하나의 엑소커널 아래에 윈도나 유닉스와 같은 다양한 운영 체제를 구동할 수 있다.
엑소커널의 개념은 1995년에 MIT의 도슨 앵글러가 쓴 논문[1]에서 소개되었고, 여전히 학계에서 연구 중이나 대규모의 상용 운영 체제는 없다. 연구용으로 현재 사용되고 있는 엑소커널 기반의 시스템은 케임브리지 대학교, 글라스고 대학교, Citrix Systems, Swedish Institute of Computer Science가 만든 네미시스와 MIT가 엑소커널 기반의 운영 체제로 구성한 ExOS가 있다.