WaveOS는 Wave로 개발되고 있는 운영체제이다. Wave 생태계에서 운영체제 커널과 장치 드라이버, 시스템 라이브러리, 사용자 공간 소프트웨어까지 하나의 언어를 중심으로 구축할 수 있는 독립적인 시스템 환경을 목표로 한다.
WaveOS는 기존 UNIX 계열 운영체제를 그대로 재현하는 대신, 운영체제의 자원과 권한, 메모리, 프로세스 간 통신을 객체 중심으로 구성하는 방향을 따른다. 메모리 영역과 장치, 프로세스, 스레드, 통신 endpoint 등의 시스템 자원은 커널 객체로 표현되며, 실행 주체는 object table에 직접 접근하지 않고 권한 정보가 연결된 핸들을 통해 객체를 사용한다.
커널은 핵심 기능을 커널 주소 공간에서 실행하면서도 장치 드라이버와 파일 시스템, 네트워크 스택 등의 기능을 명확한 인터페이스를 가진 모듈로 분리하는 모듈형 모놀리식 커널 구조를 지향한다. 스케줄러와 메모리 관리자, object table과 같은 기반 기능은 커널 core에 포함하고, 독립적인 갱신이나 확장이 필요한 기능은 커널 모듈로 구성한다.
메모리 구조는 장기적으로 단일 주소 공간과 capability 기반 객체 격리를 결합하는 것을 목표로 한다. 커널과 사용자 공간 사이의 데이터 이동은 가능한 경우 반복적인 메모리 복사보다 공유 메모리, zero-copy와 소유권 이전을 사용하며, 객체별 접근 권한은 핸들에 연결된 capability bit를 통해 관리한다.
멀티코어 환경에서는 모든 CPU가 하나의 전역 실행 큐와 잠금에 의존하는 구조보다 CPU 코어별 스케줄러 큐와 메모리 자원을 사용하는 구조를 지향한다. 코어 사이의 작업 전달과 상태 변경에는 공유 변수뿐 아니라 메시지 전달과 IPI를 사용하며, 반드시 공유해야 하는 상태는 객체와 capability 경계에서 명시적으로 관리한다.
WaveOS의 개발 과정은 Boot Layer, Kernel Foundation, Advanced OS의 세 단계로 구분된다. Boot Layer는 UEFI에서 필요한 시스템 정보를 수집하고 커널을 실행하는 역할을 담당한다. 현재 중심 개발 단계인 Kernel Foundation에서는 물리·가상 메모리 관리, 커널 힙, object table, handle table과 capability 모델을 구축한다. 기반 구조가 안정된 뒤에는 시스템 호출, 사용자 모드, 스케줄러, 커널 모듈 로더, 장치 드라이버 프레임워크와 hotpatch 등의 고급 운영체제 기능을 추가할 예정이다.
WaveOS는 전용 가상 머신 환경인 WVM뿐 아니라 실제 UEFI 기반 컴퓨터에서 실행되는 것을 목표로 한다. 부트 계층은 UEFI에서 framebuffer와 memory map 등의 정보를 수집해 WaveBootInfo로 정리한 뒤 firmware 환경을 종료하며, 이후 커널이 메모리와 장치를 직접 관리한다.
현재 WaveOS의 소스 코드는 개발 안정성과 내부 구조 정립을 위해 비공개로 관리되고 있다. 운영체제로서 일정 수준의 기능과 안정성, 개발 기반이 갖추어진 뒤에는 소스 코드를 공개하고 오픈 소스 프로젝트로 전환할 예정이다.
WaveOS는 현재 개발 중인 운영체제이다. 문서에 설명된 구조와 명칭, 인터페이스는 실제 구현과 개발 단계에 따라 변경될 수 있다. 소스 코드는 현재 비공개이지만 일정 수준의 완성도와 안정성에 도달한 뒤 오픈 소스로 공개될 예정이다.