CS/OS

OS - system call

reko_ 2022. 4. 5. 00:02

system call

 

system call은 유저 모드에서 커널 모드의 특권 명령을 요청하는 함수이다.

 

 

i/o interrupt와 같은 메모리 자원을 제어하고 수정할 수 있는 이벤트는 메모리 보호, 버그 프로그램, 악의적 자원 사용등 때문에 유저 모드에서 발생시킬 수 없다

 

 

따라서 유저모드에서 이벤트를 발생시키고 싶을 때는 해당 이벤트를 커널 모드에서 발생시켜 달라는 요청이 필요한데 그 요청이 바로 system call이다

 

 

trap = system call

 

 

system call을 사용하기 위해 각 언어에서 다양한 api를 만들었는데 C에서는 print가 write() 라는 system call을 하는 대표적인 API 이다 print를 실행하면 C 라이브러리에서 알아서 write에 필요한 인자를 입력하여 write라는 systemcall을 실행시킨다 (write: 모니터 출력 함수)

 

 

 

 

 

아래 그림 처럼 유저 모드에서 system call을 인자를 레지스터로 전달하고 커널모드를 실행하여 system call 처리를 위한 ISR을 IDT에서 찾습니다

 

 

 

 

system call ISR은 요청에 맞는 적절한 시스템 함수를 syscall table에서 찾아 실행시키면 종료됩니다.

 

 

 

 

 

 

이처럼 system call은 커널과 유저 사이에서 interface 역할을 한다고 이해해야 합니다.