엑소커널
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
엑소커널은 운영 체제 아키텍처의 한 유형으로, 응용 프로그램이 하드웨어에 직접 접근하여 성능을 향상시키도록 설계되었다. 엑소커널은 1990년대 중반 MIT에서 연구가 시작되었으며, 최소한의 기능만 제공하여 하드웨어 자원을 효율적으로 관리한다. 엑소커널은 프로세서, 메모리, 디스크 스토리지, 네트워킹 자원을 관리하며, 각 프로그램이 자원을 어떻게 사용할지 결정하도록 한다. MIT는 Aegis와 XOK와 같은 엑소커널 기반 시스템을 개발했으며, 라이브러리 운영 체제와 웹 서버와 같은 응용 프로그램에 사용될 수 있다. 엑소커널은 성능 향상에 기여할 수 있지만, 구현 및 관리의 어려움과 같은 한계점도 존재한다.
더 읽어볼만한 페이지
- 운영 체제 커널 - 커널 (컴퓨팅)
커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다. - 운영 체제 커널 - 로더 (컴퓨팅)
로더는 운영 체제에서 프로그램을 메모리에 적재하고 실행하는 소프트웨어 구성 요소이며, 유닉스와 윈도우 등에서 실행 파일의 유효성 검사, 메모리 매핑, DLL 초기화 등의 작업을 수행한다. - 마이크로커널 - QNX
QNX는 고든 벨과 댄 도지가 개발한 마이크로커널 기반의 실시간 운영 체제로, 산업용 기계 제어 분야에서 신뢰성을 인정받아 현재는 블랙베리가 소유하며 자동차 인포테인먼트 시스템, 자율 주행 시스템 등 다양한 임베디드 시스템에 활용되고, POSIX 표준 준수로 유닉스 계열 소프트웨어와 호환된다. - 마이크로커널 - Mach (커널)
Mach 커널은 1980년대 DARPA에서 개발한 멀티프로세서 운영 체제로, 멀티프로세서 지원, 거대한 메모리 공간 활용, 분산 시스템 지원을 목표로 개발되었으며, 마이크로커널 구조를 채택하여 다양한 운영체제의 기반 기술로 활용되었다.
엑소커널 |
---|
2. 역사
엑소커널 개념은 최소 1994년부터 존재해 왔지만,[1] 2024년 현재까지도 연구 단계에 있으며, 어떤 주요 상업용 운영 체제에서도 사용되지 않았다.
2. 1. 초기 연구
1990년대 중반, MIT는 ExOS를 포함한 여러 엑소커널 기반 시스템을 구축했다.[1] 엑소커널 개념은 최소 1994년부터 존재해 왔지만, 2024년 현재 엑소커널은 여전히 연구 단계에 있으며, 어떤 주요 상업용 운영 체제에서도 사용되지 않았다.[1]2. 2. 주요 연구 사례
MIT는 Aegis와 XOK라는 두 가지 엑소커널 기반 운영 체제를 개발했다. Aegis는 저장소 지원이 제한적인 개념 증명이고, XOK는 엑소커널 개념을 더욱 철저하게 적용한 것이다. MIT 엑소커널 시스템의 핵심 아이디어는 운영 체제가 응용 소프트웨어에서 제공하는 소규모 프로그램의 실행 기관 역할을 해야 한다는 것이다. 이 프로그램들은 엑소커널이 하드웨어를 안전하게 사용할 수 있도록 보장해야 한다는 요구 사항에 의해서만 제한된다.[1]케임브리지 대학교, 글래스고 대학교, 시트릭스 시스템즈, 스웨덴 컴퓨터 과학 연구소는 네메시스라는 엑소커널 시스템을 개발했다. MIT 역시 ExOS를 포함한 여러 엑소커널 기반 시스템을 구축했다.[1]
3. 동기
전통적으로 커널 설계자들은 응용 프로그램이 일부 추상화 모델을 통해 하드웨어와 상호 작용하도록 요구함으로써 개별 하드웨어 리소스를 응용 프로그램에서 보이지 않게 하려고 노력해 왔다. 이러한 모델에는 디스크 스토리지를 위한 파일 시스템, 메모리를 위한 가상 주소 공간, 태스크 관리를 위한 스케줄러, 네트워크 통신을 위한 소켓이 포함된다. 이러한 하드웨어 추상화는 일반적으로 프로그램을 더 쉽게 작성할 수 있게 해주지만, 성능을 제한하고 새로운 추상화에 대한 실험을 억제한다. 보안 지향적인 응용 프로그램은 디스크에 이전 데이터를 남기지 않는 파일 시스템이 필요할 수 있으며, 신뢰성 지향적인 응용 프로그램은 장애 복구를 위해 그러한 데이터를 유지하는 파일 시스템이 필요할 수 있다.[1]
한 가지 옵션은 커널을 완전히 제거하고 하드웨어에 직접 프로그래밍하는 것이지만, 그러면 전체 머신이 작성 중인 응용 프로그램에 전념하게 된다(반대로, 전체 응용 프로그램 코드베이스는 해당 머신에 전념하게 된다). 엑소커널 개념은 절충안이다. 커널이 머신의 기본 물리적 리소스(예: 디스크 블록, 메모리 페이지 및 프로세서 시간)를 여러 응용 프로그램에 할당하고, 각 프로그램이 이러한 리소스로 무엇을 할지 결정하도록 한다. 그러면 프로그램은 필요한 추상화를 구현하는 지원 라이브러리에 연결할 수 있다(또는 자체적으로 구현할 수 있다).[1]
4. 설계 철학
엑소커널의 설계 철학은 운영 체제가 응용 프로그램에게 하드웨어 사용에 대한 최소한의 제약만을 가하고, 최대한의 자유를 보장하는 것을 목표로 한다.
전통적인 커널 설계는 파일 시스템, 가상 주소 공간, 스케줄러, 소켓 등 추상화된 하드웨어 모델을 통해 응용 프로그램이 하드웨어와 상호 작용하도록 한다.[1] 이러한 추상화는 프로그램 작성을 용이하게 하지만, 성능을 제한하고 새로운 추상화 실험을 어렵게 만든다.[1] 예를 들어, 보안을 중시하는 응용 프로그램은 이전 데이터를 디스크에 남기지 않는 파일 시스템을 필요로 할 수 있지만, 안정성을 중시하는 응용 프로그램은 장애 복구를 위해 데이터를 유지하는 파일 시스템을 필요로 할 수 있다.[1]
이러한 문제에 대한 한 가지 해결책은 커널을 제거하고 하드웨어에 직접 프로그래밍하는 것이지만, 이는 응용 프로그램이 특정 하드웨어에 종속되는 결과를 낳는다.[2] 엑소커널은 이러한 극단적인 접근 대신 절충안을 제시한다.[2] 커널은 디스크 블록, 메모리 페이지, 프로세서 시간 등 머신의 기본적인 물리적 자원을 여러 응용 프로그램에 할당하고, 각 프로그램이 이러한 자원을 어떻게 사용할지 결정하도록 한다.[2] 프로그램은 필요한 추상화를 구현하는 라이브러리를 사용하거나 자체적으로 구현할 수 있다.[2]
MIT는 Aegis와 XOK라는 두 개의 엑소커널 기반 운영 체제를 개발했다.[3] 엑소커널의 핵심 아이디어는 운영 체제가 응용 프로그램에서 제공하는 작은 프로그램들의 실행 기관 역할을 하는 것이다. 이 프로그램들은 엑소커널이 하드웨어를 안전하게 사용할 수 있도록 보장해야 한다는 제약만 받는다.
(MIT 엑소커널의 자원 관리에 대한 자세한 내용은 해당 하위 섹션을 참조한다.)
4. 1. MIT 엑소커널의 자원 관리
; 프로세서: 커널은 프로세서 자원을 프로그램이 시간 간격을 할당할 수 있는 타임라인으로 나타낸다. 프로그램은 남은 시간 조각을 다른 지정된 프로그램에 양도할 수 있다. 커널은 인터럽트, 하드웨어 예외 및 시간 조각의 시작 또는 종료와 같은 프로세서 이벤트를 프로그램에 알린다. 프로그램이 이벤트를 처리하는 데 오랜 시간이 걸리면 커널은 후속 시간 조각 할당에 대해 페널티를 부과한다. 극단적인 경우 커널은 프로그램을 중단할 수 있다.
; 메모리
: 커널은 물리 메모리 페이지를 프로그램에 할당하고 변환 색인 버퍼를 제어한다. 프로그램은 해당 페이지에 액세스할 수 있는 ''capability''를 다른 프로그램에 전송하여 페이지를 공유할 수 있다. 커널은 프로그램이 capability를 가진 페이지만 액세스하도록 보장한다.
; 디스크 스토리지
: 커널은 응용 프로그램에 물리적 블록 주소로 디스크 블록을 식별하여 응용 프로그램이 데이터 배치를 최적화할 수 있도록 한다. 프로그램이 디스크 사용을 초기화할 때 커널에 프로그램을 제어하는 블록을 결정하는 데 사용할 수 있는 함수를 제공한다. 커널은 이 콜백을 사용하여 새 블록을 할당할 때 프로그램이 이미 제어하던 블록 외에 할당된 블록만 요청하는지 확인한다.
; 네트워킹
: 커널은 커널에서 쉽게 보안 검사를 할 수 있도록 설계된 바이트코드 언어로 프로그램을 실행하는 프로그래밍 가능한 패킷 필터를 구현한다.
5. 응용 사례
엑소커널은 맞춤형 ExOS 시스템과 BSD 에뮬레이터 등의 라이브러리 운영 체제를 사용할 수 있도록 설계되었다.
5. 1. 라이브러리 운영 체제
엑소커널에서 사용 가능한 라이브러리 운영 체제에는 MIT에서 개발한 맞춤형 ExOS 시스템과 BSD 에뮬레이터가 있다. 이 외에도 엑소커널 팀은 커널을 직접 사용하는 웹 서버인 치타(Cheetah)를 개발했다.[1]5. 2. 엑소커널 기반 응용 프로그램
BSD 에뮬레이터 외에도 엑소커널 팀은 커널을 직접 사용하는 웹 서버인 치타(Cheetah)를 개발했다.6. 참고 문헌
- 엥글러, 도슨 R. (1998). 《엑소커널 운영체제 아키텍처》. MIT. PostScript. 2006-09-22 확인.
- 엥글러, 도슨 R.; 카아쇼크, M. 프란스 (1996). 《모든 운영체제 추상화 제거》. MIT. PostScript. 2006-09-22 확인.
- 엥글러, 도슨 R.; 카아쇼크, M. 프란스; 오툴, 제임스 주니어 (1995). 〈엑소커널〉. 《제15회 ACM 운영체제 원리 심포지엄 회보 - SOSP '95》 29 (5): 251–66. PDF. 2014-10-08 확인.
참조
[1]
웹사이트
MIT Exokernel Operating System
https://pdos.csail.m[...]
2018-01-25
[2]
논문
Exokernel: an operating system architecture for application-level resource management
1995-12-03
[3]
저널
Exokernel: an operating system architecture for application-level resource management
2010-03-09
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com