
OS(Operating System) 운영체제란, 컴퓨터의 하드웨어 자원을 관리하고, 사용자가 컴퓨터를 편리하고 효율적으로 사용하게 도와주는 소프트웨어의 모임입니다.
OS는 컴퓨터 사용자와 컴퓨터 하드웨어 사이의 인터페이스 역할을 수행하며, 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 줍니다.

운영체제는 커널(Kernel), 인터페이스, 시스템 호출(system call), 드라이버로 이루어집니다.
메모리 관리, 프로세스 관리, 저장 장치 관리 등의 핵심적인 기능을 모아 놓은 것입니다.
컴퓨터의 전원이 켜지면, CPU는 Main Memory의 ROM에 있는 Boot Loader를 통해 하드디스크에 위치한 운영체제를 RAM으로 갖고 옵니다.(이 과정이 부팅입니다.).
운영체제는 크기가 큰 프로그램이므로 전체가 RAM에 올라갈경우 공간 낭비가 클 것입니다. 때문에 운영체제중 항상 필요한 부분만 RAM에 올려놓고, 그렇지 않은 부분은 필요할 때만 메모리에 올려서 사용합니다. 이 때, 메모리에 올라가있는 운영체제를 커널(Kernel)이라고 합니다.
사용자의 명령을 커널에 전달하고 결과를 사용자에게 알려주는 역할을 합니다.
운영체제는 커널과 인터페이스를 분리합니다. 때문에 같은 커널이어도 다른 인터페이스를 사용할 수 있습니다.
(Ex. 유닉스의 bash 쉘, T 쉘, Z 쉘 ,,,etc)
OS는 다양한 서비스를 구동하기 위해 하드웨어에 직접적으로 접근합니다.
하지만, 응용프로그램들을 OS가 제공하는 인터페이스를 통해서만 자원을 사용할 수 있습니다. 이를 '시스템 콜' 이라고 부릅니다.
즉, 시스템 콜은 커널 영역의 기능을 사용자 모드가 가능하게 해줍니다.
보통 직접적으로 시스템 콜을 사용하기보다 API를 통해서 사용하게됩니다.
응용 프로그램과 커널 사이의 인터페이스가 시스템 콜 이라면, 하드웨어와 커널사이의 인터페이스는 드라이버라고 할 수 있습니다.
하드웨어의 종류가 다양하고, 모든 하드웨어를 위한 인터페이스를 제작하는 것을 어렵습니다. 때문에 커널에서는 기본적인 입출력만 구현하고, 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작사로 받아 커널을 실행할 때 같이 실행합니다.
이때, 하드웨어 제작사가 만든 드라이버를 디바이스 드라이버라고 부릅니다.
CPU는 Application이 시스템을 손상시키는 것을 막기 위해 두 가지 모드를 제공합니다.
두 모드는 Mode bit를 통해 구분하며 0은 커널 모드(kernel mode) 1은 사용자 모드(user mode)로 나뉘어 구동합니다.

사용자 모드에서 Application이 실행됩니다. 해당 모드에서 Application은 하드웨어 자원에 대한 접근에 제한됩니다.
하드웨어 자원에 접근을 위해서는 시스템 콜을 사용해야 합니다
운영체제가 CPU를 사용하는 모드입니다. 시스템 콜을 통해 커널 모드로 전환이 되면 운영 체제는 하드웨어를 제어하는 명령어(Privileged Instructions)를 실행합니다.
Privileged Instructions은 사용자 모드에서 실행 될 경우, exception이 발생됩니다.
참고
https://hyonee.tistory.com/95?category=913823
https://ko.wikipedia.org/wiki/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C
https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-1.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%9E%80
https://coduking.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS%EB%9E%80-%EA%B0%9C%EB%85%90%EA%B3%BC-%EA%B5%AC%EC%A1%B0%EC%BB%A4%EB%84%90-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%BD%9C-%EB%93%B1
https://brightstarit.tistory.com/13
https://velog.io/@ss0510s/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B5%AC%EC%A1%B0
https://velog.io/@fredkeemhaus/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-User-Mode-Kernel-Mode