(사진은 인텔 기준으로, 4개 Ring이 있다.)
CPU는 동작하는 동안 두가지 모드가 번갈아가면서 바뀐다.
응용 프로그램이 CPU를 쓸 때 모드
사용자 모드에서는 코드를 실행할 때는 응용 프로그램이 하드디스크, 메모리, printer, 그리고 다른 I/O device 들과 같은 특정 리소스들에 직접 접근할 수 없다.
(이런 리소스들에 접근하려면 시스템 콜을 호출해 커널 모드로 전환해야 한다.)
OS가 CPU를 쓸 때 모드
OS는 커널모드에서 실행된다. 커널 모드에서는, OS가 모든 하드웨어에 접근이 가능하고 제어가 가능하다.
하드웨어 구성요소들로는 RAM, HARD, CPU, printer, 그리고 다른 I/O device 들이 있다.
운영 프로그램(User Process)은 사용자 모드(User Mode)에서 특정 하드웨어 리소스들에 직접 접근할 권한이 없기 때문에 하드웨어에 접근할 때에는 모든 하드웨어를 제어하는 권한이 있는 운영체제가 필요하고 따라서 커널모드로 전환되어야 한다.
그런데 시스템 콜이 있어야 커널모드로 전환할 수 있기 때문에 운영 프로그램은 시스템 콜을 호출해야한다.
시스템 콜이 호출되면 사용자모드에서 커널모드로 전환되는데, 시스템 콜이 호출되고 실행이 끝나면 사용자 모드로 다시 되돌아간다.
운영체제는 시스템 콜(시스템 호출 인터페이스) 이라는 명령(또는 함수)를 제공한다.
프로세스(응용 프로그램)이 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등의 기능은 커널 모드 일때 CPU가 실행이 가능하기 때문에, 반드시 시스템 콜을 사용해서 커널모드로 전환해야 한다.
시스템 콜이 호출되면, 사용자모드에서 커널모드로 전환되고, 시스템 콜에서 정의 된 특정 작업을 수행한다.
따라서 시스템 콜은 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있도록 커널에 접근하기 위한 인터페이스 역할을 한다.