Operatng System

OS의 구조

mechaniccoder 2023. 6. 29. 23:34

Kernel

커널은 운영체제에서 핵심적인 기능을 모아놓은 것이다.

 

  • 프로세스 관리
  • 메모리 관리
  • 저장장치 관리

운영체제는 커널과 인터페이스를 분리한다. 시스템 콜과 드라이버는 인터페이스에 해당되고 그 뒤로는 커널의 핵심 기능이 있다.

System call

응용프로그램(app)이 시스템 자원에 접근하려면 커널의 시스템 콜을 호출해야한다. 커널은 요청을 받아 app이 원하는 작업을 처리한다. 이렇게 하는 이유는 app이 직접 자원에 접근할 경우 원치 않는 결과가 발생할 수 있기 때문에 자원을 보호하는 목적으로 시스템 콜이라는 인터페이스를 제공하는 것이다.

Driver

시스템 콜이 app과 커널사이의 인터페이스라면 드라이버는 하드웨어와 커널사이의 인터페이스이다. 다만 하드웨어는 커널과 직접 연결되기도 하고 디바이스 제작자가 제공하는 드라이버를 통해서 연결되기도 하는 점에서 시스템 콜과는 다르다.

Kernel의 종류

단일형 구조 (monolithic architecture)

  • 하나의 main 함수에 모든 기능이 들어있는 것을 생각하면 된다. 모듈이 구분되어 있지 않기 때문에 통신에 따른 오버헤드가 적다는 장점이 있지만 디버깅이 힘들고 버그의 영향이 프로그램 전체로 화산된다.

계층형 구조 (layered architecture)

  • 비슷한 기능을 모듈화하여 하나의 계층을 만들고 계층 간의 통신을 통해 기능을 구현한다. 버그의 영향 범위가 계층으로 줄기 때문에 디버깅이 쉽다는 장점이 있지만 기능이 추가될수록 계층이 많아짐에 따라 관리하기가 어렵다는 단점이 있다.

마이크로 구조 (micro architecture)

  • 기능이 추가됨에 따라 관리하기가 어려운점을 해결하기 위해 커널에는 기본적인 기능(프로세스간 통신, 메모리 관리, 프로세스 관리 등)만을 제공하고 나머지(파일시스템, 프로세스 관리자 등…)는 사용자 영역에서 구현하도록 하는 방식이다.

가상머신 (virtual machine)

유닉스 운영체제에서 C언어로 만든 앱은 윈도우 운영체제에서는 작동하지 않는다. 각 운영체제의 시스템 콜이 다르기 때문에 이를 위해 수정을 해줘야 한다.

자바의 가상머신(JVM)은 서로 다른 운영체제에서 동일한 인터페이스를 사용할 수 있다. 운영체제 위에 가상머신을 두면 응용프로그램은 가상머신과 통신을 한다. 운영체제와의 통신은 VM이 알아서 처리하기 때문에 신경쓰지 않아도 되며 유닉스 운영체제에서의 VM, 윈도우 운영체제에서의 VM을 설치하기만 하면 된다. 다만 응용프로그램과 운영체제 사이에 VM이 추가로 생기기 때문에 호환성은 좋지만 통신이 느려지는 단점이 있다.