728x90

1 커널과 인터페이스

커널은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이다.

운영체제의 성능은 바로 이 커널이 좌우한다.

 

인터페이스는 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다.

 

운영체제는 크게 두 부분으로 나뉘는데, 인터페이스와 커널이다.

컴퓨터 시스템 구조

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

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

시스템 호출에 대한 내용을 정리하면 다음과 같다.

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

드라이버

응용 프로그램과 커널의 인터페이스가 시스템 호출이라면, 커널과 하드웨어의 인터페이스는 드라이버가 담당한다.

하드웨어는 종류가 매우 많으므로 커널이 모든 하드웨어에 맞는 인터페이스를 개발하기는 어렵다. 따라서 하드웨어 제작자가 만드는 것이 더 유리하다. 

커널은 입출력의 기본적인 부분만 제작하고, 하드웨어 제작자에게 소프트웨어를 받아 함께 실행되도록 한다. 이 소프트웨어를 디바이스 드라이버라고 한다. 

마우스, 키보드처럼 간단한 디바잉스는 커널에 포함되어 있어 꽂기만 하면 작동되지만, 그래픽 카드, 프린터처럼 크고 복잡한 디바이스 드라이버는 사용자가 직접 설치해야 한다.

 

시스템 구조 그림에서 드라이버가 커널 하단부 전체를 덮지 않는 이유는 커널이 제공하는 드라이버도 있고, 하드웨어 제작자가 제공하는 드라이버도 있다는 뜻이다.

 

3 커널의 구성

커널은 어떻게 기능을 구현하는가에 따라서 단일형, 계층형, 마이크로 구조 커널로 구분된다.

 

단일형 구조 커널 (monolithic architecture)

단일형 구조 커널은 초창기의 운영체제 구조로, 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있다. 예를 들면, 함수가 거의 없이 main()에 모든 기능을 구현한 것과 같다.

 

계층형 구조 커널 (layered architecture)

계층형 구조 커널은 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고, 계층 간의 통신을 통해 운영체제를 구현하는 방식이다. 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있고, 디버깅도 쉽다.

 

마이크로 구조 커널(micro architecture)

마이크로 구조 커널은 가장 기본적인 기능만 제공한다. 다른 커널에 비해 운영체제의 많은 부분이 사용자 영역에 구현되어 있다. 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어진다. 

 

4 가상머신

C언어는 윈도우처럼 유닉스와 다른 커널을 가진 운영체제와의 호환성이 떨어진다. 이런 문제를 해결한 언어가 자바이다.

운영체제 위에 가상머신을 만들고 그 위에서 응용 프로그램이 작동하게 하는 것이다.

따라서 개발자는 하나의 코드만 만들면 여러 운영체제에서 똑같이 실행할 수 있다. 

 

가상머신은 다른 곳에서도 사용되는데, 예를 들어 윈도우 환경에서 유닉스를 사용하고자 할 떄, 가상 머신을 설치하여 사용하면 된다. 호환성이 높아지지만 느려진다는 단점도 있다.

728x90

+ Recent posts