운영체제(OS)/keyword

(Project2-User Programs) 시스템 콜(System Call)

스탠딩 2023. 12. 15. 14:44

시스템 콜은 사용자 프로그램이 운영체제의 서비스에 접근하는 창구 역할을 한다. 프로그램이 운영체제에게 특정 서비스를 요청할 때, 시스템 콜을 통해 이루어지며, 이를 통해 하드웨어 자원이나 특권 명령을 사용할 수 있다.

 

출처 : https://linuxhandbook.com/system-calls/

시스템 콜의 동작

  1. 사용자 모드에서 커널 모드로 전환: 프로그램이 시스템 콜을 호출하면 현재 실행 중인 프로세스가 사용자 모드에서 커널 모드로 전환된다. 이는 운영체제의 핵심 부분에 접근하기 위한 필수 단계이다.
  2. 커널 함수 호출: 커널 모드로 진입하면, 특정 시스템 콜을 수행하는 커널 내의 함수가 호출된다. 이 함수는 운영체제의 핵심 로직을 수행하며, 프로그램에 필요한 서비스를 제공한다.
  3. 인터럽트와 연결: 시스템 콜은 소프트웨어 인터럽트를 통해 호출된다. 사용자 프로그램이 운영체제에게 서비스를 요청하면, 해당 인터럽트가 발생하여 커널 코드가 실행된다.

간단한 시스템 콜 사용 예시

cCopy code
#include <stdio.h>#include <unistd.h>int main() {
    // "Hello, World!"를 표준 출력에 출력하는 시스템 콜
    write(1, "Hello, World!\\n", 13);

    // 프로세스를 종료하는 시스템 콜
    _exit(0);
}

위 코드에서 **write**와 **_exit**는 각각 파일 출력과 프로세스 종료를 위한 시스템 콜을 호출한다.

 

시스템 콜은 운영체제와 프로그램 간의 원활한 상호 작용을 가능케 하며, 운영체제의 중요한 역할을 수행한다.