호우동의 개발일지

Today :

article thumbnail

시스템콜이란?

시스템 콜이 사용되는 방법 예
시스템 콜이 사용되는 방법 예

시스템 콜이 사용되는 방법의 예

  • 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스 제공
  • 간단한 프로그램이라도 운영체제의 기능을 아주 많이 사용
    • 초당 수천 개의 시스템 콜을 수행
    • 사용자 대부분은 이러한 상태를 알지 못함 → 응용 개발자들은 API에 따라 프로그램 설계

  • 모든 운영체제는 고유한 시스템 콜 이름을 가짐

 

 


응용 프로그래밍 인터페이스(API)

  • 응용 프로그래머가 사용 가능한 함수의 집합을 명시
    • 각 함수에 전달되어야 할 매개변수와 반환값 포함

  • 프로그래머는 운영체제가 제공하는 코드의 라이브러리를 통해 API를 활용
  • 막후에서 API를 구성하는 함수들은 통상 응용 프로그래머를 대신하여 실제 시스템 콜을 호출
    • 예 : Windows 함수 CreateProcess() → NTCreateProcess() 시스템 콜 호출

  • API 함수를 호출하는 것과 커널의 관련된 시스템 콜을 호출하는 것에는 강한 상관관계 존재
    • POSIX와 Windows API는 UNIX, Linux 및 Windows 운영체제 고유의 시스템 콜과 유사

 


응용 프로그래머가 사용하는 세 가지 API

  • Windows API : Windows 시스템을 위한 것
  • POSIX API : POSIX 기반 시스템을 위한 것
    • 대부분 버전의 UNIX, Linux 및 Mac OS X를 포함
    • UNIX와 Linux 시스템에서 C언어로 작성된 프로그램을 위해서 제공되는 라이브러리 → libc

  • Java API : Java 가상 기계에서 실행될 수 있는 프로그램을 위한 것

 


API 프로그래밍을 선호하는 이유

  • 같은 API를 지원한다면, 해당 프로그램은 어느 시스템에서든 컴파일되고 실행될 수 있음
    → 호환성 문제

    • 현실적으론 컴퓨터 구조 차이 때문에 그렇게 쉽진 않음

  • 시스템 콜보다 API로 작업하는 것이 더 쉬움
    • 실제 시스템 콜은 좀 더 자세한 명세가 필요하고, API보다 어려움

 


런타임(실행시간) 환경(RTE)

  • 특정 응용 프로그램을 실행하는데 필요한 소프트웨어 서비스를 제공하는 가상 머신의 상태
    • 특정 응용 프로그램 ← 컴파일러 또는 인터프리터를 포함해서 특정 프로그래밍 언어로 작성된 것
    • 가상 머신 ← 소프트웨어 제품군, 라이브러리 또는 로더와 같은 다른 소프트웨어를 뜻함

  • 운영체제가 제공하는 시스템 콜에 대한 연결고리 역할을 하는 시스템 콜 인터페이스를 제공

 


시스템 콜 인터페이스

  • API 함수의 호출을 가로채서 필요한 운영체제 시스템 콜을 호출
  • 각 시스템 콜에는 번호가 할당 → 시스템 콜 인터페이스는 이 번호에 따라 색인되는 테이블 유지
  • 시스템 콜 인터페이스는 의도하는 시스템 콜을 부르고 시스템 콜의 상태와 반환 값을 돌려줌

 


API, 시스템 콜, 운영체제의 관계

API, 시스템콜, 운영체제 관계

  • 호출자는 시스템 콜이 어떻게 구현되고 어떤 작업을 하는지 알 필요 없음
    → 호출자는 API를 준수하고 시스템 콜의 결과로써 운영체제가 무엇을 할지만 이해하면 됨
    운영체제 인터페이스의 자세한 내용은 API에 의해 숨겨지고 RTE에 의해 관리됨

 


운영체제에 매개변수 전달하는 방법

  1. 레지스터 내에서 전달하는 방법
    • 가장 간단한 방법, But 레지스터보다 더 많은 매개변수가 있을 수 있음

  2. 블록의 주소가 레지스터 내에 매개변수로 전달

테이블 형태로 매개변수를 전달
테이블 형태로 매개변수를 전달

  • 매개변수는 메모리 내의 블록이나 테이블에 저장됨

  3. 스택을 통해 매개변수 전달

  • 스택에 의해 넣어지고(Push), 운영체제 의해 꺼내진다(pop off)
  • 일부 운영체제는 블록, 스택 방법 선호 ← 전달되는 매개변수들의 개수나 길이가 제한되지 않기 때문