컴퓨터 구조 시작하기

1. 컴퓨터 구조를 알아야 하는 이유

INTRO
좋은 개발자가 되기 위해서는? 프로그래밍 언어의 문법과 함께 컴퓨터의 근간을 알아야 한다!

문제해결

e.g. 분명 코드를 제대로 작성했는데 왜 동작하지 않는거지?(;´д `)ゞ
➡ 프로그래밍 문법 상의 오류가 아니라 근원적 문제가 있을 수 있음! 즉, 컴퓨터를 미지의 대상에서 분석의 대상으로! 볼 수 있음!

  • 컴퓨터를 관조할 수 있는 능력 배양
  • 문법에 맞는 소스 코드를 컴퓨터에 입력만 하는 개발자가 아닌, 컴퓨터를 내려다보며 문제를 해결할 수 있는 개발자로 성장 가능!

성능, 용량, 비용

e.g. 무조건 저렴한 컴퓨터 vs. 무조건 최신 컴퓨터
➡ 과연 서버에 적합한 성능, 용량, 비용은? cf. 클라우드 서비스(e.g. AWS)에서도 어떤 종류의 CPU, 메모리, 저장 용량을 사용할지 직접 선택해야함!

  • 컴퓨터 구조는 결국 성능, 용량, 비용에 대한 이야기
  • 프로그래밍 언어의 문법만으로는 해결하기 어려운 문제들을 고려할 수 있음

2. 컴퓨터 구조의 큰 그림

컴퓨터가 이해하는 두 가지 정보: 데이터

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

컴퓨터가 이해하는 두 가지 정보: 명령어

  • 컴퓨터는 결국 명령어를 처리하는 기계
    • 명령어
      • 컴퓨터를 실질적으로 움직이는 정보
      • 데이터는 명령어를 위한 일종의 재료
      • e.g. 1과 2를 더하라, ‘안녕하세요’를 출력하라

컴퓨터의 네 가지 핵심 부품

Computer

메모리
  • 현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장하는 부품
  • 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 함
  • 메모리는 실행되는 프로그램의 명령어와 데이터를 저장
  • 메모리에 저장된 값의 위치는 주소로 알 수 있음
    • 주소: 메모리 내에 어디에 저장되어 있는지 알 수 있게 해줌
CPU
  • 메모리에 저장된 값을 읽어 들이고, 해석하고 실행하는 장치
  • CPU 내부에는 ALU, 레지스터, 제어장치가 있음
    • ALU: 계산하는 장치
    • 레지스터: 임시 저장 장치
    • 제어장치: 제어 신호를 발생 시키고 명령어를 해석하는 장치
보조기억장치
  • 메모리
    • 보조기억장치에 비해 비쌈
    • 휘발성 저장장치로 전원이 꺼지면 저장된 내용을 잃음
    • 실행할 정보를 저장
  • 보조기억장치
    • 전원이 꺼져도 보관될 저장장치가 필요
    • 보관할 정보를 저장
입출력장치
  • 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품

    보조기억장치 vs. 입출력장치
    딱 잘라 구분되는 개념은 아님
    → 주변장치(peripheral device)라 통칭하기도…
    보조기억장치: 메모리를 보조하는 특별한 입출력장치

메인보드
  • 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음
  • 버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로
  • 다양한 종류의 버스 존재
  • 시스템 버스: 컴퓨터의 핵심 부품을 연결하는 버스
시스템버스
  • 주소 버스: 주소를 주고받는 통로
  • 데이터 버스: 명령어와 데이터를 주고받는 통로
  • 제어버스: 제어 신호를 주고받는 통로

References