컴퓨터 자원을 효율적으로 관리 할수 있도록 도와주는 프로그램이자 컴퓨터 상에서 다양한 응용 프로그램이 실행될 수 있도록 하는 인터페이스

위 그림과 같이 하드웨어 위에 os가 있고 os상에서 다양한 애플리케이션이 동작한다.
컴퓨터 메모리에 항상 상주하며 컴퓨터 자원을 관리하는 OS의 일부분이자 핵심.
운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라가면 한정된 메모리 공간이 낭비가 심할 것이다. 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이때 메모리에 상주하는 운영체제의 부분을 kernel(커널)이라고 한다.
CPU 모드
사용자 애플리케이션이 시스템을 손상시키는 것을 방지하기 위해 2가지 모드를 가짐.
cpu에 있는 mode bit으로 구분하여 0은 커널모드, 1은 사용자모드로 구동된다.

사용자 process는 User mode에서 실행되다가 컴퓨터자원을 사용해야할 때 시스템 콜을 호출하여 커널모드로 전환하여 작업을 수행하고 다시 사용자 모드로 전환한다.
앞선 설명처럼 응용 프로그램들은 하드웨어 자원에 접근하기 위해서는 OS가 제공하는 인터페이스를 이용해야한다. 이때 이 인터페이스를 시스템 콜이라고 한다.
예를 들어 어떤 프로그램에서 파일을 열고 읽는 작업을 수행해야한다면 아래와 같은 단계를 거쳐야한다.
open() 시스템 콜을 사용read() 시스템 콜을 사용print() 함수 사용이처럼 응용 프로그램은 파일 시스템, 네트워크, 프로세스 관리 등 다양한 기능을 수행하기 위해 OS에게 시스템 콜을 사용한다. 이를 통해 응용 프로그램은 하드웨어 리소스를 직접 제어하지 않고도 OS가 제공하는 인터페이스를 통해 필요한 기능을 수행할 수 있다.
OS에서 특정 이벤트가 발생했을 때 프로세스에게 전달되는 소프트웨어 인터럽트 신호
시스템콜은 프로세스가 os에 특정 긴으을 요청하는것
시그널은 os가 발생한 이벤트를 프로세스에 전달하는것