📌컴퓨터 구조를 왜 알아야 할까?
1. 성능, 용량, 비용을 고려할 줄 아는 개발자가 되기 위해서
이전에 프로젝트를 하면서 간단히 EC2를 활용해 띄워보려는 시도를 했었다. 하지만 우리 프로젝트의 규모에 따른 서버 용량, 사양을 가늠하기가 어려웠고 이전에 실습했을 때 골랐던 사양으로 고르니 당연히 안 띄워졌던 일이 있었다… 이를 통해 개발자는 코드만 잘 짜면 되는게 아니라 프로젝트에 따라 성능, 용량, 비용을 다 따질 수 있어야 한다는 걸 배웠다.
책에서도 같은 얘기를 한다. 프로그램을 실행할 서버 컴퓨터를 고를 때 너무 저렴한 성능의 컴퓨터를 고르면 누를때마다 한참 걸리는 사이트를 만들게 될 것이고, 그렇다고 너무 좋은 컴퓨터를 고르면 비용이 너무 늘어나는 문제가 생기므로 이를 판단하는 개발자가 되어야 한다고 설명한다.
2. 문제 해결 능력을 높이기 위해서
가끔 분명 똑같은 코드인데 어느 환경에서는 되지만 어느 환경에서는 안될 때가 있다. 이러한 원인을 찾아보면 거의 대부분의 경우 로컬 컴퓨터 환경의 차이였다.. 이런식의 문제도 컴퓨터의 구조에 대해서 잘 이해하고 있다면 서로의 환경이 어떻게 다른지 비교하며 해결의 실마리를 찾을 수 있다고 한다.
📚컴퓨터가 이해할 수 있는 정보
우선 컴퓨터를 뜯어보기 전에, 얘가 뭘 이해할 수 있는지를 파악하고 넘어가야한다.
컴퓨터는 익히 알듯이 0과 1만 이해할 수 있는데, 0과 1로만 이루어진 정보는 크게 데이터와 명령어로 나뉜다.
데이터
- 정적인 정보(숫자, 문자, 이미지, 동영상 등)
- 예: 1, 2 / 사진.png
명령어
- 데이터를 움직이고 컴퓨터를 작동시키는 정보
- 예: 1과 2를 더하세요, USB로 사진.png를 옮기세요
🔎컴퓨터는 그럼 뭐로 이루어져있는데?
그림과 같이 메인보드가 있고, 메인보드 안에는 시스템 버스라는 통로와 CPU, 메모리가 존재한다.
CPU와 메모리는 메인보드 안에서 시스템 버스로 연결되어있고, 보조기억장치와 입출력 장치들은 메인보드 밖에서 시스템 버스로 연결되어 있다.

그럼 각각에 대해서 알아보자
메인보드

메인보드에 연결된 부품은 버스라는 통로로 서로 정보를 주고 받을 수 있다.
시스템 버스는 주소를 주고 받는 주소 버스, 명령어와 데이터를 주고 받는 데이터 버스, 제어 신호를 주고 받는 제어 버스로 이루어져있다. 예를 들어, “1번 주소에 있는 데이터를 읽어오세요” 라는 명령을 CPU에서 처리한다면 “메모리 읽기” 라는 제어신호를 제어 버스로 보내고, “1번 주소에서” 라는 주소를 주소 버스로 메모리에 전달한다. 그러면 읽은 1번 주소의 데이터를 데이터 버스를 타고 다시 CPU로 전달되는 구조이다.
CPU

컴퓨터의 두뇌 역할을 한다. 명령어를 읽고, 해석하고 실행함.
크게 3가지로 구성되어 있다.
- 계산을 맡는 ALU(산술논리연산장치)
- 임시 저장 장치인 레지스터
- 제어 신호를 내보내고 명령어를 해석하는 제어 장치
메모리

현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 함
메모리에 데이터와 명령어는 주소라는 개념을 이용해 저장됨.
보조기억장치

메모리는 가격이 비싸서 용량이 작고, 전원이 꺼지면 내용을 잃어버림…
→ 전원이 꺼져도 저장되는 데이터들은 보조기억장치에 있음
예: 하드디스크, SSD, USB, DVD, CD-ROM 등
메모리가 실행되고 있는 프로그램을 저장한다면, 보조기억장치는 보관할 프로그램을 저장한다.
입출력 장치
마이크, 스피커, 프린터, 마우스, 키보드 등 컴퓨터 외부에서 내부와 정보를 교환하는 장치