커널과 인터페이스

커널과 인터페이스

img.png

  • Kernel
    • 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이다.
    • kernel의 성능에 따라 운영체제의 성능이 좌우된다. 자동차로 치면 엔진이라고 할 수 있다.
    • 스마트폰의 운영체제에도 커널이 있다.
      • 안드로이드는 커널이 공개되어 있다(리눅스 기반) 하지만 IOS는 커널이 공개되어 있지 않다.
  • 인터페이스
    • 자동차가 움직이는 데에는 핸들과 브레이크가 필요하다. 자동차를 올바르게 제어하기 위해서는 현재 시속, 기어의 상태, 엔진의 온도 등을 알려주는 계기판이 있어야 하는데 이를 인터페이스라고 한다.
    • 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려준다.
    • 유닉스의 사용자 인터페이스는 shell, bashshell 등 여러 종류의 셸이 있다. 셸은 명령어 기반이라 일반인이 사용하기 불편하여 유닉스 운영체제를 어렵게 느끼는 사람들이 많다.(개발자에겐 참 편하다.) GUI 속 눈으로 파일 찾는게 더 힘들다.

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

시스템 호출

  • system call은 커널이 자신을 보고하기 위해 만든 인터페이스다. 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.
  • 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용하여 접근해야 한다.
  • 직접 접근하는 예시와, 시스템 콜을 통한 접근의 차이를 커피를 먹는 경우에 비유해보자
    • 직접 접근
      • 사용자가 직접 컴퓨터 자원에 접근하여 작업하는 방식이다. 사용자는 커피머신이 어떻게 작동하는지, 커피와 설탕이 어딨는지, 모든 것을 다 알아야 한다. 이 경우는 자신이 원하는 커피를 만들 수는 있겠지만, 사용자의 부주의로 커피머신을 망가뜨릴 수도, 커피와 설탕을 찾느라 주변을 더럽힐 수도 있다.
    • 시스템 호출을 통한 접근
      • 누군가에게 요청하여 작업의 결과만 받는 방식이다. 사용자는 어떤 커피머신을 쓰는지, 어떻게 커피를 만드는지 등을 신경 쓸 필요 없이 결과값만 받으면 된다(추상화)
        • 우리가 메서드를 호출하고 사용하는 방식이 우리는 모든 메서드의 내부구현을 알 필요 없이 결과만 리턴 받으면 되는 구조와 비슷하다. 뭐.. 메서드의 모든 내부 구조와 구현을 안다면 좋겠지만, 수많은 메서드들의 내부구현을 기억하기는 힘들다.
      • 이와 마찬가지로 운영체제는 사용자나 응용 프로그램이 하드웨어 직접 접근하지 않는다. 그리고 대신 하드웨어와 같은 시스템 자원을 사용할 수 있도록 인터페이스를 제공해주는데 이것이 바로 시스템 콜이다.
      • 운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고, 다른 방법으로 커널에 들어오지 못하게 막음으로써 컴퓨터 자원을 보호한다.

    API와 SDK

    • API(Application Programming Interface(응용 프로그램 인터페이스)와 SDK(System Development Kit)(개발자용 키트)가 있다. API는 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스다. 포토샵을 예로들면 매우 강력한 그래픽 프로그램이지만, 수백 가지의 필터를 모두 제공하지는 않는다. 따라서 포토샵은 필터를 개발하려는 사람들을 위해 다양한 프로그래밍 인터페이스를 제공하는데 이 인터페이스가 바로 API이다.
    • 운영체제의 API를 시스템 콜이라고 한다.
    • SDK는 프로그램 개발자를 위해 API or API 사용 메뉴얼 뿐만 아니라 프로그램 개발에 필요한 코드 편집기, 에뮬레이터 같은 각종 개발용 응용 프로그램까지 묶어서 배포하는 개발 툴을 말한다.
      • 대표적인 예로 안드로이드 SDK Android Studio가 있다.

    드라이버

    • 응용 프로그램, 커널의 인터페이스가 시스템콜이면, 하드웨어의 인터페이스는 드라이버

    커널의 구성

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

Reference

https://m.yes24.com/Goods/Detail/111378840



© 2022. by taewoo

Powered by taewoo