운영체제 (Operating System / OS)
운영체제란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어입니다.
시스템의 각종 하드웨어 자원(CPU, Memory 등)과 소프트웨어 자원을 효율적으로 운영하고 관리하는 역할을 합니다.
때문에 사용자가 응용프로그램을 보다 편리하게 사용하고 하드웨어의 성능을 최적화 할 수 있도록 하는 역할을 하는 셈입니다.
쉽게 말해 운영체제는 어느정도 한계가 있는 자원을 효율적으로 사용하도록 돕습니다.
우리가 흔히 운영체제를 말할 때 ‘커널(Kernel)’을 떠올립니다. 커널은 운영체제의 핵심 부분으로 메모리에 상주합니다. 여기서 메모리란 주기억장치 상의 메인 메모리를 의미합니다. 대표적으로 Windows, Mac, Linux, Unix 등이 있습니다.
이 운영체제가 없었던 시절이 있었습니다. 그때는 사용자가 어떤 프로그램을 실행하기 위해서 직접 하드웨어를 관리하고, 그러기위해 전문화된 고도의 지식을 필요로 했습니다. 하지만 운영체제가 등장했고 하드웨어와 일반 사용자들 간의 중개자 역할을 해내고 있습니다.
운영체제(OS) 작동
운영체제가 어떻게 작동하는 지 알아보기 위해 부팅 과정을 살펴보겠습니다.
컴퓨터가 부팅되기 위해서 CPU와 메인 메모리, 하드디스크가 준비되어야합니다. 컴퓨터를 구성하는 기본적인 녀석들입니다. CPU
는 컴퓨터에서 연산을 담당, 메인 메모리
는 컴퓨터에서 작동하고 있는 프로그램인 프로세서들을 저장, 관리합니다. 하드디스크
는 아직 사용하지 않는 프로그램들을 저장하고 있습니다.
컴퓨터 부팅 전에 운영체제는 하드디스크에 존재합니다. 컴퓨터를 부팅시키면 하드디스크에 있는 운영체제가 메인 메모리로 올라갑니다. 메인 메모리는 원래 RAM인 휘발성 메모리로 컴퓨터가 OFF되면 자료를 모두 날려버립니다.
하지만 운영체제를 올리는 프로그램까지 날려버리면 하드디스크에서 운영체제를 메인 메모리에 올릴 방법이 없어지기 때문에 이 부분(운영체제를 메인메모리에 올리는)은 ROM인 비휘발성인 부분으로 지정되어 있습니다. 이 프로그램이 운영체제를 메인메모리에 올리면서 운영체제가 컴퓨터를 제어하기 시작합니다. 운영체제는 메인 메모리에 올라가 다음 event를 기다립니다. 이러한 event를 시스템에서는 Interrupt라고 부릅니다.
Interrupt의 과정
Interrupt가 발생하면 (예를들어 키보드 입력) 제일 먼저 운영체제는 해당 명령어의 주소를 저장합니다. 그 이유는 Interrupt에 대응하는 행위를 끝내고 다시 그 다음 명령어를 수행하기 위해 다시 그 위치에서 대기하기 위함입니다.
하드웨어(Hardware)
운영체제와 하드웨어가 어떻게 데이터를 주고받는지 알아보기위해 하드웨어에 대해 이야기해보겠습니다. 하드웨어는 입출력장치인 I/O와 해당 장치를 제어하는 Controller로 이루어져있습니다. 우리가 사용하는 입출력장치 하드웨어에는 모두 Controller가 있으며 이 녀석들이 데이터를 운영체제에 전달합니다. 운영체제는 이 하드웨어와 데이터를 주고받기 위해 Device Driver(D/D)가 필요합니다. 우리가 USB를 연결할 때 드라이버 장치가 필요하다고 알림창이 뜨는 그 녀석입니다. 운영체제에서 보내는 데이터는 D/D의 Buffer에 저장되었다가 나가게 됩니다. 하드웨어에서 보내는 데이터 또한 Controller의 Buffer에 저장되었다가 전송됩니다. 이러한 전송 완료에 대한 메시지를 Interrupt로 발생시킵니다.
Buffer
: 데이터 전송을 위한 임시 저장 장치
Buffer의 용량은 상당히 작습니다. 때문에 적은 양의 데이터 전송에는 무리가 없지만
대용량의 데이터를 전송할 때 문제가 생깁니다. 또한 빈번한 운영체제의 개입이 이루어집니다.
이러한 문제를 해결하기 위해 DMA(Direct Memory Access)가 도입됩니다.
DMA는 장치에 대한 연결의 Interrupt를 발생시킨 후 운영체제는 모든 권한을 DMA에게 위임합니다.
그리하여 빈번한 운영체제의 개입이 없어지고 전송 단위 또한 커서 빠르게 전송할 수 있게 됩니다.