운영체제 : 시스템의 자원을 관리하기 위한 프로그램
운영체제는 사용자 모드와 Kernel 모드 2가지 모드를 가지고 있다.
사용자가 직접 자원을 활용하려면 System Call을 사용해서 Kernel 모드로 변경하여 OS를 통해 하드웨어에 접근하도록 한다.
System Call : 인터럽트의 한 종류이다.
사용자가 System Call을 요청하는 경우 라이브러리 함수를 호출, Trap 명령어를 사용하여 Kernel로 전환한다.
이후 Kernel 모드에서 System Call을 처리하고 그 결과를 반환한 뒤 CPU는 Kernel에서 User 모드로 복귀한다.
별개로 CPU가 Kernel 모드인지 User 모드인지는 CPU의 Flag Register 중 Supervisor flag를 확인하면 알 수 있다.
OS는 아래의 기능을 담당한다.
최근에는 VM, Docker 등을 위한 Hyper-visor 모드를 별도로 가지는 이중모드도 있다.