Back to the Basics

[Computer Science][제로베이스 ]-운영체제 - System call & kernel 본문

Computer Science

[Computer Science][제로베이스 ]-운영체제 - System call & kernel

9Jaeng 2021. 10. 24. 20:40
728x90
반응형

강의를 듣고 내용을 간단히 정리한 포스팅 입니다.

<강의 요약 System call>

 

OS는 사용자, Application Program에 Interface를 제공한다.

운영체제는 사용자에게 인터페이스를 제공한다. SHELL이라는 응용프로그램을 통해 사용자가 OS의 기능을 조작할 수 있도록 한다. SHELL이란, 사용자와 OS 간의 Interface이며 CLI에서 Terminal 또는 GUI 환경 두 종류가 있다.

운영체제는 Application을 위한 인터페이스도 제공하며 API라고 한다. API는 Application Programming Interface의 약자이며 함수로 제공된다. 보통 API들을 묶어 Library의 형태로 제공된다.

System call

System call은 운영체제의 기능을 사용할 수 있는 함수 또는 명령어이다. 운영체제가 제공한다. API 내부도 결국 이 System call을 통해서 OS의 기능을 요청한다. 응용 프로그램을 위한 Interface이며 OS의 각 기능을 사용할 수 있도록 한다.

In computing, a system call (commonly abbreviated to syscall) is the programmatic way in which a computer program requests a service from the kernel of the operating system on which it is executed. (Wiki)

OS의 기능 정리

  1. OS는 H/W와 응용프로그램을 관리한다.
  2. 사용자 Interface를 제공하기 위해 shell 프로그램을 제공한다.
  3. 응용프로그램이 운영체제 기능을 요청하기 위해서, 운영체제는 시스템 콜을 제공한다.
    - 시스템 콜을 직접 사용하기보다는, 해당 시스템 콜을 사용해서 만든 각 언어별 라이브러리(API)를 사용한다.

<강의 요약 Kernel Mode>

 

Kernel Mode는 CPU Protection Rings에서 0번째 Ring에 해당되며 CPU의 권한 모드 중 하나이다. "특권"명령어와 자원을 사용할 수 있게 하는 Mode이며 OS만이 접근 가능한 영역이다.

Application이 특수한 자원 또는 명령어를 사용하기 위해서는 API를 이용하여 System call을 통해 응용프로그램이 OS에 요청을 하고, OS에 의해 Kernel 모드에서 해당 명령어 및 자원을 Application에 전달을 해준다.

예를 들어, file을 open 하는 것은 메모리에 접근을 해야 하므로 커널 모드로 접근이 되어야 하는 영영이다. 코드에서 open()이라는 명령어를 실행하면 open()의 API ⇒System call 호출을 통해 kernel모드로 전환한다. 여기서부터는 OS가 실행하는 영역이다. open() 함수의 커널 함수를 호출하고 파일을 open 하여 사용자 모드로 전환 후 응용프로그램으로 전달한다.

 

Kernel 영영 : Wiki 설명

요악

  1. 운영체제는 시스템 콜을 제공한다
  2. 프로그래밍 언어별로 운영체제 기능을 활용하기 위해, 시스템 콜을 기반으로 API를 제공한다.
  3. 응용 프로그램은 운영체제 기능 필요시, 해당 API를 사용해서 프로그램을 작성한다.
  4. 응용프로그램이 실행되어서 운영체제 기능이 필요한 API를 호출하면 , 시스템 콜이 호출되어서 커널 모드로 변경되어 OS 내부에서 해당 명령이 실행되고, 다시 응용프로그램으로 돌아간다.
728x90
반응형
Comments