엑소커넬

Exokernel
Exokernel의 그래픽 개요.엑소커넬은 일반 커널(일원형 커널)보다 훨씬 작다.하드웨어에 대한 직접적인 액세스를 더 많이 제공하여 대부분의 추상화를 제거함

엑소커넬(Exokernel)은 MIT 병렬 및 분산 운영 체제 그룹에서 개발한 운영 체제 커널이며,[1] 유사한 운영 체제의 종류도 있다.

운영 체제는 일반적으로 (가상) 파일 시스템과 같은 높은 수준의 추상화를 통해 하드웨어 리소스를 애플리케이션에 제공한다.엑소커넬의 이면에 있는 아이디어는 애플리케이션 개발자들에게 가능한 적은 수의 추상화를 강요하여 하드웨어 추상화에 대해 가능한 많은 결정을 내릴 수 있게 하는 것이다.[2]기능성이 자원의 보호와 멀티플렉싱에 한정되어 있기 때문에 엑소커넬은 작다. 이는 기존의 마이크로커널의 메시지 전달 및 단일 커널의 높은 수준의 추상화 구현에 비해 상당히 단순하다.

구현된 추상화를 라이브러리 운영 체제라고 하며, 특정 메모리 주소, 디스크 블록 등을 요청할 수 있다.커널은 요청된 자원이 사용 가능한지 확인할 뿐이며, 애플리케이션은 커널에 액세스할 수 있도록 허용된다.이 낮은 수준의 하드웨어 액세스는 프로그래머가 사용자 지정 추상화를 구현할 수 있도록 하며, 프로그램 성능을 향상시키기 위해 가장 일반적으로 불필요한 추상화를 생략한다.그것은 또한 프로그래머들이 그들이 원하는 추상화 수준, 높은 수준 또는 낮은 수준을 선택할 수 있게 해준다.

엑소커넬은 서로 다른 요구사항을 염두에 두고 설계된 다른 추상화 위에 애플리케이션 프로그램이 그것의 추상화를 레이어하도록 강요하지 않는다는 점에서 운영 체제에 엔드투엔드 원칙을 적용한 것으로 볼 수 있다.예를 들어 MIT Exockernel 프로젝트에서 Cheetah 웹 서버는 사전에 포맷된 인터넷 프로토콜 패킷을 디스크에 저장하며, 커널은 무단 읽기 및 쓰기를 방지하여 디스크에 대한 안전한 액세스를 제공하지만 디스크가 추출되는 방법은 응용 프로그램이나 응용 프로그램이 사용하는 라이브러리에 달려 있다.

동기

전통적으로 커널 설계자들은 프로그램이 어떤 추상화 모델을 통해 하드웨어와 상호작용하도록 요구함으로써 개별 하드웨어 자원을 애플리케이션 프로그램에서 보이지 않게 만들려고 노력해왔다.이러한 모델에는 디스크 스토리지를 위한 파일 시스템, 메모리를 위한 가상 주소 공간, 작업 관리를 위한 스케줄러, 네트워크 통신을 위한 소켓 등이 포함된다.하드웨어의 이러한 추상화는 일반적으로 프로그램 쓰기를 더 쉽게 하지만 성능을 제한하고 새로운 추상화에서 실험을 억제한다.보안 지향 애플리케이션은 디스크에 오래된 데이터를 남기지 않는 파일 시스템이 필요할 수 있고, 신뢰성 지향 애플리케이션은 장애 복구를 위해 이러한 데이터를 유지하는 파일 시스템이 필요할 수 있다.

한 가지 옵션은 커널을 완전히 제거하고 하드웨어에 직접 프로그래밍하는 것이지만, 그러면 전체 시스템이 작성 중인 애플리케이션에 전용될 것이다(반대로, 전체 애플리케이션 코드베이스는 해당 시스템에 전용될 것이다).엑소커넬 개념은 절충안이다: 커널이 기계의 기본 물리적 자원(: 디스크 블록, 메모리 페이지, 프로세서 시간)을 여러 애플리케이션 프로그램에 할당하고, 각 프로그램이 이러한 자원으로 무엇을 할지를 결정하도록 한다.그런 다음 프로그램은 필요한 추상화를 구현하는 지원 라이브러리에 연결할 수 있다(또는 자체 구현 가능).

MIT 엑소커넬스

MIT는 두 개의 커널을 사용하여 두 개의 엑소커넬 기반 운영 체제를 개발했다.저장에 대한 지원이 제한된 개념 증명서 이지스와 엑소커넬 개념을 보다 철저하게 적용한 XOK.

MIT 엑소커넬 시스템의 필수적인 아이디어는 운영체제가 애플리케이션 소프트웨어에서 제공하는 작은 프로그램의 임원 역할을 해야 한다는 것인데, 엑소커넬은 하드웨어를 안전하게 사용할 수 있어야 한다는 요건에 의해서만 제약을 받는다.

디자인

MIT 엑소커넬은 하드웨어 자원을 다음과 같이 관리한다.

프로세서
커널은 프로그램에서 시간 간격을 할당할 수 있는 타임라인으로 프로세서 자원을 나타낸다.프로그램은 지정된 다른 프로그램에 나머지 시간 조각을 제공할 수 있다.커널은 인터럽트, 하드웨어 예외, 시간 조각의 시작 또는 끝과 같은 프로세서 이벤트를 프로그램에 통보한다.프로그램이 이벤트를 처리하는 데 오랜 시간이 걸리는 경우, 커널은 이후의 시간 조각 할당에 대해 불이익을 줄 것이다. 극단적인 경우 커널은 프로그램을 중단할 수 있다.
기억력
커널은 물리적 메모리 페이지를 프로그램에 할당하고 변환 룩사이드 버퍼를 제어한다.프로그램은 페이지에 접근할 수 있는 기능을 보내 다른 프로그램과 페이지를 공유할 수 있다.커널은 프로그램이 기능이 있는 페이지에만 액세스하도록 보장한다.
디스크 저장소
커널은 응용 프로그램의 디스크 블록을 물리적 블록 주소로 식별하여 응용 프로그램이 데이터 배치를 최적화할 수 있도록 한다.프로그램이 디스크 사용을 초기화할 때 커널에 프로그램을 제어하는 블록을 결정하기 위해 커널이 사용할 수 있는 기능을 제공한다.커널은 이 콜백을 사용하여 새로운 블록을 할당할 때 프로그램이 이미 제어한 블록 외에 할당된 블록만 청구하는지 검증한다.
네트워킹
커널은 프로그램 가능한 패킷 필터를 구현하여 커널에 의한 쉬운 보안 검사를 위해 설계된 바이트 코드 언어로 프로그램을 실행한다.

적용들

Exockernel에 사용할 수 있는 라이브러리 운영 체제에는 사용자 지정 ExOS 시스템과 BSD용 에뮬레이터가 포함된다.이 외에도 엑소커넬 팀은 커널을 직접 사용하는 치타 웹 서버를 만들었다.

역사

MINIX 3의 건축

엑소커넬 개념은 적어도 1994년부터 존재해 왔지만,[3] 2010년 현재 엑소커넬은 여전히 연구 노력 중이고 어떠한 주요 상업 운영 체제에서도 사용되지 않고 있다.

개념 운영 엑소커넬 시스템은 케임브리지 대학교, 글래스고 대학교, Citrix Systems, 스웨덴 컴퓨터 과학 연구소가 쓴 네메시스다.MIT는 ExOS를 포함한 여러 엑소커넬 기반 시스템도 구축했다.

참고 항목

참조

  1. ^ "MIT Exokernel Operating System". pdos.csail.mit.edu. Retrieved 2018-01-25.
  2. ^ Engler, D. R.; Kaashoek, M. F.; O'Toole Jr., J.; Engler, D. R.; Kaashoek, M. F.; O'Toole Jr., J. (1995-12-03). "Exokernel: an operating system architecture for application-level resource management". ACM SIGOPS Operating Systems Review. 29 (5): 251, 251–266, 266. doi:10.1145/224056.224076. ISSN 0163-5980. S2CID 221932539.
  3. ^ Engler, Kaashoek & O’Toole 1995.

참고 문헌 목록

외부 링크