Mach

Mach는 미국 카네기 멜런 대학교(CMU)에서 1985년 시작한 운영체제 커널 연구 프로젝트이자 그 결과로 개발된 커널 계열이다. Accent에서 발전한 메시지 전달 개념에 스레드, 태스크, 가상 메모리 및 외부 메모리 관리 등의 추상화를 결합했으며, 초기 Mach는 BSD UNIX...

분류운영체제 커널 계열, 마이크로커널 연구
개발기관카네기 멀런 대학교
시작1985년
핵심 연구자Richard Rashid, Avie Tevanian 등
선행 연구RIG → Accent
초기 UNIX 기반4.2BSD
주요 버전Mach 1, Mach 2.5, Mach 3.0
기능태스크·스레드, IPC, 가상 메모리, 외부 페이저
후속 구현Mach4, GNU Mach, OSF/1, XNU
상태원본 CMU 프로젝트 종료
공식 자료CMU Mach Project

Mach는 미국 카네기 멜런 대학교(CMU)에서 1985년 시작한 운영체제 커널 연구 프로젝트이자 그 결과로 개발된 커널 계열이다. Accent에서 발전한 메시지 전달 개념에 스레드, 태스크, 가상 메모리 및 외부 메모리 관리 등의 추상화를 결합했으며, 초기 Mach는 BSD UNIX 기능을 커널에 포함했고 Mach 3.0은 더 많은 운영체제 서비스를 사용자 공간으로 분리하는 마이크로커널 구조를 취했다. GNU Mach, XNU, OSF/1 등 서로 다른 방식으로 이를 계승한 구현들이 존재한다.[1]

Mach의 핵심 설계는 실행 자원을 관리하는 태스크와 실제 실행 단위인 스레드를 분리하고, 서로 다른 태스크가 커널이 보호하는 포트를 통해 메시지를 주고받도록 한 데 있다. 가상 메모리 객체와 외부 메모리 관리 인터페이스는 운영체제 서비스의 구성을 바꾸고 메모리 관련 기능을 분리할 수 있도록 했다. 이러한 기능은 다중 프로세서 시스템의 확장성과 분산 운영체제의 통신·보호 구조를 함께 연구하는 토대가 되었다.[2]

Mach 2.x 계열은 BSD UNIX의 많은 기능을 커널 내부에 유지한 통합 구조였지만, Mach 3.0은 파일 시스템과 UNIX 호환 서비스를 사용자 공간 서버로 옮기는 마이크로커널 구조를 채택했다. 이 기술은 GNU Mach·GNU Hurd, Mach-US, Lites 등의 연구로 이어졌으며, NeXTSTEP·Rhapsody와 Apple의 XNU에서도 다양한 형태로 계승되었다. 따라서 Mach라는 이름은 단일한 운영체제 제품보다 여러 버전과 후속 커널을 포함하는 역사적 계열을 가리킨다.[3]

Mach는 UNIX 프로그램을 실행할 수 있는 환경을 유지하면서 커널의 통신·메모리·스케줄링 구조를 바꾸기 위해 시작되었다. 초기 릴리스에는 BSD UNIX 서비스가 커널 안에 포함되었지만, 1989년경 시작된 3.0 개발에서는 많은 UNIX 서비스를 별도 사용자 공간 서버로 이동시키는 방향을 선택했다. 따라서 Mach라는 이름은 단일한 고정 아키텍처보다 발전 단계가 다른 여러 커널 구현을 포괄한다.[4]

Mach의 태스크는 주소 공간과 시스템 자원을 소유하고, 스레드는 실제 실행을 담당한다. 포트에 부여된 권한과 메시지는 태스크 사이의 IPC 및 운영체제 서비스 호출을 연결하며, 메모리 객체와 외부 페이저는 가상 메모리를 파일 서비스 같은 다른 구성 요소와 연결한다. 이 구조는 GNU Hurd의 사용자 공간 서버와 Apple XNU의 커널 내부 Mach 하위 시스템 등 서로 다른 계보에서 다양한 방식으로 발전했다.[5]

역사

Accent와 선행 연구

Mach 프로젝트 출범

Mach 1과 2

Mach 3.0

후속 프로젝트

개발 목표

멀티프로세서 지원

메시지 전달

유닉스 호환성

커널의 기능 분리

아키텍처

태스크와 스레드

Mach 포트

IPC

가상 메모리

외부 페이저

스케줄러

장치 인터페이스

Mach 2.5와 3.0의 차이

운영체제 서버

BSD 단일 서버

Mach-US

GNU Hurd

기술 계승

GNU Mach

OSF/1

NeXTSTEP

XNU

MkLinux

지원 하드웨어와 이식성

개발 도구와 문서

영향

관련 문서

  1. 관련 자료 ↩
  2. GNU Mach Reference Manual ↩
  3. CMU Mach 프로젝트 ↩
  4. CMU Mach Project ↩
  5. GNU Mach 개념 ↩