All about Programming Theories

리눅스 - 시스템 호출(System call)

※ 이 글은 chatGPT를 기반으로 작성한 글입니다.

① 시스템 호출(System call)은 운영 체제(operating system) 제공하는 프로그래밍 인터페이스이다.

  ㉠ 사용자 수준의 프로세스가 운영 체제의 핵심 구성 요소인 커널(kernal)로부터 서비스를 요청할 수 있도록 한다.

  ㉡시스템 호출은 다음 상황에서 필요하다.

    ⓐ 시스템 호출은 모든 프로그래밍 컴퓨터 시스템의 하드웨어 및 기타 리소스와 상호작용하는 데 필요하다..

    ⓑ 시스템 호출은 파일, 프로세스 및 메모리와 같은 리소스에 액세스에 사용된다.

    ⓒ 프로그램이 권한 있는 작업을 수행해야 할 때 시스템 호출을 발생한다.

    ⓓ 시스템 호출은 프로그램을 사용자 모드에서 커널 모드로 전환하여 필요한 리소스에 접근할 수 있게 해준다.

② 시스템 호출이 완료되면 작업 권한이 프로그램에 반환된다.

③ 일반적인 시스템 호출의 예는 다음과 같다.

  ㉠ open() : 파일을 열 수 있다.

  ㉡ read() : 파일의 데이터를 읽을 수 있다.

  ㉢ write() : 파일의 데이터를 쓸 수 있다.

  ㉣ close() :  파일을 닫을 수 있다.

  ㉤ fork() : 새로운 프로세스를 만들 수 있다.

  ㉥ exec() : 현재 프로세스를 새로운 프로세스로 바꿀 수 있다.

시스템 호출은 일반적으로 운영 체제에 의해 유닉스 계열 시스템의 C 라이브러리와 같은 라이브러리로 제공되며 표준 함수 호출을 통해 응용프로그램에 의해 액세스될 수 있다.