[OS]운영체제의 구성

YongHo·2024년 4월 4일

1. 커널과 인터페이스

운영체제는 커널과 인터페이스로 구성되어 있다.
커널(kernal)은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심 기능을 구현한 프로그램이다. 자동차에 비유하자면 엔진과 같다. 자동차의 성능은 엔진이 좌우하듯이 운영체제의 성능은 커널이 좌우한다.
인터페이스(Interface)는 사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려준다.

2. 시스템 호출과 디바이스 드라이버

2-1. 시스템 호출

시스템 호출은 커널이 자신을 보호하기 위해 만든 인터페이스이다. 커널은 컴퓨터 자원을 보호하기 위해 사용자나 응용 프로그램이 자원에 직접 접근하는 것을 차단한다. 따라서 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용하여 접근해야 한다.

응용 프로그램 입장에서 봐보자, 어떤 프로그램은 14를, 어떤 프로그램은 21을 저장하려고 한다고 가정해보자.

  • 직접 접근 : 두 프로그램이 직접 데이터를 저장한다. 이 경우에는 서로 저장하는 부분이 겹쳐 데이터가 지워질 수도 있다.
  • 시스템 호출을 통한 접근 : 커널이 제공하는 write() 함수를 사용하여 데이터를 저장해 달라고 요청한다. 응용 프로그램은 데이터가 하드디스크의 어느 위치에 어떻게 저장되었는지는 알 수 없다. 만약 자신이 저장한 데이터를 읽고 싶다면 read() 함수로 시스템 호출을 이용하면 된다. 이렇듯 커널을 통해 접근하면 커널이 자원을 관리해주기 때문에 수월하다.


시스템 호출은 커널이 제공하는 시스템 관련 서비스를 모아놓은 것이며 함수 형태로 제공된다.

2-1-1. 시스템 호출 간략 정리

  • 커널이 제공하는 시스템 자원을 사용하기 위한 함수다.
  • 응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려면 시스템 호출을 사용해야 한다.
  • 운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고 다른 방법으로는 커널에 들어오지 못하게 막아 컴퓨터 자원을 보호한다.
  • 커널이 제공하는 서비스를 이용하기 위한 인터페이스이며 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단이다.

2-2. 디바이스 드라이버

커널과 하드웨어 인터페이스를 디아비스 드라이버라고 부른다.

현대의 운영체제에서 커널은 주변장치와 데이터를 주고받는 표준 방식을 정하고 있지만, 성능 향상이나 편리성을 위하여 표준 외의 기능을 수행하는 경우에는 장치 제작자가 디바이스 드라이버를 따로 준비해야 한다.

3. 커널의 역할과 종류

커널의 가장 중요한 작업은 여러 응용 프로그램을 실행하는 것이다. 실행중인 프로그램은 프로세스라고 하는데, 다양한 종류의 프로세스에 CPU를 배분하고 작업할 수 있는 환경을 만들어 주는 것이 커널의 주요 역할이다.

핵심 기능설명
프로세스 관리프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다.
메모리 관리프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
파일 시스템 관리데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
입출력 관리필요한 입력과 출력 서비스를 제공한다.
프로세스 간 통신 관리공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.
표1. 커널이 하는 일

3-1. 단일형 구조 커널

초창기 운영체제의 구조로, 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성되어 있다. 프로그램에 비유하자면 main() 함수 안에 다 때려 넣은 것이다.

장점 :

  • 모듈이 분리되지 앟아 통신 비용이 줄어듬
  • 효율적인 운영 가능

단점 :

  • 버그나 오류를 처리하기 어려움
  • 여러 기능이 서로 연결되어 있어 작은 결함이 큰 결함으로 이어질 수 있음
  • 수정이 어려워 이식성이 낮음
  • 현대의 운영체제는 매우 크고 복잡하여 구현하기 어려움

3-2. 계층형 구조 커널

단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식이다.

장점 :

  • 모듈화로 인한 유지보수가 용이하고, 기능을 추가하거나 수정하기 쉽다.
  • 계층 간 인터페이스를 통해 시스템을 분리하여 시스템의 안정성과 신뢰성이 향상된다.
  • 새로운 기능을 추가할 때 전체 시스템을 재작성할 필요 없이 해당 계층만 수정하면 된다.

단점 :

  • 계층 간 통신이 추가되므로 약간의 오버헤드가 발생할 수 있다.
  • 계층 간의 의존성이 높아져, 한 계층에서 발생한 문제가 다른 계층으로 전파될 수 있다.

3-3. 마이크로 구조 커널

프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다. 다른 커널에 비해 운영체제의 많은 부분이 사용자 영역에 구현되어 있다.

장점 :

  • 최소한의 기능만을 제공하기 때문에 성능이 향상되고 운영체제의 크기가 줄어든다.
  • 모듈화로 인해 시스템을 유연하게 구성할 수 있다.
  • 사용자 영역에 많은 부분이 구현되어 있기 때문에 시스템의 안정성이 향상된다.

단점 :

  • 시스템 호출이 빈번하게 발생하므로 성능 저하가 발생할 수 있다.
  • 특정 기능이 필요한 경우 추가 모듈을 구현하기가 어려울 수 있다.
  • 보안 측면에서 사용자 영역에 구현된 기능이 취약점을 만들 수 있다.

3-4. 가상머신

가상머신은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 응용 프로그램이 모두 동일환 환경에서 작동하는 것처럼 보인다. 대표적인 언어로 Java, 가상 머신으로는 JVM(Java Virtual Machine)이 있다.

장점 :

  • 플랫폼 독립성을 제공하여 한 번 작성된 프로그램이 여러 플랫폼에서 실행될 수 있다.
  • 하드웨어와의 직접적인 상호작용을 통해 시스템 리소스에 대한 제어가 용이하다.
  • 각 응용 프로그램이 독립된 환경에서 실행되기 때문에 안전성이 높다.

단점 :

  • 가상화 오버헤드로 인해 성능 저하가 발생할 수 있다.
  • 호스트 운영체제와의 상호작용이 필요하므로 일부 기능에서 성능이 저하될 수 있다.
  • 가상머신 환경 설정 및 관리에 대한 추가적인 노력이 필요하다.

0개의 댓글