코학다식

[OS] System Call 본문

Fundamentals/OS

[OS] System Call

copeng 2019. 9. 17. 19:42

Operating System

chapter 1-2 (3)

 

 

System Calls


 

  • 시스템 콜(System Call)이란 운영체제에 의해 제공되는 서비스의 프로그래밍 인터페이스(Programming Interface)이다.
  • 주로 함수의 모임인 라이브러리 형태로 제공되어 사용자가 호출해서 사용하도록 되어 있다.
  • 일반적으로 high-level 언어로 작성된다. (C or C++)
  • 대부분 직접적인 시스템 콜 사용보다는 high-level의 Application Program Interface(API)을 통한 프로그램에 의해서 접근된다.
  • 가장 자주 쓰이는 API에는 윈도우의 Win32(64) API, 리눅스 계열의 POSIX, Java Virtual Machine의 Java API가 있다.

 

 

 

System Call Implementation


 

  • 일반적으로 각 시스템 콜마다 번호가 주어진다.
    • 시스템 콜 인터페이스는 이 번호에 따라 인덱싱된 테이블을 가지고 있다.
  • 시스템 콜 인터페이스는 운영체제 커널에서 계획된 시스템 콜을 일으키고 시스템 콜의 상태와 반환값을 돌려준다.
  • 시스템 콜을 호출하는 사람은 어떻게 시스템 콜이 시행되는지 알 필요 없다.
    • API를 따르고 운영체제가 호출의 결과로 무엇을 할지만 이해하면 된다.
    • API에 의해 운영체제 인터페이스의 대부분의 디테일은 숨겨진다.
  • API - 시스템 콜 - 운영체제 관계도

 

 

System Call Parameter Passing


 

  • 사용하려는 시스템 콜이 무엇인지 말고도 더 많은 정보가 필요한 경우가 많다.
    • 운영체제와 어떤 콜인지에 따라 정보의 타입과 양(개수)은 달라진다.
  • 운영체제에 매개변수를 넘기는 방법에는 크게 세 가지가 있다.
    1. 가장 간단한 방법, 레지스터(register)에 매개변수 넘기기
      • 하지만 레지스터는 크기와 개수가 정해져 있다는 한계가 있다.
      • 속도는 가장 빠르다.
    2. 메모리의 블록(block), 또는 테이블에 매개변수가 저장되고 블록의 주소가 레지스터에 매개변수로 전달된다.
      • 마치 C언어에서 포인터를 매개변수로 전달하는 것과 같다.
      • 이 방법은 리눅스와 솔라리스에서 사용된다.
    3. 프로그램에 의해 스택(Stack)에 위치되거나 push된 매개변수가 운영체제에 의해 스택에서 pop된다.
  • 시스템 콜의 번호와 반환값은 레지스터를 사용하는 경우가 많다.

 

 

Types of System Calls


 

  • 프로세스 제어 (e.g. end/abort, load/execute, create/terminate process, get/set process attributes...)

  • 파일 관리 (e.g. create/delete file, open/close, read/write/reposition...)

  • 디바이스 관리 (e.g. request/release device, read/write/reposition...)

  • 정보 유지 (e.g. get/set time/date/process/file/device/atrributes)

  • 커뮤니케이션 (e.g. create/delete communication connection, send/receive messages...)

 

 

Widely-used Kernel Data Structures


 

  • 리스트 (singly, doubly, circularly), 스택, 큐
  • 트리
  • 해시 함수
  • 비트맵
Comments