컴퓨터는 CPU, GPU, 메모리, SSD(HDD) 등 하드웨어들로 구성되어 있다.
그렇다면 이 하드웨어 자원들을 관리할 수 있는 소프트웨어가 필요하고, 그 것이 OS이다.
또한 OS는 하드웨어 자원, 소프트웨어 자원을 모두 효율적으로 운용하고 관리한다.
그렇다면 OS가 가장 하드웨어에 가까운 소프트웨어일까? - 아니다.
하드웨어 장치에 포함된 소프트웨어인 펌웨어가 가장 가깝다.
모든 기능을 제어하는 회로를 하드웨어로만 만들게 되면 구조가 복잡해진다.
따라서 내부에서 제어할 수 있는 소프트웨어인 펌웨어를 대신하여 사용한다.
또한 대부분의 OS는 사용자에게 컴퓨터를 쉽게 사용할 수 있도록 GUI 환경을 제공한다.
즉, OS는 사용자가 컴퓨터를 원활하게 사용할 수 있도록 하드웨어, 소프트웨어 자원들을 효율적으로 관리하고 손 쉽게 컴퓨터를 다룰 수 있는 인터페이스를 제공하는 것이다.
대표적인 OS는 다음과 같다.
소프트웨어가 실행되기 위해서는 메모리에 올라와야 한다.
하지만 메모리는 용량이 비교적 작기 때문에 OS의 모든 부분이 메모리에 올라갈 수 없다.
따라서 항상 필요한 부분은 메모리에 상주시키고, 그렇지 않은 부분은 필요할 때 메모리에 올리게 되는데, 여기서 항상 필요한 부분을 커널이라고 하고 좁은 의미의 OS라 한다.
컴퓨터를 사용할 때 가장 핵심적인 부분은 하드웨어, 소프트웨어 자원들을 관리하는 것이며 이 것이 커널의 역할이다.
커널의 수행하는 역할은 다음과 같다.
만약 사용자가 컴퓨터 자원에 직접 접근할 수 있다면 어떻게 될까?
이는 무척이나 위험한 행위일 것이다.
따라서 사용자는 커널에게 커널이 관리하고 있는 자원에 대한 접근을 요청하게 되고, 이 것을 시스템 콜이라고 부른다.
시스템 콜이 일어나면 커널은 사용자의 요청에 맞는 하드웨어에 명령을 전달한다.
커널에는 모놀리틱 커널과 마이크로 커널이 존재한다.