시스템 콜(System Call)


시스템콜

  • 프로세스(유저모드)가 운영체제(커널모드)의 기능을 요청하는 것

  • 기본적으로 프로세스들간의 호출도 제한되어 있어 프로세스간 통신을 활용하는 것처럼 프로세스가 커널 내부의 함수를 호출하려면 시스템콜을 활용


시스템콜 실행

  • 유저모드에서 실행되는 프로세스가 커널모드에 대한 접근이 필요할 때, 시스템콜이 커널에 요청해서 커널모드에서 처리하고 그 결과를 유저모드로 전달

  • 여러 종류의 시스템콜이 있고 각각 번호가 할당되어 시스템콜테이블로 유지

  • 프로세스가 하드웨어에 접근하여 필요한 기능을 사용하게 함


파라미터 전달 방법

  • 레지스터를 통한 주소 전달

    • 레지스터에 저장하여 전달

    • CPU 내 레지스터의 개수보다 파라미터가 많아지면 메모리에 저장하고 메모리 주소를 전달

  • 스택

    • 매개변수의 개수나 길이에 제한이 없음


동기식 호출과 비동기식 호출

  • 동기식

    • 입출력을 시작시키고 끝날 때까지 대기

    • 그동안 다른 프로세스가 CPU 사용

    • 대부분의 시스템콜이 동기식 호츌

  • 비동기식

    • 입출력을 시작시키고 바로 다음 라인 수행

    • 입출력 동안에도 CPU 사용

    • 입출력 종료를 알려주는 방법 필요


시스템콜 종류

  • 프로세스 제어

  • 파일 조작

  • 장치 조작

  • 정보 관리

  • 통신

  • 보호



fork

  • fork() 실행 시 동일한 프로세스를 하나 생성

  • 부모 프로세스와 자식 프로세스의 차이는 fork()의 리턴값(부모는 자식 프로세스의 pid값, 자식은 0)

  • fork() 이후 부모와 자식의 실행 순서는 보장되지 않음


wait

  • 프로세스의 종료를 기다림으로 실행 순서를 제어 가능하게 함


exec

  • 프로세스의 코드 내용을 지정된 파일의 내용으로 덮어씀

  • exec() 이후 기존의 코드 내용 대신 새로운 내용 실행

  • fork는 새로운 프로세스를 만들어도 반복 작업만 가능하지만 exec 사용함으로써 다양한 작업을 가능하게 함

Last updated