안녕하세요? 오늘은 퓨시아 운영체제(Fuchsia OS)의 핵심 지르콘 커널에 대해서 간단하게 설명하고자 합니다.

 

 

지르콘(Zircon)은 퓨시아 운영체제의 핵심 플랫폼으로 시스템을 부팅하고 하드웨어와 통신하며 로드하는데 필요한 사용자 공간 서비스, 드라이버와 라이브러리, 사용자 공간을 처리하고 실행하도록 구성된 마이크로커널이다. Fuchsia는 지르콘 운영체제를 기반하여 큰 규모의 운영체제로 개발합니다.

 

Canonical Zircon Git repositoryhttps://fuchsia.googlesource.com/zircon

Read-only mirror of the codehttps://github.com/fuchsia-mirror/zircon

 

지르콘 커널은 프로세스, 스레드, 가상 메모리, 프로세스간 통신, 객체 상태 변경 대기 , futexes를 통한 잠금을 관리하는 syscall을 제공한다. 현재 임시로 사용중인 시스템콜은 장기적으로 개발된 시스템콜 API/ABI가 표면적으로 완성됨에 따라 교체되고 있다. 약 100개의 시스템콜이 개발되어 있을 것으로 예상된다. 지르콘 시스템콜은 일반적으로 non-blocking 방식을 가진다. wait_one, wait_many port_wait, thread sleep은 주목할만한 예외처리이다.



 지르콘 커널이 채택한 마이크로커널 구조에 대해서 알아보자!


보통 운영체제 아키텍처는 다양하지만 크게 모놀리식 커널 방식을 가진 운영체제, 마이크로 커널 방식을 가진 운영체제 두 가지로 나뉘게 된다. 현대 운영체제는 많은 서비스를 제공하고 다양한 하드웨어, 소프트웨어 자원을 지원하기 때문에 매우 복잡하다. 운영체제 설계 연구자들은 운영체제 구성 요소를 구성하고 각 구성 요소가 실행될 권한을 지정할 수 있게 함으로써 이러한 복작성을 해결한다. 모놀리식 설계에서 운영체제의 모든 구성 요소를 커널에 포함하지만 지르콘 커널이 채택한 마이크로커널 설계에서는 필수 구성 요소만 커널에 포함시켜 안정성을 최대화 하였다.


 모놀리식 운영체제

가장 초기에 개발된 보편적인 운영체제 설계며 모든 구성 요소를 커널에 포함시킨 아키텍처이다. 단순히 기능 호출만으로도 다른 구성요소와 직접 통신이 가능하며 이런 유형의 커널은 컴퓨터 시스템에 제한없이 접근해 실행할 수 있다.


그림 1. 모놀리식 운영체제 커널의 아키텍처 & 마이크로커널 운영체제 아키텍처


그림에서 보듯이 모놀리식 커널은 구성 요소들을 함께 그룹화하기 때문에 모놀리식 운영체제의 구성 요소 간 직접적인 상호 통신은 효율을 높여준다. 그러나 버그의 원인이나 기타 오류를 구분하기 어려워 안정성에 문제가 있다. 더욱이 모든 코드가 제한없이 시스템에 접근하므로 모놀리식 커널 시스템은 특히 오류나 악성 코드나 해킹로부터 해를 입기 쉽다.


 마이크로커널 운영체제

그림1의 오른쪽을 보면 알수 있듯이 마이크로커널 운영체제 아키텍처는 커널의 규모를 최소화하고 규모 확장성을 높이고 필수 서비스만 제공한다. 여기에 포함되는 서비스는 전형적으로 수준이 낮은 메모리 관리, 프로세스 간 통신, 프로세스 간 협력을 위한 기본적인 동기화 기능뿐이 없다. 이 설계에서는 프로세스 관리, 네트워크, 파일 시스템 상호 작용과 장치 관리 등 대부분의 운영체제 구성 요소를 커널이 아닌 유저 권한을 통해 커널 외부에서 작동한다. 마이크로 커널은 모듈화 정도가 높아서 확장성, 이식성, 규모 확상성이 높다. 더 나아가 실행을 위해 각 구성 요소에 의존하지 않기 때문에, 한두개 구성요소에 오류가 발생하여보 운영체제 전체가 마비되지 않는다. 그러나 이러한 모듈화는 모듈 간 통신 정도가 높아지므로 성능 저하가 나타나는 트레이드 오프가 있다. 


  그 외 운영체제

그 외로 계층적 운영체제, 네트워크 운영체제, 분산 운영체제, 하이퍼바이저 운영체제 등 많은 아키텍처들이 존재한다. 계층적 운영체제는 운영체제가 점점 커지고 복작해짐에 따라 순수한 모놀리식 설계는 점점 다루기 어려워지게 되면서 이 문제를 해결하기 위해 운영체제에 대한 계층적 접근법이 시도 되었다. 계층적 접근법은 유사한 기능을 수행하는 요소들을 구룹으로 묶어 계층으로 구분하며 각 계층은 오직 바로 위아래에 잇는 계층과 상호 작용 할수 있다. 하위 계층은 구체적인 구현을 숨긴채 인터페이스를 통해 상위 계층에 서비스를 제공한다. 계층적 운영체제는 모놀리식 운영체제보다 모듈화가 잘 되어 있다. 다른 계층에 전혀 영향을 주지 않고 각 계층의 구현을 수정할 수 있기 때문이며 모듈화된 시스템은 시스템 전반에 걸처 재사용할 수 있는 자기 충적적인 구성 요소들이 포함된다.


그럼 2. 운영체제의 계층적 구조


각 구성 요소는 작업을 수행하는 내부적인 방법을 감추고, 표준 인터페이스를 보여줌으로써 다른 구성 요소들이 서비스를 요청할 수 있게 한다. 모듈화는 운영체제에 구조와 일관성을 부여하며 소프트웨어 검증과 디버깅 및 수정 과정을 간편하게 해준다. 그러나 계층적 접근법은 사용자 프로세스의 요청을 수행하는데 많은 계층을 거쳐야 하며 한 계층에서 다음 계층으로 데이터를 전달할 때마다 추가적인 함수 호출이 발생하므로 모놀리식 커널에 비해 성능이 많이 떨어진다.



 

지르콘 커널에 대해 더 알고 싶으시다면 아래 목차에서 클릭!

지르콘 커널이란?

Zircon

지르콘 커널 개발 환경 구축하기

Getting Started

지르콘 커널 개발에 기여하는 방법

Contributing Patches

지르콘 커널의 개념 알기

Concepts Overview

지르콘 커널 구성요소(Kernel Objects)는?

Kernel Objects

지르콘 커널에서 사용되는 프로세스(Process)란?

Process Objects

지르콘 커널에서 사용되는 쓰레드(Thread)란?

Thread Objects

지르콘 커널에서 사용되는 핸들(Handles)이란?

Handles

지르콘 커널의 시스템콜하는 방식은?

System Calls

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 모델

Driver Development Kit

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 프로토콜

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 지르콘 드라이버 개발

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 플랫폼 버스

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 펌웨어

지르콘 커널을 시험하는 방법은?

Testing

지르콘 커널의 취약점은 무엇일까?

Hacking notes

지르콘 커널의 메모리와 자원 사용은 어떻게 할까?

Memory usage analysis tools

지르콘 커널과 LK(Little Kernel)의 관계는?

Relationship with LK

지르콘 커널을 위한 마이크로 벤츠마크는?

Micro-benchmarks

+ Recent posts