정의
응용프로그램에서 운영체제에게 기능(시스템 자원)을 수행해달라고 하는 하나의 수단
효과
이해
사용자프로세서가 소프트웨어 인터럽트를 통해 커널의 기능을 이용하기 위한 서비스를 요청하는 하나의 방법
처리방식 간단(ver.)
1. 사용자 프로세서가 시스템콜 요청
2. 제어가 커널로 넘어감 (사용자모드에서 커널모드로 전환) -> 이때 현재 상태 저장
커널의 내부에 시스템 콜을 구분하기 위해 기능별 고유번호가 할당되어 있고,
해당 번호로 커널내부에 제어루틴 정의
3. 커널은 요청받은 시스템 콜에 대응하는 기능번호 확인
4. 커널은 그 번호에 맞는 인터럽트 핸들러(인터럽트 서비스 루틴) 호출
5. 인터럽트를 모두 처리하고 나면 커널 모드에서 사용자 모드로 복귀
인터럽트 과정을 자세히 알아보자
상황 : process A 실행 중 디스크에서 어떤 데이터를 읽어오라는 명령을 받음
시스템 콜의 종류
sys_call_table
시스템 콜 호출 규약
시스템콜의 초기화는 시스템 부팅시 커널초기화 과정에서 trap_init()함수내의 set_system_date(SYSCALL_VECTOR, &system_call)을 수행해서 0x80인터럽트를 위한 게이트 디스크립터를 설정한다.
SYSCALL_VECTOR : 0x80로 정의된 상수
&system_call : 시스템콜을 위한 핸들러 주소
ref)
1. https://duksoo.tistory.com/entry/System-call-등록-순서
2. https://velog.io/@adam2/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8
3. https://moldd.tistory.com/entry/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%BD%9C1