운영체제의 정의
운영체제는 일종의 프로그램입니다. 다만 메모장이나 인터넷 브라우저처럼 우리가 흔히 쓰는 응용 프로그램과는 성격이 조금 다릅니다.
운영체제는 이러한 응용 프로그램들이 잘 실행될 수 있도록 하드웨어와 소프트웨어를 관리하는 특별한 프로그램 입니다. 운영체제가 존재하기에 사용자는 컴퓨터를 쉽게 다룰 수 있으며, 만일 운영체제가 없다면 컴퓨터는 '깡통 기계'로 전략하게 된다고 볼 수 있을 만큼 운영체제는 매우 중요한 도구입니다. (참고로 '깡통 기계'는 학부 수업 시간에 교수님께서 쓰신 표현이라 여기에도 그대로 적어봤습니다.)
운영체제의 대표적인 예시로는 윈도우, 맥 OS, 리눅스, 유닉스 등이 있습니다.
커널 영역 vs 사용자 영역
컴퓨터에서 프로그램을 실행하려면 메모리에 적재되어야 합니다. 그렇기 때문에 운영체제도 메모리에 적재되어야 하는데, 운영체제가 적재되는 메모리 공간은 응용 프로그램과 분리되어 있습니다. 이 때 운영체제가 적재되는 메모리 내 공간을 커널 영역이라 하고, 일반 응용 프로그램들이 적재되는 메모리 내 공간을 사용자 영역이라 합니다. (유저 스페이스 영역이라고도 부릅니다.) 즉, 운영체제는 컴퓨터를 부팅할 때 커널 영역이라는 공간에 적재되어 사용자 영역에 적재된 응용 프로그램에게 필요한 시스템 자원을 할당해주고 이들이 바르게 작동하도록 돕습니다.
커널 영역과 사용자 영역은 완전히 분리되어 있어야 안전합니다. 만일 응용 프로그램이 메모리의 커널 영역에 침범하여 데이터를 교체해버리게 된다면 운영체제가 그대로 뻗어버릴 수 있기 때문입니다. 보통 컴퓨터 실행 시 블루스크린이 뜨는 대표적인 원인이 바로 이것입니다. 이 때문에 윈도우와 리눅스 운영체제는 보통 커널 영역과 사용자 영역이 완전히 분리되어 설계된다고 합니다.
운영체제의 역할
운영체제는 응용 프로그램에 자원을 효율적으로 배분하고, 실행할 프로그램들이 지켜야 할 규칙을 만들어 컴퓨터의 시스템 전체를 관리합니다.
CPU 스케줄링과 프로세스 관리
응용 프로그램들이 실행되려면 반드시 CPU가 필요합니다. 이 때 서로 다른 여러 프로그램을 동시에 실행하는 경우, 운영체제는 최대한 공정한 방식으로 순서를 매기고 이 순서에 따라 응용 프로그램에 CPU 자원을 할당해줍니다. 이 때 실행중인 응용 프로그램을 프로세스라 부르고, 프로세스들의 동작 순서를 잡아주는 것을 스케줄링이라 부릅니다.
메모리 관리
운영체제는 응용 프로그램들에게 사용자 영역에 있는 메모리 공간을 할당해준다고 위에서 언급했습니다. 이 때 같은 위치에 있는 메모리 공간이 서로 다른 프로그램에게 할당된다면 큰 문제가 발생할 수 있기 때문에, 운영체제는 메모리 주소가 겹치지 않도록 적당한 공간에 프로그램들을 적재해줍니다. 또한 실행이 종료된 프로그램은 메모리에서 삭제하여 공간을 확보하는 방식으로 메모리 자원을 지속적으로 관리합니다.
그 외에도 디스크 파일을 관리하고, I/O 디바이스를 관리하는 역할이 있습니다.