Book/혼자 공부하는 컴퓨터구조+운영체제

Chapter 1. 컴퓨터 구조 시작하기

DongHo 2023. 12. 21. 21:59

[1-1] 컴퓨터 구조를 알아야 하는 이유

컴퓨터 구조를 알지 못하고 프로그램을 개발하여도 큰 지장이 없어보긴 합니다. 하지만, 컴퓨터 구조를 이해하고 개발하는 것과 알지 못하고 개발하는 것에는 큰 차이가 있습니다. 이 차이를 '문제 해결'과 '성능, 용량, 비용' 두가지 관점에서 알아보도록 하겠습니다.

문제 해결

강의 또는 책에 나와있는 코드를 자신의 컴퓨터에서 똑같이 따라 쳤는데, 코드가 제대로 작동하지 않는 경우가 종종 있습니다. 이러한 문제가 발생 하였을 때, 컴퓨터 구조에 대한 이해가 있지 않는다면 해결하기 어려울 가능성이 있습니다. 또한 실무에서도 개발할 때는 문제 없이 작동했던 코드가 실제 사용자들에게 선보이는 자리에서는 작동하지 않는 경우가 있습니다. 이러한 상황에서는 코드상의 문법적 오류만이 아닌 다른 문제가 발생하였을 가능성이 높습니다. 이러한 경우에 프로그래밍 문법만 알고 코드를 작성 사람에게는 컴퓨터가 '미지의 대상'이라 컴퓨터라는 기계에 코드를 '입력'만 할 수 있을 뿐 위와같은 상황에서 문제를 해결하기는 쉽지 않습니다.
하지만, 컴퓨터 구조를 이해하고 있다면 위와 같은 문제가 발생하였을 때 문제 해결의 실마리를 다양하게 찾아 해결할 수 있습니다. 이러한 사고가 가능한 이들에게는 컴퓨터가 '미지의 대상'이 아닌 '분석의 대상'일 테니까요.

이러한 이유로 기업에서는 위와같은 문제를 다양한 방법으로 해결할 수 있는 역량이 업무 수행에 필요하다는 것을 알기에 각종 기술 면접에서 컴퓨터 구조에 관한 소양을 검증하거나 반드시 알아야 하는 분야로 명시하기도 합니다.

 

성능, 용량, 비용

먼저, 웹사이트를 개발하고있다고 가정해 봅시다.
이러한 경우 개발한 웹사이트는 어느 프로그램과 마친가지고 컴퓨터에서 작동하기 때문에 이를 실행할 서버 컴퓨터가 필요합니다.
인터넷 검색창에 '서버 컴퓨터'를 입력하면 다양한 서버 컴퓨터가 검색됩니다. 서버 컴퓨터들의 다양한 성능, 용량, 비용을 토대로 나눠집니다. 따라서 이러한 경우, 무조건 비싼 것이 좋은 것도 아니고, 또는 저렴한게 좋은 것이 아닙니다. 개발한 프로그램이 돌아갈 성능, 용량, 비용을 분석하여 가장 잘 맞는 장비를 구입하는 것이 가장 좋습니다.

 

 

[1-2] 컴퓨터 구조의 큰 그림

컴퓨터 구조에 본격적으로 들어가기에 앞서, 컴퓨터는 '컴퓨터가 이해하는 정보'와 '컴퓨터의 네 가지 핵심 부품'으로 나뉩니다.

 

컴퓨터가 이해하는 정보

먼저, 컴퓨터는 0과 1로 표현된 정보만을 이해합니다. 그리고 이렇게 0과 1로 표현되는 정보에는 크게 '데이터'와 '명령어' 두가지로 나뉩니다.

 

데이터(Data)

  • 숫자, 문자, 이미지, 동영상과 같은 정적인 정보입니다.
  • 컴퓨터와 주고 받는/내부에 저장된 정보를 데이터라 통칭하기도 합니다.
  • 0과 1로 숫자를 표현하는 방법
  • 0과 1로 문자를 표현하는 방법

 

명령어(Instruction)

  • 컴퓨터는 결국 명령어를 처리하는 기계입니다.
  • 명령어
    • 컴퓨터를 실질적으로 움직이는 정보
    • 데이터는 명령어를 위한 일종의 재료
  • 명령어의 생김새와 동작 방식

 

컴퓨터의 4가지 핵심 부품

컴퓨터의 핵심 부품은 중앙처리장치(CPU:Central Processing Unit), 주기억장치(Main Memory), 보조기억장치(Secondary Storage), 입출력장치(Input/Output(I/O) Device)입니다. 

 

 

  1. 가장 큰 사각형은 메인보드입니다.
  2. 메인보드 안에 시스템 버스(양방향 수직 화살표)가 있습니다.
  3. CPU 내부에는 ALU(산술논리연산장치), 제어장치와 여러 레지스터가 있습니다.
    CPU는 메인보드 내 시스템 버스와 연결되어 있습니다.
  4. 메모리는 메인보드 내 시스템 버스와 연결되어 있습니다.
  5. 보조기억장치는 메인보드 내 시스템 버스와 연결되어 있습니다.
  6. 모니터, 키보드, 마우스 등은 메인보드 내 시스템 버스와 연결되어 있습니다.
    이들을 입출력장치라고 부릅니다.

 

메모리

메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품입니다.

  • 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다.
  • 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
  • 메모리에 저장된 값의 위치는 주소(Address)로 알 수 있다.

 

CPU

CPU는 컴퓨터의 두뇌입니다. CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품입니다.
CPU의 역할과 작동 원리를 구체적으로 이해하기 위해서는 CPU 내부 구성 요소를 알아야합니다.
그 중 이 책에서 학습할 CPU 내부 구성 요소 중 가장 중요한 3가지는 산술논리연산장치(ALU:Arithmetic Logic Unit), 레지스터(Register), 제어장치(CU:Control Unit)입니다.

  • ALU(Arithmetic Logic Unit)는 쉽게 말해 계산기입니다. 계산만을 위해 존재하는 부품입니다. 컴퓨터 내부에서 수행되는 대부분의 계산은 ALU가 도맡아 수행합니다.
  • 레지스터(Register)는 CPU 내부의 작은 임시 저장 장치입니다. 프로그램을 실행하는 데 필요한 값들을 임시로 저장합니다. CPU안에는 여러 개의 레지스터가 존재하고 각기 다른 이름과 역할을 가지고 있습니다.
  • 제어장치는 제어 신호(Control Signal)라는 전기 신호를 내보내고 명령어를 해석하는 장치입니다.
    (제어신호란 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호)
    • CPU가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 메모리 읽기라는 제어 신호를 보냅니다.
    • CPU가 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 메모리 쓰기라는 제어 신호를 보냅니다.

 

보조기억장치

앞서, 메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다고 했지만, 이 메모리(Ram)는 두 가지 치명적인 단점이 있습니다.
1. 가격이 비싸 저장 용량이 적다는 점, 2. 전원이 꺼지면 저장된 내용을 잃는다는 점입니다. 
이에 메모리보다 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않는 메모리를 보조할 저장 장치가 보조기억장치입니다.
ex) HDD, SSD, USB, DVD, CD ...

 

입출력장치

입출력장치는 마이크, 스피커, 프린터, 마우스, 키보드처럼 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치를 의미합니다. 

여기서 이런 질문을 할 수도 있습니다.
"보조기억장치로 알고 있었던 HDD, USB, CD도 '컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 장치'로 볼 수 있지 않나요? 그러면 보조기억장치도 결국 입출력장치 아닐까요?"

이는 매우 좋은 지적이고 맞는 말입니다. 보조기억장치는 관점에 따라 입출력장치의 일종으로 볼 수 있습니다. 실제로 보조기억장치와 입출력장치를 '컴퓨터 주변에 붙어있는 장치'라는 의미에서 주변장치(Periperal Device)라 통칭하기도 합니다. 다만 보조기억장치는 모니터, 마우스, 키보드와 같은 일반적인 입출력장치에 비해 메모리를 보조한다는 특별한 기능을 수행하는 입출력장치입니다.

 

메인보드와 시스템 버스

위에서 설명한 컴퓨터의 핵심 부품들은 모두 메인보드(Main Board)라는 판에 연결됩니다. 메인보드는 마더보드(Mother Board)라고도 부릅니다. 

메인보드에 연결된 부품들은 서로 정보를 주고받을 수 있는데, 이는 메인보드 내부에 버스(Bus)라는 통로가 있기 때문입니다. 컴퓨터 내부에는 다양한 종류의 통로가 있습니다. 하지만 여러 버스 중 컴퓨터의 4가지 핵심 부품을 연결하는 가장 중요한 버스는 시스템 버스(System Bus)입니다.

 

 

 

Reference
Book<혼자공부하는 컴퓨터구조+운영체제>
Image(https://www.youtube.com/watch?v=Oga3_Rl1kxQ)