[CS] OS 커널에 대해서

최민길(Gale)·2023년 7월 6일
1

CS 탐구

목록 보기
1/13

안녕하세요 오늘은 운영 체제의 커널에 대해서 알아보는 시간을 갖도록 하겠습니다. 먼저 커널은 "컴퓨터 시스템의 하드웨어와 소프트웨어 간의 인터페이스 역할"을 담당하는 운영체제의 핵심 부분입니다. 운영 체제의 가장 하위 단계에 위치하며 컴퓨터 부팅 시 메모리에 로드되어 시스템의 전원이 켜져 있는 동안 계속 실행됩니다.

커널은 시스템 콜을 통해 하드웨어와 소프트웨어 간의 인터페이스 역할을 수행합니다. 시스템 콜은 커널에게 서비스를 요청하기 위해 사용되는 저수준의 인터페이스로, 응용 프로그램이 커널에게 특정 기능을 수행해달라고 요청할 때 사용됩니다. 응용 프로그램이 시스템 콜을 호출하여 커널에 요청이 전달되면, 커널은 해당 요청을 처리한 후 결과를 다시 응용 프로그램에 반환합니다.

그럼 커널은 시스템 콜을 이용해 어떤 기능들을 수행할까요? 운영체제의 핵심적인 기능들인 메모리 관리, 프로세스 스케줄링, 파일 입출력, VFS, IPC 등을 수행합니다. 여기서 VFS란 가상 파일 시스템의 약자로, 운영 체제에서 파일과 관련된 작업을 추상화하여 응용 프로그램이 파일 시스템에 대한 세부 사항을 알 필요가 없이 파일과 디렉토리를 다룰 수 있도록 합니다. IPC의 경우 프로세스 간 통신의 약자로 독립적으로 실행되는 여러 프로세스 사이에서 데이터를 주고받거나 서비스를 제공하기 위해 사용되는 메커니즘입니다. 여러 프로세스가 동시에 실행될 때 각각 독립적인 메모리 공간을 가져 직접적으로 데이터를 공유하지 않는데 이들 사이의 데이터 전송을 도와주는 중간 매체 역할을 담당합니다.

커널은 크게 다음의 3가지 종류로 나뉘어집니다.

  1. 모놀리식 커널
  2. 마이크로 커널
  3. 모듈형 커널

모놀리식 커널이란 응용 프로그램을 제외한 모든 시스템 관련 기능들을 커널에서 한번에 관리하는 커널을 말합니다. 커널 내에 VFS, IPC 등의 기능들이 단계적으로 나뉘어 있으며 단일 스레드로 동작하여 커널 내의 모든 기능이 하나의 단일한 단위로 구현됩니다. 응용 프로그램은 시스템 콜을 통해 커널 내의 기능에 접근하며 커널이 모든 시스템 서비스들을 관리하기 때문에 커널이 제공하는 기능만 사용해서 쉽게 개발이 가능합니다.

모놀리식 커널은 모든 기능이 하나로 합쳐져 있어 커널 내부의 서비스 간 통신이 간단하고 실행 속도가 빠르며 커널과 응용 프로그램 간의 인터페이스를 최소화할 수 있어 오버헤드가 적게 발생한다는 장점이 있습니다. 하지만 커널에 오류가 발생할 경우 시스템 전체가 영향을 받을 수 있으며 커널이 단일 스레드로 동작하기 때문에 한 번에 하나의 작업만을 처리할 수 있다는 한계점이 존재합니다.

마이크로 커널이란 프로세스 관리 및 스케줄링, 메모리 관리 등 핵심적인 기능만 커널에 넣고 VFS, IPC 등의 나머지 기능들은 사용자 모드 서버로 구현합니다. 마이크로 커널은 커널 내부에서 실행되는 서비스를 최소화하고 사용자 공간에서 실행되는 서비스를 최대화하여 하나의 서비스가 죽더라도 커널 전체가 마비되지 않습니다.

마이크로 커널은 기능을 추가하는 방식이기 때문에 유연성과 확장성이 높으며, 하나의 서비스가 다운되어도 커널 전체에 영향을 끼치지 않기 때문에 안정성이 높다는 장점이 있습니다. 하지만 많은 기능들 간의 통신이 복잡해지기 때문에 통신 간의 오버헤드가 발생할 수 있어 성능이 떨어질 수 있다는 단점이 존재합니다.

모듈형 커널은 모놀리식 커널과 마이크로 커널의 중간 형태로 초기 구동 시에는 모놀리식 커널로 실행되지만 추가 기능 및 드라이버들은 독립적인 모듈 형태로 동적으로 로드됩니다. 각 모듈들은 필요에 따라 추가되거나 제거가 가능하며 동적으로 로드되기 때문에 사용자의 요구에 맞게 조정할 수 있습니다.

profile
저는 상황에 맞는 최적의 솔루션을 깊고 정확한 개념의 이해를 통한 다양한 방식으로 해결해오면서 지난 3년 동안 신규 서비스를 20만 회원 서비스로 성장시킨 Software Developer 최민길입니다.

0개의 댓글