Operating System Service

image

  • OS - 하드웨어 자원을 편하게 사용할 수 있는 인터페이스를 제공한다 (시스템 콜)
    • 즉 시스템 프로그램을 사용할 수 있게 한다

System programs

  • 프로그램을 실행 및 개발을 편하게 할 수 있는 환경을 제공한다
  • 파일 탐색기
  • 프로그램 불러오기와 실행 (Linker and loader)
  • Background services (Application programs)

Linkers and loaders

  • Compile - .c 파일을 .o 인 오브젝트 파일로 만드는 것
  • Linking - 오브젝트 파일 여러 개, 라이브러리를 합쳐 실행 파일을 만드는 것
  • Loader - 파일 시스템에 존재하는 실행 파일을 메인 메모리에 올려주는 것

image

  • Dynamic Linking
    • 프로그램들이 같은 라이브러리를 많이 실행해야할 때 메모리에 해당 라이브러리를 올려놓고 사용한다. 반복해서 사용할 때 라이브러리 접근 속도가 매우 빠르다. (Shared Library, Dynamically Linked Library)
    • 처음 실행 시 메모리에 라이브러리를 올리기 위해 시간이 많이 소요된다.
  • Static Linking
    • 프로그램 내에서 모든 실행이 이루어지기 때문에 처음부터 빠르게 실행할 수 있다.
    • 같은 라이브러리가 반복되어 호출되기 때문에 메모리가 비효율적이고 각 프로그램이 라이브러리를 가지고 있어야하므로 프로그램의 크기가 커진다.

System call service

image

  • 시스템 콜은 흔히 볼 수 있는 function 의 형태로 되어있다.
  • 프로그램에서 시스템 콜을 사용하면 커널에게 인터럽트를 걸게된다.
  • 커널 모드로 변환된 후 해당 시스템 콜을 다루는 핸들러를 찾는다.
  • 이후 시스템 콜 작업 처리 후 커널 모드가 종료된다

    하드웨어 인터럽트는 각 시스템 콜 마다 고유의 번호가 존재한다. 따라서 그 번호에 해당하는 함수가 바로 실행될 수 있다. 소프트웨어 인터럽트도 마찬가지로 각 번호가 존재한다.

image

  • 시스템 콜을 파라미터로 호출했을 때, 그 파라미터의 주소를 전달할 수도 있고, 값의 크기가 작다면 레지스터에 직접 전달할 수도 있다.
  • 시스템 콜 번호로 인터럽트를 발생시키면 핸들러에서 레지스터 파라미터를 가져와 실행시킨다.

image

  • printf 라는 함수를 호출하면 운영체제는 write 라는 시스템 콜이 호출되어 화면에 출력시킨다.

Monolithic kernal, Micro kernel

Monolithic kernal

  • 운영체제의 모든 기능이 한데 뭉쳐져 있다. 모든 기능이 하나의 커널에 존재하기 때문에 개선시키거나 성능을 향상시키기 어렵다는 소프트엔지니어링 이슈가 있다. 당연히 유지보수도 어렵다. 그리고 크기가 커서 메모리가 많이 필요하기에 작은 임베디드 시스템 같은 곳에는 부적절하다! image image

Micro kernel

  • 커널 중에 필요한 기능만 떼어 작게 만든 것이다. 각 기능을 따로 개선시킬 수 있기에 소프트엔지니어링 이슈가 해결되었다. 각 기능을 독립적으로 개발할 수 있어 유지보수에도 좋다. 임베디드 시스템 같은 경우 필요한 기능만 골라 사용하면 메모리 용량도 작게 만들 수 있다. RTOS 는 모두 Micro kernel 이다!

업데이트:

댓글남기기