개발 여행/CS

[혼공컴운] Chapter 1. 컴퓨터 구조 시작하기

찰나의꿈 2023. 4. 16. 23:12

개인적으로 정리하는 강의록 목적이다.

 

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

왜 코드나 짜는 개발자가 굳이 컴퓨터 구조를 알아야 하는가?

문제 해결

똑같은 코드라도 사람마다, 장비마다 패턴이 다른 경우가 있다. 컴퓨터 내부를 들여다볼 수 있어야 한다.

성능, 용량, 비용 고려

웹사이트를 운영하더라도 서버의 사양을 알아야 한다.

데스크탑보다 더 어렵다

서버의 사용량 등을 고려하여 개발자가 스스로 사양을 선택할 수 있어야 한다. 클라우드도 상황은 마찬가지이다. 코어, 메모리 골라야 한다.

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

전체적인 그림을 그려서 이해하는 데에 도움을 주자.

 

컴퓨터가 이해하는 정보

데이터: 숫자, 문자, 이미지, 동영상과 같은 정적인 정보. 내부에 저장된 정보를 통칭하기도 한다.

이진법을 사용하는 컴퓨터가 어떻게 숫자, 문자를 표현하는지(데이터를 저장하는지) 알게 된다.

 

명령어: 컴퓨터를 실질적으로 움직이는 정보. 데이터를 활용할 수 있다.

파랑색이 데이터, 빨강색이 명령어.

예: 1과 2더하라.

예: Hello World출력하라.

 

 

컴퓨터의 네 가지 핵심 부품

CPU, 메모리, 보조기억장치, 입출력장치

+시스템 버스(통로)

 

메모리: 현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장. 꼭 모두가 올라와있을 필요는 없지만(페이징) 올라와있는 것들은 전부 실행중인 것들.

주소를 통해 필요로 하는 데이터, 명령어가 메모리의 어느 위치에 있는지 알 수 있다.

 

CPU: 명령어를 읽어들여서 해석하고 실행. 대체로 내부 구성 요소를 3가지(산술논리연산장치/ALU, 레지스터, 제어장치/CU 로 본다.)

ALU는 산술, 논리 연산을 진행하는 계산 회로의 모임이다.

레지스터는 CPU 내의 작은 저장장치다.

제어장치는 컴퓨터 부품을 관리하는 전기 신호인 제어 신호를 내보내고 명령어를 해석한다.

 

 

간단한 예시)

제어장치를 통해 메모리에서 읽기 신호를 보낸다.

메모리에서 읽어들인 명령어를 레지스터에 저장하고, 제어장치를 통해 명령어를 해석한다.

해석한 명령어를 기반으로 ALU에 계산을 시키면 그 결과도 레지스터에 저장된다.

이러한 과정의 반복.

 

 

보조기억장치: 저렴한 비용으로 내용을 반영구적으로 저장하고자 함.

 

입출력장치: 컴퓨터 외부와 연결되어 정보를 교환할 수 있는 장치

이 개념만 놓고 보면 보조기억장치와 구분이 안되는데(주변장치로 통칭하기도), 메모리를 보조하냐 마냐로 구분하자.

 

메인보드: 핵심 부품들을 연결해주는 판.

버스: 각 부품들의 장치 간 정보가 교환되도록 연결해주는 통로

시스템 버스: 네 가지 핵심 부품을 연결하는 가장 중요한 버스

시스템 버스의 구성

주소 버스, 데이터 버스, 제어 버스

각 신호 별로 시스템 버스 내 다른 통로를 타고 이동한다.

 

정리

컴퓨터가 이해하는 것 = 데이터 + 명령어

4가지 구성 요소: 메모리, CPU, 보조기억장치, 입출력장치

구성 요소 간 연결 통로(중 제일 중요한 것): 시스템 버스