운영체제가 커널에 접근하기 위한 인터페이스이자 유저 프로그램이 운영 체제의 서비스를 받기 위해 커널함수를 호출할 때 사용합니다.
시스템콜을 사용하는 이유
사용자가 함부로 사용하면 문제가 될 만한 명령어를 막아놓았기 때문에, 사용자들이 이런 기능을 사용하려면 시스템 콜을 사용해야 합니다.
시스템 콜 수행 과정
프로세스가 시스템콜을 요청하면 trap이 발생하여, 올바른 요청인지 확인한 후에 커널모드로 변한되어 실행됩니다. 이후 return-from-trap을 발생시켜 유저모드로 돌아갑니다.
유저 모드와 커널 모드
유저 모드
개발자가 작성한 프로세스 코드만을 실행하기 위한 모드로, 유저 모드에서는 커널 영역에 있는 자원에 접근할 수 없습니다
커널 모드
유저 영역과 커널 영역, 양 쪽에 모두 접근할 수 있는 상태로, 시스템 콜을 할 경우 커널 모드로 전환됩니다.
유저 모드와 커널 모드를 구분하는 이유
프로세스가 커널에 직접적으로 접근이 가능해서 문제가 발생할 경우, 해당 OS에서 작동중인 모든 프로세스에 악영향을 줄 수 있습니다. 그렇기 때문에 커널 모드와 유저 모드를 구분하여, 개발자가 작성한 프로세스가 커널 영역에 직접 접근하는 것을 막고 시스템 콜을 통한 간접적인 접근을 허용하는 방식을 이용하여 OS의 안정성을 높일 수 있습니다.