[운영체제] System Call이란?

김우경·2021년 1월 9일
7

System call이란?

  • OS의 특정 기능을 쓸 수 있게 하는 인터페이스를 요청하는 함수

System Call을 사용하는 이유

User mode에서 사용이 불가능한 Protected Instruction을 사용하기 위해 OS가 제공하는 system call을 이용하여 Kernel mode로 switch할때 사용한다.

Kernel Mode와 User mode

OS는 Kernel ModeUser Mode로 나뉘어서 구동된다.

Kerner Mode

  • I/O devices를 포함해서 모든 주소 영역이 접근 가능하다.

User Mode

  • 명령어의 일부와 HW feature의 일부만 사용이 가능하다.

    → I/O나 memory protection을 포함한 명령은 사용이 불가능하다.

Protected Instruction

프로세스의 실행, 종료나 I/O 작업 등의 사용자가 함부로 사용하면 문제가 될 만한 명령들

→ OS의 kernel mode와 user mode 중 kernel mode에서만 사용이 가능하다.

→ 이와 같은 기능을 사용하기 위해서 user mode에서 kernel mode로 trap하는 system call을 사용한다.

System Call의 종류

  • 프로세스 제어

    e.g. exec() : 다른 프로그램의 실행, fork() : 새 프로세스의 생성, wait() : 자식 프로세스가 끝날 때 까지 대기

  • 파일 조작

    e.g. open(), read(), write()

  • 장치 관리

    : 장치의 부착, 분리 등

  • 정보 유지

    : 시간, 날짜의 설정 등

  • 통신

    : 공유 메모리에서 다른 프로세스 소유 메모리 접근 시

System Call의 수행 과정

  1. 프로세스가 System Call 호출
  2. Trap이 발생하여 Kernel Mode 진입 → 이때 현재 상태 저장
  3. 요청받은 System Call 수행
  4. User Mode로 return

출처

내 운영체제 강의록
Wikipedia - System Call

profile
Hongik CE

0개의 댓글