지금까지 OS 가 무엇인지 그리고 OS가 하는일과 CPU 와 쓰레드에 관하여 알아보는 시간을 가졌었습니다.
그렇다면 OS를 통해 CPU를 제어하거나 시스템 소프트웨어를 활용하고 싶을때는 어떻게 해야할까요?
Systemcall 이란 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 운영프로그램에서 커널에 접근하기 위한 인터페이스를 의미합니다.
우리는 이러한 Systemcall 을 통해 프로세스와 같은 커널 모드에서만 사용가능한 명령들을 수행할 수 있습니다.
일반적으로 우리가 사용하는 C,C++과 같은 언어는 응용프로그램으로 User Mode 층에 해당합니다. 아래와 같이 유저 모드에서는 컴퓨터의 자원에 접근을 하지 못하는데 특별한 이유로 자원에 접근하여 제어를 해야할 때 System call을 통해 Kernel Mode에 들어가 프로그램 자원을 제어하고 컨트롤 하는 것입니다.
위의 사진 처럼
User Mode-> (System call)-> Kernel Mode-> return-> UserMode
의 흐름으로 흘러 가는 것 입니다.