이 포스트에서는 컴퓨터 구조를 본격적으로 들어가기 전에 우선 컴퓨터 그 자체에 대해 다뤄볼 예정입니다. 컴퓨터의 종류와 부팅과정, 그리고 보통 "컴퓨터"라고 불리는 것들의 기본적인 내부 구조를 알아봅시다.
컴퓨터의 종류
ABC(Atanasoff-Berry Computer)는 1942년에 개발된 컴퓨터로 세계 최초의 전자식 컴퓨터로 알려져 있습니다. 이 ABC 컴퓨터는 지금의 컴퓨터와는 다르게 정해진 제한된 기능만을 수행하였습니다.
에니악(ENIAC, Electronic Numerical Intergrator And Computer)은 1947년에 개발된 다용도 컴퓨터로 제한된 기능만을 수행하던 ABC와는 다르게 일반적인 다양한 계산이 가능한 컴퓨터입니다.
보통 세계 최초의 컴퓨터(전자식 계산기)라고 하면, 에니악으로 알고 계신분들이 많으실것 같은데요. 1973년 소송에서 ABC가 세계 최초의 전자식 계산기로 인정받았다고 합니다.
위의 에니악 사진을 보시면 지금의 컴퓨터와는 다르게 매우 큰 모습을 하고 있는 것을 보실 수 있습니다. 그런데 지금 사용하고 계신 컴퓨터는 그 크기가 이와 비교하면 매우 작아진것을 알 수 있는데요.
이와같은 컴퓨터가 처음 만들어지기 시작했던 1940년대 부터 처음 개인을 위한 컴퓨터가 보급되던 1980년대 중반까지의 약 30년 동안 컴퓨터의 발전 속도는 상당히 빨랐습니다. 그리고 1990년대에는 인터넷이 등장하였죠
컴퓨터의 부팅과정
컴퓨터의 전원버튼을 누른 순간부터 컴퓨터의 화면이 들어오기 까지 컴퓨터는 어떤 일들을 수행하여 부팅을 완료할까요?
1. 컴퓨터에 전원을 넣게되면 공급되는 전원의 전압을 컴퓨터의 각종 부품들이 사용할 수 있는 전압으로 바꾸어 우선 CPU(중앙 처리 장치)로 공급하게 됩니다. CPU는 CPU 레지스터인 PC(Program Counter)레지스터를 메인보드의 ROM BIOS 부트 프로그램의 주소 값으로 초기화합니다.
2. 부트 프로그램은 POST(Power On Self-Test)작업을 수행합니다. POST는 시스템 버스, RTC, 비디오 구성 요소들, RAM, 키보드, 연결된 모드 드라이브(CD, 하드디스크 등의 저장장치)에 신호를 보내 각 부품들이 정상적으로 동작하는 지 확인하는 작업입니다.
3.부트 프로그램은 OS(Operating System, 운영체제)를 로드하기 위해 디스크의 첫 번째 섹터를 메인 메모리로 읽어 들이는데 이는 디스크의 첫번째 섹터에 저장되어 있는 MBR(Mast Boot Record)의 정보를 바탕으로 디스크에서 운영 체제를 찾기 위함입니다. 운영 체제를 찾았다면 이 내용을 기억 장치(메모리)에 저장합니다. 이때부터는 더이상 기계적인 부팅이 아닌 운영 체제가 시스템을 준비하는 과정이 시작됩니다.
4.운영 체제는 'init'과 같은 첫 번째 프로세스를 실행하고, 사용자로 부터 요청이 발생하기를 기다립니다. 요청은 하드웨어나 소프트웨어의 interrupt의 형태로 발생됩니다. 하드웨어는 시스템 버스로 CPU에 신호를 보내고 소프트웨어는 시스템 호출이라 불리는 명령을 실행해 인터럽트를 발생시킵니다.
컴퓨터 운영체제에서 init은 컴퓨터 부팅 과정중에서 최초의 프로세스 이며 컴퓨터가 종료될때까지 계속 실행되는 데몬 프로세스 입니다.
인터럽트는 CPU가 프로그램을 처리하고 있을때 입출력 장치의 제어 혹은 예외상황이 발생하여 처리가 필요할때, 이를 CPU에게 알려 처리할 수 있도록 하는 것을 말합니다.
컴퓨터 구조 개괄
컴퓨터의 종류는 다양하지만 이들 컴퓨터의 내부 구조는 거의 동일합니다.
컴퓨터는 기본적으로 하드웨어(hardware)와 소프트웨어(software)로 이루어져 있는데요, 하드웨어는 각종 전자 회로와 물리적인 장치로 이루어진 기계 부분을 의미하며 소프트웨어는 하드웨어를 활용할 수 있도록 해주는 프로그램을 의미합니다.
(1) 하드웨어
하드웨어(hardware)는 다양한 기계, 전자 기기, 반도체 등이 사용되는 부분으로 눈에 보이며 만질 수 있는 전기 기계적인 장치를 의미합니다. 하드웨어는 소프트웨어와는 다르게 한번 제작되면 변경이 쉽지 않습니다. 기본적인 하드웨어 부품들로는 CPU(중앙처리장치), 메모리(주기억 장치), I/O(입출력) 장치 등이 있습니다.
(2) 시스템 소프트웨어
시스템 소프트웨어는 사용자를 위해 다양한 응용 프로그램간의 하드웨어 사용을 제어 및 통제 조정하는 기능을 수행하는 소프트웨어를 지칭하는데요. 컴퓨터 시스템의 구성 요소를 적절하게 사용할 수 있도록 해주는 운영 체제(OS, Operating System), 컴퓨터를 관리하기 위한 소프트웨어, 또는 사용자에게 편의 기능을 제공하는 소프트웨어 등의 프로그램을 의미합니다. 대표적으로 운영 체제와 컴파일러 등을 예로 들 수 있습니다.
(3) 응용 프로그램
응용 프로그램은 사용자의 여러 요구 사항을 해결하기 위한 프로그램으로 사용자가 직접 사용하는 프로그램입니다. 대표적으로 웹브라우저, 워드 나 한글과 같은 워드프로세서, 엑셀과 같은 스프레드시트등이 있습니다.