본문 바로가기

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

01 - 컴퓨터 구조 시작하기

컴퓨터 구조는 실력 있는 개발자가 되려면 반드시 알아야 하는 기본 지식이다.

프로그래밍 언어의 문법만 알고 있는 사람에게 컴퓨터란 코드를 입력하면 알아서 결과물을 툭 내놓는 미지의 대상일 뿐이다. 결국 컴퓨터란 기계에 코드를 입력만 할 수 있을 뿐 그 이상을 하기 어렵다.

 

컴퓨터 구조를 이해하고 있다면 문제 상황을 빠르게 진단하고, 문제 해결의 실마리를 다양하게 찾을 수 있다. 컴퓨터 내부를 거리낌 없이 들여다보며 더 좋은 해결책을 고민할 것이다.

이것은 미지의 대상이 아닌 분석의 대상으로 컴퓨터를 바라볼수있다는 것이다.

 

웹사이트 서비스를 제공하기 위해서는 서버 컴퓨터가 필요하다.

이러한 서버 컴퓨터는 가격별로 천차만별이다. 개인 컴퓨터를 산다면 가격, 최신 기종을 기준으로 삼아도 문제가 되지 않지만 서버 컴퓨터를 고를 때는 문제가 된다.

이럴 때는, 성능, 용량, 비용 에 대한 이해가 높아야하고 이것은 프로그래밍 언어의 문법만 알아서는 해결하기 어렵다. 사용자가 많은 프로그램 일수록 성능,용량,비용이 고려된다. 그래서 컴퓨터 구조를 아는 것은 매우 중요하다. 컴퓨터 구조와 성능, 용량, 비용은 직결된다.

핵심 포인트

컴퓨터 구조를 이해하면 문제 해결 능력이 향상된다.

컴퓨터 구조를 이해하면 문법만으로는 알기 어려운 성능/용량/비용 을 고려하여 개발 할 수 있다.

 

컴퓨터 구조 지식은 크게 2가지로 나뉜다.

  1. 컴퓨터가 이해하는 정보
  2. 컴퓨터의 네 가지 핵심 부품

컴퓨터가 이해하는 정보

컴퓨터는 0과 1로 표현된 정보만을 이해한다. 그리고 0과 1로 표현되는 정보에는 크게 2종류가 있는데, 데이터와 명령어 이다.

컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보를 가리켜 데이터라고 한다. 컴퓨터와 주고받는 정보나 컴퓨터에 저장된 정보를 가리킬 때 데이터라 통칭하기도 한다.

컴퓨터를 실질적으로 작동시키는 더 중요한 정보는 명령어이다. 데이터는 명령어 없이는 아무것도 할 수 없는 정보 덩어리일 뿐이지만, 명령어는 데이터를 움직이고 컴퓨터를 작동시키는 정보이기 때문이다.

예로, 1과 2는 데이터이고 ‘1과 2를 더하라’ 는 명령어이다. ‘안녕하세요’ 는 데이터이고 ‘화면에 출력하라, 안녕하세요를’ 은 명령어이다.

cat.jpg 는 데이터이며 USB 메모리에 저장하라, cat.jpg 를 은 명령어이다.

명령어는 컴퓨터를 작동시키는 정보, 데이터는 명령어를 위해 존재하는 일종의 재료이다.

컴퓨터의 4가지 핵심 부품

컴퓨터 종류는 다양하다. 아두이노, 라즈베리 파이, 스마트폰, 컴퓨터, 노트북, 서버 컴퓨터 등등

그러나 이러한 컴퓨터들의 핵심 부품은 크게 다르지 않다.

  1. 중앙처리장치 - CPU
  2. 주기억장치 - 메모리
  3. 보조기억장치
  4. 입출력장치

이 4 가지 부품의 역할만 이해하고 있어도 컴퓨터의 작동 원리를 대부분 파악 할 수 있다.

  • 주기억장치의 종류메모리라는 용어는 보통 RAM을 지칭한다. 컴퓨터의 작동 원리를 파악하기 위해 알아야하는 더 중요한 주기억장치는 RAM이다.
  • 주기억장치에는 크게 RAM 과 ROM 이 있다.

  1. 가장 큰 사각형은 메인보드
  2. 메인보드 안에 시스템 버스가 있다
  3. CPU 내부에는 ALU(산술논리연산장치), 제어장치와 여러 레지스터가 있다
  4. 메모리는 메인보드 내 시스템 버스와 연결되어 있다.
  5. 보조기억장치는 메인보드 내 시스템 버스와 연결되어 있다.
  6. 입출력 장치는 시스템 버스와 연결되어 있다.
  • 메모리
  • 컴퓨터가 빠르게 작동하기 위해서는 메모리 속 명령어와 데이터가 중구난방으로 저장되면 안된다. 그래서 메모리에는 저장된 값에 빠르고 효율적으로 접근하기 위해 주소라는 개념이 있다. 주소로 메모리 내 원하는 위치에 접근 가능하다.당연히 이것은 이해를 돕기 위한 예로 실제로 이와 같이 저장되는 것은 아니다.메모리는 6장에서 자세히 배운다.
    1. 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다.
    2. 메모리는 현재 실행되는 프로그램의 명려어와 데이터를 저장한다.
    3. 메모리에 저장된 값의 위치는 주소로 알 수 있다.
  • 명령어와 데이터는 모두 0과 1로 표현되기 때문에 겉보기에는 0과 1로 이루어진 데이터를 저장한 것처럼 보인다.
  • 예로) 1번 2번 주소에 명령어를 , 3번 4번 주소에 데이터를 저장할 수 있는 것이다.
  • 컴퓨터가 이해하는 정보는 명령어와 데이터라고 했다. 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 즉, 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.

 

  • CPU

CPU의 내부 구성 요소

  1. 산술논리연산장치 - ALU
  2. 레지스터 - REGISTER
  3. 제어장치 - CONTROL UNIT

ALU 는 계산만을 위해 존재하는 부품이다. 컴퓨터 내부에서 수행하는 대부분의 계산은 ALU가 도맡아 한다.제어장치는 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치이다.

  • CPU 가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 메모리 읽기라는 제어 신호를 보낸다.
  • CPU 가 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 메모리 쓰기라는 제어 신호를 보낸다.

간단한 CPU 실행 흐름

  1. 메모리의 저장된 명령어를 CPU의 제어장치가 읽어 들이기 위해 메모리 읽기 제어 신호를 보냄
  2. 메모리의 명령어를 받아서 레지스터에 저장하고, 해당 명령어를 제어 장치가 해석함
  3. 명령어에 필요한 데이터를 메모리에서 가져오기 위해 해당 주소에 대한 메모리 읽기 제어 신호를 다시 보냄
  4. 필요한 데이터들을 메모리에서 건네주고 레지스터에 저장됨
  5. ALU는 명령어 실행에 필요한 연산을 수행한 후 결과 값을 레지스터에 저장
  6. 다음, 명령어가 결과 값을 반환하길 원한다면 해당 결과 값을 제어 장치가 메모리 쓰기로 레지스터에서 메모리로 건네줌
  • CPU 는 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치
  • CPU 내부에는,ALU, 레지스터, 제어장치가 있다.
  • ALU 는 계산하는 장치, 레지스터는 임시 저장 장치, 제어장치는 제어 신호를 발생시키고 명령어를 해석하는 장치
  • 제어 신호란 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호이다.
  • 레지스터는 CPU 내부의 작은 임시 저장 장치이다. 프로그램을 실행하는 데 필요한 값들을 임시로 저장한다. CPU 안에는 여러 개의 레지스터가 존재하고 각기 다른 이름과 역할을 가지고 있다.
  • CPU는 메모리에 저장된 명령어를 읽어 들이고, 해당 명령어를 해석, 실행하는 부품이다.

 

  • 보조기억장치
    1. 가격이 비싸 저장 용량이 적다
    2. 전원이 꺼지면 저장된 내용을 잃는다
    이에 메모리보다 크기라 크고 전원이 꺼져도 저장된 내용을 잃지 않는 메모리를 보조할 저장 장치가 필요한데, 이것이 보조기억장치이다.보조기억장치는 보관할 프로그램을 저장한다.
  • 하드 디스크, SSD, USB 메모리, DVD, CD-ROM 과 같은 저장 장치가 보조기억장치의 일종이다.
  • 메모리는 실행되는 프로그램의 명령어와 데이터를 저장하는데 2가지 약점이 있다.

 

  • 입출력장치
  • 보조기억장치는 입출력장치가 아닌가?
  • 맞다. 그래서 주변장치라고 부르기도 한다. 다만 보조기억장치는 모니터, 마우스, 키보드와 같은 일반적인 입출력장치에 비해 메모리를 보조한다는 특별한 기능을 수행하는 입출력장치이다.
  • 마이크, 스피커, 프린터, 마우스, 키보드처럼 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치를 의미한다.

메인보드와 시스템 버스

위에 설명한 핵심 부품들은 모두 메인보드라는 판에 연결된다. 마더보드라고도 부른다.

메인보드에는 컴퓨터 부품을 부착할 수 있는 슬롯과 연결 단자가 있다.

메인보드에 연결된 부품들은 서로 정보를 주고 받을 수 있다. 이 메인보드 내부에 버스라는 통로가 있기 때문이다.

이 중 컴퓨터의 4 가지 핵심 부품을 연결하는 가장 중요한 버스는 시스템 버스 이다.

시스템 버스주소 버스, 데이터 버스, 제어 버스로 구성되어 있다.

  • 주소 버스 - 주소를 주고 받는 통로
  • 데이터 버스 - 명령어와 데이터를 주고 받는 통로
  • 제어 신호를 주고 받는 통로

(CPU 의 제어장치는 제어 버스를 통해 제어 신호를 보낸다.)

CPU 가 메모리 속 명령어를 읽어 들이기 위해 제어장치에서 메모리 읽기 제어 신호를 보낸다. 그런데 이때 CPU는 메모리를 읽기 위해 제어 신호만 내보내지 않는다.

명령어가 존재하는 메모리 주소를 알아야하기 때문에 제어 버스로 ‘메모리 읽기’ 제어 신호를 보내고, 주소 버스로 읽고자하는 주소를 내보낸다. 그 후, 메모리데이터 버스CPU 가 요청한 주소에 있는 내용을 보낸다.

메모리에 어떤 값을 저장할 때에도 , 데이터 버스를 통해 메모리에 저장할 값과 주소 버스를 통해 저장할 주소, 제어 버스를 통해 메모리 쓰기 제어 신호를 내보낸다.

 

 

'CS > 혼자 공부하는 컴퓨터구조와 운영체제' 카테고리의 다른 글

05 - CPU의 성능 향상 기법  (0) 2024.06.01
04 - CPU의 작동 원리  (1) 2024.05.30
03 - 2 명령어 2  (1) 2024.02.14
03 - 1 명령어  (0) 2024.02.14
02 - 데이터  (0) 2024.02.08