[혼공컴운] Ch01 컴퓨터 구조 시작하기

Hyunjoon Choi·2023년 7월 8일
0

혼공컴운

목록 보기
1/15

📢 본 글은 혼공학습단 미션과 함께 정리해보는 글 입니다.

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

좋은 개발자가 되기 위해서는 프로그래밍 언어 뿐 아니라 컴퓨터의 근간을 함께 알아야 한다.
컴퓨터 구조를 함께 알게 된다면 문제 해결 능력을 기를 수 있으며, 성능 & 용량 & 비용을 고려한 개발을 할 수 있다.

문제 해결 능력

내가 개발했던 환경에서는 문제가 없지만, 실제로 사용자들에게 배포된 환경에서 문제가 생길 수 있다. 이는 문법적인 원인보다는 컴퓨터 내부에 근원적인 문제가 있을 확률이 더 높기에, 이때 컴퓨터 내부를 직접 뜯어본다면 컴퓨터를 미지의 대상에서 분석의 대상으로 바라보게 되어 남들과 구별되는 문제 해결 능력을 가질 수 있게 된다.

성능 & 용량 & 비용을 고려한 개발

우리가 웹사이트를 만든 뒤 사람들에게 공개하기 위해서는 서버 컴퓨터가 필요하다. 그런데 서버 컴퓨터들은 성능과 용량에 따라 비용이 제각각이다. 서버를 직접 쓰지 않고 클라우드로 선택하더라도, AWS EC2의 환경 설정을 보면 선택한 성능과 용량에 따라 비용이 달라지게 된다.


컴퓨터 구조의 큰 그림

컴퓨터 구조는 크게 컴퓨터가 이해하는 정보컴퓨터의 네 가지 핵심 부품으로 나눌 수 있다.

컴퓨터가 이해하는 정보

컴퓨터가 이해할 수 있는 정보로는 데이터명령어가 있다. 이들은 모두 0과 1로 이루어진 정보이다.

데이터

  • 숫자, 문자, 이미지, 동영상 등과 같은 정적인 정보
  • 명령어를 위해 존재하는 일종의 재료
  • ex: 안녕하세요

명령어

  • 데이터를 움직이고 컴퓨터를 작동시키는 정보
  • 컴퓨터는 결국 명령어를 처리하는 기계
  • ex: 안녕하세요를 출력하라

컴퓨터의 네 가지 핵심 부품

1️⃣ 중앙처리장치 (CPU, Central Processing Unit)

  • 컴퓨터의 두뇌
  • 메모리에 저장된 명령어를 읽어들이고, 읽어들인 명령어를 해석하고 실행
  • 아래 세 가지 장치 말고도 추가되는 부품들이 더 있음

산술논리연산장치 (ALU, Arithmetic Logic Unit)

  • 계산만을 위해 존재하는 부품
  • 컴퓨터 내부에서 수행되는 대부분의 계산을 처리

레지스터 (register)

  • CPU 내부에 있는 작은 임시 저장 장치
  • 프로그램을 실행하는 데 필요한 값들을 임시로 저장
  • CPU 안에는 여러 개의 레지스터가 존재하며, 각기 다른 이름과 역할을 가지고 있음

제어장치 (CU, Control Unit)

  • 제어 신호 (control signal)라는 전기 신호를 내보내고 명령어를 해석
  • 제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호 (메모리 읽기, 메모리 쓰기..)

2️⃣ 주기억장치 (메모리)

주기억장치에는 크게 RAM (Random Access Memory)ROM (Read Only Memory) 두 가지가 있는데, 컴퓨터의 작동 원리를 파악하기 위해 알아야 할 더 중요할 개념은 RAM이다. 때문에 메모리는 보통 RAM을 지칭한다.

  • 현재 실행되는 프로그램 (= 프로세스)의 명령어와 데이터를 저장하는 부품
  • 프로그램이 실행되려면 반드시 해당 프로그램의 데이터와 명령어가 메모리에 저장되어 있어야 한다.
    • 운영체제의 페이징 (Paging)을 다루면 실행되는 프로그램의 데이터와 명령어가 전부 다는 저장되지 않아도 됨
  • 저장된 명령어와 데이터의 위치가 정돈되어 있어야 빠르게 접근할 수 있기 때문에 주소라는 개념이 사용된다.

메모리와 CPU의 상호작용 예시
1️⃣ 제어장치는 1번지에 저장된 명령어를 읽어들이기 위해 메모리에 메모리 읽기 제어 신호 보냄2️⃣ 메모리는 1번지에 저장된 명령어를 CPU에 건네주고 이 명령어는 레지스터에 저장됨. 제어장치는 읽어들인 명령어를 해석한 뒤 내용처럼 3번지와 4번지에 저장된 데이터가 필요하다고 판단하며, 해당 번지에 있는 데이터들을 읽어들이기 위해 메모리 읽기 제어 신호를 보낸다.3️⃣ 메모리는 3번지와 4번지에 저장된 데이터를 CPU에 건네주고, 이 데이터들은 서로 다른 레지스터에 저장된다. ALU는 읽어들인 데이터들로 연산을 수행하며, 계산의 결괏값 또한 다른 레지스터에 저장된다.

3️⃣ 보조기억장치

  • 메모리는 가격이 비싸 저장 용량이 적음
  • 전원이 꺼지면 저장된 내용을 잃음
  • 보조기억장치는 위 문제점들을 해결해주는 저장 장치
  • ex: 하드 디스크, SSD, CD-ROM
  • 메모리실행할 정보를, 보조기억장치보관할 정보를 저장한다.

4️⃣ 입출력장치

  • 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치

하드 디스크, SSD 등도 컴퓨터 외부에 연결되어 컴퓨터 내부의 정보를 교환하는 것 아닌가?
⇒ 보조기억장치는 관점에 따라 입출력장치의 일종으로 볼 수 있다. 보조기억장치와 입출력장치를 주변장치 (컴퓨터 주변에 붙어있는 장치)로 통칭하기도 한다.
보조기억장치는 모니터, 마우스, 키보드와 같은 일반적인 입출력장치에 비해 메모리를 보조하는 특별한 기능을 수행하는 입출력장치라고 생각해도 된다.

메인보드 (마더보드)

  • 위의 네 가지 핵심 부품들을 연결할 수 있는 판이다.

시스템 버스

  • 메인보드에 연결된 부품들은 버스를 통해 서로 정보를 주고받을 수 있다.
  • 컴퓨터 내부에는 다양한 버스가 있는데, 컴퓨터의 네 가지 핵심 부품을 연결하는 가장 중요한 버스시스템 버스라 한다.
  • 주소 버스 (address bus): 주소를 주고받는 통로
  • 데이터 버스 (data bus): 명령어와 데이터를 주고받는 통로
  • 제어 버스 (control bus): 제어 신호를 주고받는 통로
  • 앞의 예시를 더 깊게 보면, 제어 버스로 메모리 읽기 제어 신호를 보내면서 주소 버스로 읽고자 하는 주소를 내보낸다. 그러면 메모리는 데이터 버스로 CPU가 요청한 주소에 있는 내용을 보내게 된다.

미션

  • 51p 확인 문제 3번: 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다.
    • 메모리는 현재 실행되는 프로그램 (= 프로세스)의 명령어와 데이터를 저장하는 부품이라고 하였습니다. 때문에 프로그램이 실행되려면 관련 정보가 메모리에 저장되어 있어야 합니다.

부족하거나 보완할 점이 있다면 댓글 부탁드립니다 😃

profile
개발을 좋아하는 워커홀릭

0개의 댓글