운영체제 기본/추상화
(작성 중입니다.)
우선 운영체제가 무엇을 하는 것인지부터 정확하게 알 필요가 있다. wikipedia:en:Operating system 문서의 첫 문단을 가져오자면 다음과 같다.
> An operating system (OS) is system software that manages computer hardware and software resources, and provides common services for computer programs.
문장을 한국어로 번역하여 보자면, 운영체제는 세 가지의 역할을 수행하여야 한다는 뜻인데 컴퓨터 하드웨어와 소프트웨어 리소스를 관리하고, 컴퓨터 프로그램에 대하여 공통된 서비스를 제공한다는 뜻이다. 이 문서에서는 하드웨어 관리와 리소스 관리로 크게 나누어 살펴본다.
하드웨어 관리자
운영체제가 올라가는 하드웨어의 조합의 종류는 매우 다양하다. 메모리 용량이 다를 수도 있고 디스크를 접근하는 방식이 다를 수도 있으며, 네트워크 카드나 터치 스크린이 있을 수도 있고 없을 수도 있으며, 비디오를 출력하기 위해 하드웨어에 요청해야 하는 방법이 다를 수도 있다.
주의할 점은, (DPDK와 같이 예외가 아예 없는 것은 아니지만) 기본적으로 모든 하드웨어 관리는 운영 체제가 독점한다는 점이다. 왜 그런지는 운영체제 기본/보호에서 더 자세히 알아볼 것이지만, #리소스 관리자 문단을 읽으면서 왜 그런지 생각해보도록 하자.
하드웨어 리소스 관리자
컴퓨터에서 돌아가는 프로그램은 모두 그에 맞는 하드웨어 자원을 필요로 한다. 필요로 하는 하드웨어 자원은 멀리 갈 것도 없이 CPU와 메모리가 있다.
그런데 모든 하드웨어 자원은 그 한계 이상으로 사용할 수 없다. 한계라 하면 양적인 것만 포함하는 것이 아니라 동시 처리 능력까지 포함한다. 예를 들어 싱글 코어 CPU는 이론 상 충분한 시간이 주어진다면 무한히 코드를 실행할 수 있으나, 작동 기전 상 명령어를 선형으로 실행하기 때문에 싱글 코어 CPU가 물리적으로 동시에 여러 코드를 실행하는 것은 불가능하다.