Programming/Computer Science

[혼공학습단 9기] 혼.공.컴.운. - 1. 컴퓨터 구조 시작하기(미션 포함)

리버김 2023. 1. 8.

# 기본 미션

p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기

3. 다음 설명의 빈칸에 들어갈 알맞은 내용을 써 보세요.

프로그램이 실행되려면 반드시 ()에 저장되어 있어야 합니다.

 

답: 메모리

해설: 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 저장된 값에 빠르고 효율적으로 접근하기 위해 주소라는 개념이 사용된다. 

 

3. 1101(2)의 음수를 2의 보수 표현법으로 구해 보세요.

 

답: 0011(2)

해설: 컴퓨터는 이진수만 이해할 수 있기 때문에, 마이너스 부호를 사용하지 않고 0과 1만으로 음수를 표현해야 한다.

그래서 사용하는 것이 '보수'를 사용하는 것이다. 2의 보수는 어떤 수를 그보다 큰 2의 제곱수에서 뺀 값을 의미한다.

쉬운 풀이법은 모든 0과 1을 반대 수로 뒤집고, 거기에 1만 더하면 된다. 따라서 원래 수인 1101(2)의 수들을 모두 뒤집으면 0010(2)이고, 여기에 1을 더하면 답은 0011(2)이다.

 

# 선택 미션

p. 100의 스택과 큐의 개념을 정리하기

스택과 큐는 데이터 관리 방식의 종류다. 각각 후입선출, 선입선출의 방식으로 관리한다. 자료구조 시간에 기본적으로 배우는 개념이기도 하다.

스택(stack)

스택은 한쪽 끝이 막혀 있는 통과 같은 저장 공간이다. 생소한 용어라기 보다는 책을 차곡차곡 아래부터 쌓은 것을 보고도 스택이라고 할 수 있다. 이론상으로 바닥에는 접근할 수 없고, 맨 위에서만 추가 혹은 제거할 수 있기 때문에 후입선출식의 데이터 관리 방식이다. 영어로는 Last In, First Out으로 LIFO라고 많이 부른다.

PUSH, POP

Push는 스택에 새로운 데이터를 저장하는 명령어, Pop은 스택에 저장된 데이터를 꺼내는 명령어다.

큐(Queue)

큐는 양쪽이 뚫려 있는 통과 같은 저장 공간이다. 단, 데이터를 넣는 방향과 꺼내는 방향은 양쪽 중 각각 하나씩 고정되어 있다. 한 쪽으로는 데이터를 저장하고, 다른 한 쪽으로는 먼저 저장한 순서대로 데이터를 빼내는 거다.

큐 역시 어려운 용어가 아니라 놀이동산과 같은 곳에 줄을 서 있는 대기열을 보고 큐라고 한다. 한 쪽으로는 줄을 서고, 한 쪽으로는 입장을 하니 큐 개념과 똑같다. 영어로는 First In, First Out, FIFO라고 부른다.

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

컴퓨터 구조를 이해하면 얻을 수 있는 이점에 대해 살펴보자.

문제 해결

개발할 떄는 문제 없던 코드가 실제로 사용자들에게 선보일 때 작동하지 않는 상황이 비일비재하다. 컴퓨터라는 기계를 깊이 이해하지 못하면  컴퓨터 구조를 이해하고 있다면 문제 상황을 빠르게 진단하거나 문제 해결의 실마리를 다양하게 찾을 수 있다.

컴퓨터 구조 지식을 갖춘다면, 문법에 맞는 코드만 작성할 줄 아는 개발자를 넘어 다양한 문제를 스스로 해결할 줄 아는 개발자를 넘어 다양한 문제를 스스로 해결할 줄 아는 개발자가 될 수 있는 거다.

성능, 용량, 비용

코드만 작성하는 것이 개발의 전부가 아니다. 내가 개발할 환경인 컴퓨터나 클라우드 서비스를 고르는 것은 실제 개발 과정만큼이나 중요하다. 이 때 성능, 용량, 비용과 같은 요소들을 고려해 골라야 한다. 컴퓨터 구조에서 배우는 내용은 이런 고려사항들과 직결되어 있다.

 

01-2 컴퓨터 구조의 큰 그림

컴퓨터 구조의 핵심은 컴퓨터가 이해하는 정보, 컴퓨터의 네 가지 핵심 부품 두 가지다.

컴퓨터가 이해하는 정보

컴퓨터는 0과 1로 표현된 정보만을 이해한다.

첫째, 명령어

데이터를 움직이고 컴퓨터를 작동시키는 정보

둘째, 데이터

명령어의 재료

컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보

컴퓨터의 4가지 핵심 부품

세상에는 다양한 종류의 컴퓨터가 있다. 아두이노, 라즈베리 파이, 스마트폰, 노트북, 데스크톱, 서버 컴퓨터...

그러나 외관과 용도를 막론하고 컴퓨터를 다루는 핵심 부품은 크게 다르지 않다.

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

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

 

메모리

현재 실행되는 프로그램의 명령어데이터를 저장하는 부품.

즉, 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.

메모리에 저장된 값의 위치는 주소로 알 수 있다.

CPU

컴퓨터의 두뇌로, 메모리에 저장된 명령어를 읽어 들이고 읽어 들인 명령어를 해석하고 실행하는 부품이다.

CPU 내부 구성 요소 중 중요한 세 가지인 산술논리연산장치(Arithmetic Logic Unit, ALU), 레지스터, 제어장치에 대해 알아보자.

 

ALU: 컴퓨터 내부에서 수행되는 계산의 대부분을 수행한다.

레지스터: CPU 내부의 작은 임시 저장 장치로, 프로그램을 실행하는 데 필요한 값들을 임시로 저장한다.

제어장치: 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치. 제어 신호는 메모리 읽기, 메모리 쓰기로 나뉜다.

 

[CPU가 명령어를 실행하는 flow]

  1. 제어장치가 1번지에 저장된 명령어를 읽기 위해 메모리에 '메모리 읽기' 제어 신호를 보낸다.
  2. 메모리가 명령어를 CPU에 건네주면, 명령어는 레지스터에 저장된다. 제어장치가 명령어를 해석한 뒤 3, 4번지의 데이터가 필요하다고 판단하고 다시 메모리 읽기 제어 신호를 보낸다.
  3. 메모리는 해당 데이터를 CPU에 건네주고, 이 데이터들은 서로 다른 레지스터에 저장된다. ALU가 이 데이터들로 연산을 수행하고, 계산의 결괏값은 레지스터에 저장된다. 이로써 첫 번째 명령어의 실행이 끝난다.

보조기억장치

메모리는 가격이 비싸 용량이 적고, 전원이 꺼지면 내용을 잃는다는 단점이 있다. 이를 보완하기 위한 저장 장치가 보조기억장치다. 메모리는 현재 실행되는 프로그램을 저장한다면, 보조기억장치는 보관할 프로그램을 저장한다. 

보조기억장치의 종류에는 하드 디스크, SSD, USB 메모리, DVD, CD-ROM 등이 있다. 

입출력장치

컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치를 의미한다. 마이크, 스피커, 프린터, 마우스, 키보드 등이 있다. 

보조기억장치는 입출력장치의 하나지만, 메모리를 보조한다는 특별한 기능을 수행하는 입출력장치다.

메인보드와 시스템 버스

메인보드는 마더보드라고도 하고, 여러 컴퓨터 부품을 부착할 수 있는 슬롯과 연결 단자가 있다. 지금까지 설명한 컴퓨터의 핵심 부품들은 모두 메인보드에 연결된다.

 

버스: 메인보드에 연결된 부품들이 서로 정보를 주고받을 수 있도록 해주는 통로다.

시스템 버스: 여러 버스들 중 컴퓨터의 네 가지 핵심 부품을 연결하는 가장 중요한 버스.

 

[시스템 버스의 구성]

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

[CPU의 작동 예시]

  1. CPU가 제어 버스로 '메모리 읽기' 제어 신호를 보냄
  2. 주소 버스로 읽고자 하는 주소를 내보냄
  3. 메모리는 데이터 버스로 CPU가 요청한 주소에 있는 내용을 보냄

 

반응형

댓글