메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

[개발자 CS 기술 면접] 1. 컴퓨터 구조 편(1/5)

한빛미디어

|

2024-11-13

|

by 강민철

26

컴퓨터 구조는 컴퓨터 과학의 가장 근원적인 학문이라고 할 수 있습니다. 여기서 근원적이라는 말은 하드웨어에 가장 가깝다는 말과도 같습니다. 컴퓨터 과학 개념의 기저에는 그 개념을 실행하는 하드웨어 부품이 있습니다. 따라서 컴퓨터 구조에 대한 이해는 컴퓨터 과학을 이해하기 위한 시작점이 됩니다. 

 

 

 

 

 

✅컴퓨터 구조의 큰 그림

 

컴퓨터가 이해하는 정보, 그리고 그 정보를 이용해 프로그램을 실행하는 하드웨어인 컴퓨터의 핵심 부품에 대해 먼저 알아보겠습니다. 컴퓨터가 이해할 수 있는 0과 1로 이루어진 데이터가 명령어에 의해 어떻게 실행되는지, 컴퓨터를 구성하는 핵심 부품의 역할과 작동 방법에 대해 알아보며, 지도를 그리듯 컴퓨터 구조의 큰 그림을 그려 보겠습니다.

 

 

 

 

 

 

 

• 컴퓨터가 이해하는 정보

 

프로그램을 개발하기 위해서는 프로그래밍 언어로 소스 코드를 작성해야 합니다. 그런데 정작 컴퓨터는 자바, C++, 파이썬과 같은 프로그래밍 언어를 직접 이해하지 못합니다. 컴퓨터가 이해할 수 있는 정보는 따로 있습니다. 바로 데이터와 명령어입니다. 우리가 작성한 소스 코드는 내부적으로 컴퓨터가 이해할 수 있는 데이터명령어의 형태로 변환된 뒤에 실행됩니다. 일반적으로 사용되는 명령어의 생김새는 대략 다음과 같습니다. 일상에서 사용하는 명령어와 유사하죠? 컴퓨터의 명령어 역시 수행할 동작 수행할 대상으로 이루어져 있습니다. 

 

더하라. 1과 2를
출력하라. "hello world"를
USB 메모리에 저장하라. cat.jpg를

 

 

데이터는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보를 의미합니다. 컴퓨터와 주고받는 정보나 컴퓨터에 저장된 정보 자체를 데이터라고 통칭하기도 합니다. 가령 앞에서 예로 든 명령어에서 ‘1’과 ‘2’라는 숫자나 “hello world”라는 문자열, ‘cat.jpg’라는 파일명은 모두 데이터입니다. 잘 살펴보면 데이터는 있는 그대로의 정보를 말하고, 명령어는 이 데이터를 활용하는 정보라는 사실을 눈치챌 수 있습니다. 즉, 데이터는 명령어에 종속적인 정보이며, 명령의 대상이자, 명령어의 재료라고 할 수 있습니다.

 

컴퓨터는 기본적으로 0과 1만을 이해할 수 있으므로 데이터와 명령어 또한 0과 1로 이루어져 있습니다. 즉, 컴퓨터는 0과 1만으로 다양한 숫자(정수, 실수)와 문자 데이터를 표현하며, 이 데이터를 활용해 명령어를 실행합니다. 이 명령어를 실행하는 주체가 바로 컴퓨터의 핵심 부품 중 하나인 CPU입니다. 명령어를 이해하고 실행하는 주체가 CPU라는 말은 CPU의 종류에 따라 실행 가능한 세부적인 명령어의 종류와 처리의 양상이 달라질 수 있음을 의미합니다. 하지만 큰 틀에서 보면 CPU의 종류와 무관하게 공통적으로 활용되는 명령어는 어느 정도 정해져 있습니다. 

 

 

 

 

 

 

 

• 컴퓨터의 핵심 부품

 

세상에는 다양한 종류의 컴퓨터가 있습니다. 노트북, 데스크톱, 서버 컴퓨터, 스마트폰 모두 컴퓨터의 일종이라고 볼 수 있습니다. 하지만 컴퓨터를 작동시키는 컴퓨터의 핵심 부품은 크게 다르지 않습니다. 바로 CPU(중앙처리장치), 메모리(주기억장치), 캐시 메모리, 보조기억장치, 입출력장치입니다.

 

 

 

 

 

- CPU

컴퓨터가 이해하는 정보에는 크게 데이터와 명령어가 있다고 했죠. 이러한 정보를 읽어 들이고, 해석하고, 실행하는 부품이 바로 CPUCentral Processing Unit입니다. 사람으로 비유하면 두뇌에 해당하는 부품이라고 볼 수 있습니다. CPU는 대단히 정교한 CPU부품이지만, 다행히도 개발자가 이 정교한 CPU의 내부 회로까지 모두 알아야 하는 일은 드뭅니다. 따라서 CPU의 주요 구성 요소와 빠른 명령어 처리를 위한 기술, 이 2가지에 집중하는 것이 좋습니다. CPU의 내부에는 다음과 같이 산술논리연산장치(이하 ALU)와 제어장치를 포함한 여러 레지스터들이 있습니다. 하나씩 좀 더 알아볼까요?

 

 

  • 산술논리연산장치(ALU, Arithmetic and Logic Unit): 사칙 연산, 논리 연산과 같은 연산을 수행할 회로로 구성되어 있는 일종의 계산기입니다. CPU가 처리할 명령어를 실질적으로 연산하는 요소라고 보면 됩니다. 
  • 제어장치(CU, Control Unit): 명령어를 해석해 제어 신호라는 전기 신호를 내보내는 장치입니다. 제어 신호(control signal)란 부품을 작동시키기 위한 신호를 말합니다. CPU가 메모리를 향해 제어 신호를 보내면 메모리를 작동시킬 수 있고, 입출력장치를 향해 제어 신호를 보내면 입출력장치를 작동시킬 수 있습니다.
  • 레지스터(register): CPU 내부의 작은 임시 저장장치로, 데이터와 명령어를 처리하는 과정의 중간값을 저장합니다. CPU 내에는 여러 개의 레지스터가 존재하며, 각기 다른 이름과 역할을 가지고 있습니다. 

 

이 중 가장 중요한 구성 요소는 바로 레지스터입니다. CPU가 처리하는 명령어는 반드시 레지스터에 저장되기 때문에 레지스터 값만 잘 관찰해도 프로그램이 어떻게 실행되는지 가장 낮은 단계에서 파악할 수 있습니다.

 

 

 

- 메모리와 캐시 메모리

두 번째 핵심 부품은 메인 메모리(주기억장치)입니다. 메인 메모리는 흔히 메모리라고 줄여서 부르는데요. 메모리를 설명하기 전에 필요한 전제가 한 가지 있습니다. 메인 메모리main memory 역할을 하는 하드웨어에는 RAM과 ROM이 있고, 일반적으로 ‘(메인)메모리’라는 용어는 RAM을 지칭하는 경우가 많습니다. 

 

 CPU가 읽어 들이고, 해석하고, 실행하는 모든 정보는 어딘가에 저장되어 있어야 하며, 이 정보를 저장하는 장치가 바로 메모리입니다. 즉, 메모리는 현재 실행 중인 프로그램을 구성하는 데이터와 명령어를 저장하는 부품입니다. 여기서 중요한 것은 ‘실행 중인’ 프로그램을 저장한다는 것입니다. 프로그램이 실행되려면 그 프로그램을 이루는 데이터와 명령어가 메모리에 저장되어 있어야 합니다.

 

메모리(RAM)와 관련해 기억해야 할 중요한 배경지식 중 하나는 주소라는 개념이고, 다른 하나는 휘발성이라는 개념입니다. CPU가 메모리에 접근할 때 컴퓨터가 빠르게 작동하기 위해서는 메모리 속 데이터와 명령어가 중구난방으로 저장되어 있지 않아야 합니다. 정돈되어 있어야 하죠. 그래서 사용되는 개념이 바로 주소address입니다. 실생활에서 원하는 목적지를 찾기 위해 주소가 필요하듯, 컴퓨터에서도 CPU가 원하는 정보로 접근하기 위해서는 주소가 필요합니다. 다음은 1번지와 2번지에는 명령어, 3번지와 4번지에는 데이터가 저장되어 있고, 5번지와 6번지에는 아무것도 저장되어 있지 않은 상태의 메모리를 표현한 그림입니다.

 

 

 

휘발성volatile은 전원이 공급되지 않을 때 저장하고 있는 정보가 지워지는 특성을 의미합니다. 메모리(RAM)는 휘발성 저장장치로, 메모리에 저장된 정보는 컴퓨터의 전원이 꺼지면 모두 삭제됩니다. 이는 메모리를 이해하기 위한 중요한 특성이므로 기억해 두는 것이 좋습니다. 

 

추가로, 메모리를 학습할 때 반드시 함께 알아 두어야 할 저장장치가 있습니다. 바로 캐시 메모리입니다. CPU와 메모리 사이에는 반드시 하나 이상의 캐시 메모리가 있습니다. 캐시 메모리cache memory는 CPU가 조금이라도 더 빨리 메모리에 저장된 값에 접근하기 위해 사용하는 저장장치입니다. 빠른 메모리 접근을 보조하는 저장장치인 셈입니다. 캐시 메모리는 CPU 안에 위치하기도 하고, CPU 밖에 위치하기도 하며, 여러 종류가 있습니다.

 

 

 

 

 

- 보조기억장치

앞서 메모리는 휘발성 저장장치라고 했습니다. 그래서 컴퓨터의 전원이 꺼지면 저장된 정보를 모두 잃습니다. 이를 보조하기 위해 보조기억장치secondary storage를 사용하는데요. 즉, 보조기억장치는 전원이 꺼져도 저장된 정보가 사라지지 않는 비휘발성non-volatile 저장장치입니다. CD-ROM이나 DVD, 하드 디스크 드라이브, 플래시 메모리(SSD, USB 메모리), 플로피 디스크와 같은 저장장치가 보조기억장치의 일종입니다. 오늘날 컴퓨터에 자주 사용되는 보조기억장치는 하드 디스크 드라이브와 플래시 메모리 기반 SSD입니다.

 

 

 

 

메모리가 현재 실행 중인 프로그램을 저장한다면, 보조기억장치는 보관할 프로그램을 저장한다고 할 수 있습니다. 유의할 점은 CPU가 보조기억장치에 저장된 프로그램을 곧장 가져와 실행할 수 없다는 점입니다. 어떠한 프로그램을 실행하려면 보조기억장치에서 보관하고 있는 프로그램을 메모리로 복사해야 합니다. 

 

 

 

 

 

- 입출력장치

입출력장치input/output device는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치를 말합니다. 말 그대로 컴퓨터에 어떠한 입력을 할 때 사용하는 장치가 입력장치, 컴퓨터의 정보를 받기 위해 사용하는 장치가 출력장치입니다. 이를 테면 마우스, 키보드, 마이크 등은 입력장치이고 스피커, 모니터, 프린터 등은 출력장치인 것입니다.

 

 

 

 

참고로, 보조기억장치와 입출력장치는 완전히 배타적인 개념이 아닙니다. 보조기억장치는 결국 메모리를 보조하는 임무를 수행하는 특별한 입출력장치로 볼 수 있습니다. 보조기억장치가 컴퓨터 내부와 정보를 주고받는 방식이 입출력장치와 크게 다르지 않기 때문에, 보조기억장치와 입출력장치를 주변장치peripheral device라고 통칭하기도 합니다. 

 

 

 

- 메인 보드와 버스

앞에서 살펴본 컴퓨터의 핵심 부품들은 공중에 떠 있지 않습니다. 이 부품들을 고정하고 연결하는 기판에 연결되어 있죠. 이 기판을 메인 보드main board 혹은 마더 보드mother board라고 부르는데요. 메인 보드에는 컴퓨터의 핵심 부품을 비롯한 여러 부품들을 연결할 수 있는 슬롯과 연결 단자들이 있습니다. 

 

메인 보드에 연결된 부품들은 각자의 역할을 적절히 수행하기 위해 서로 정보를 주고받습니다. 이때 각 컴퓨터 부품들이 정보를 주고받는 통로를 버스bus라고 합니다. 버스의 종류는 다양하지만, 앞서 설명한 핵심 부품들을 연결하는 시스템 버스system bus가 가장 중요하다고 할 수 있습니다. 사람으로 비유하면 몸을 지탱하는 척추와 같다고 할 수 있죠.

 

 

 

 

 

 

 

• 컴퓨터 구조 지도 그리기

 

컴퓨터 구조의 내용을 대략적으로 살펴봤는데요, 한눈에 정리된 다음의 컴퓨터 구조 지도를 보면서 미리 학습의 흐름을 정리해 보시기 바랍니다.

 

 

 

 

 


 

위 콘텐츠는 『이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접』의 내용을 재구성하여 작성하였습니다.

 

댓글 입력
자료실

최근 본 상품0