컴퓨터 구조

임정빈·2024년 4월 3일

운영체제를 공부한다는 것은 항상 귀찮고 망설여지게 된다. 하지만 개발을 하다 보면 개발자를 하기 위해서는 기본 지식의 필요성을 느끼게 된다. 학교 시험이나 자격증 시험으로 겉핥기식 공부를 해왔지만, 이번 기회에 제대로 공부를 해보려고 한다.




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

지금껏 컴퓨터의 구성 요소와 작동 원리를 몰라도 프로그래밍 언어의 문법만 알면 프로그램을 개발하고 실행하는 데 전혀 지장이 없었다.

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



1.1 문제 해결

같은 코드를 작성했는데도 어떤 컴퓨터에서는 코드가 제대로 작동하고, 어떤 컴퓨터에서는 제대로 작동하지 않는 상황이 의외로 빈번하게 발생한다.

이런 상황은 실무에서도 종종 발생하는데, 개발할 때는 문제 없이 작동했던 코드가 실제 사용자들에게 선보이는 자리에서는 작동하지 않는 상황이 비일비재하다.

컴퓨터 구조를 이해하고 있다면 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있다.

이러한 역량이 업무 수행에 필요하다는 것을 기업들도 알고 있기 때문에 각종 기술 면접에서 컴퓨터 구조에 관한 소양을 검증하거나 반드시 알아야 하는 분야로 명시하기도 한다.



1.2 성능, 용량, 비용

서버 컴퓨터마다 사용하는 CPU와 메모리가 다르고 그에 따라 성능, 용량, 비용이 다양하다.

클라우드 서비스를 이용하더라도 어떤 CPU를 쓸지, 어떤 메모리를 사용할지 등을 직접 판단하고 현명하게 선택해야 한다.

개발자가 개발한 프로그램이 어떤 환경에서 어떻게 작동하는지는 개발자가 가장 잘 이해하고 있어야 하고, 프로그램을 위한 최적의 컴퓨터 환경을 스스로 판단할 수 있어야 한다.

성능, 용량, 비용 문제는 프로그래밍 언어의 문법만 알아서는 해결하기 어렵다.




2. 컴퓨터 구조의 큰 그림



2.1 컴퓨터가 이해하는 정보

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

데이터(data): 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
(컴퓨터와 주고받는 정보나 컴퓨터에 저장된 정보라고도 함)

명령어(instruction): 데이터를 움직이고 컴퓨터를 작동시키는 정보



2.2 컴퓨터의 4가지 부품

  • CPU(Central Processing Unit): 중앙 처리 장치
  • 메모리: 주기억장치(main memory)
  • 보조기억장치(secondary storage)
  • 입출력장치: input/output(I/O) device

주기억장치는 크게 RAM(Random Access Memory)과 ROM(Read Only Memory)가 있다.
메모리라는 용어는 보통 RAM을 칭한다.



  1. 가장 큰 사각형이 메인보드다.
  2. 메인보드 안에 시스템 버스(양방향 수직 화살표)가 있다.
  3. CPU 내부에는 ALU(산술논리연산장치), 제어장치와 여러 레지스터가 있다.
    CPU는 메인보드 내 시스템 버스와 연결되어 있다.
  4. 메모리는 메인보드 내 시스템버스와 연결되어 있다.
  5. 보조기억장치는 메인보드 내 시스템버스와 연결되어 있다.
  6. 모니터, 키보드, 마우스 등은 메인보드 내 시스템버스와 연결되어 있다.
    이들을 입출력장치라고 부른다.


2.2.1 메모리

  • 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다.
  • 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.
  • 메모리에 저장된 값의 위치는 주소로 알 수 있다.
    • 메모리에는 저장된 값에 빠르고 효율적으로 접근하기 위해 주소라는 개념이 사용된다.



2.2.2 CPU

CPU는 메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어를 해석하고, 실행하는 부품이다.

CPU의 주요 기능 3가지

  • 산술논리연산장치(ALU: Arithmetic Logic, Unit)
    계산만을 위해 존재하는 부품.
    컴퓨터 내부에서 수행되는 대부분의 계산은 ALU가 도맡아 수행한다.

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

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

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


2.2.3 보조기억장치

메모리의 치명적인 단점

  • 가격이 비싸 저장 용량이 적다.
  • 전원이 꺼지면 저장된 내용을 잃는다.

보조기억장치: 메모리보다 크고 전원이 꺼져도 저장된 내용을 잃지 않는 메모리를 보조할 저장 장치

하드 디스크, SSD, USB 메모리, DVD, CD-ROM과 같은 저장 장치가 보조기억장치의 일종이다.

컴퓨터 전원이 꺼져도 컴퓨터에 파일이 남아있었던 이유는 우리가 파일을 보조기억장치에 저장했기 때문이다.

  • 메모리가 현재 '실행되는' 프로그램을 저장한다면, 보조기억장치는 '보관할' 프로그램을 저장한다고 생각하면 된다.


2.2.4 입출력장치

입출력장치: 마이크, 스피커, 프린터, 마우스, 키보드처럼 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치

보조기억장치는 관점에 따라 입출력장치의 일종으로 볼 수 있다.

보조기억장치와 입출력장치는 '컴퓨터 주변에 붙어있는 장치'라는 의미에서 주변장치(peripheral device) 라 통칭하기도 한다.

다만 보조기억장치는 모니터, 마우스, 키보드와 같은 일반적인
입출력장치에 비해 메모리를 보조한다는 특별한 기능을 수행하는 입출력장치다.



2.2.5 메인보드와 시스템 버스

컴퓨터의 핵심 부품들은 모두 메인보드(main board)라는 판에 연결된다.

마더보드(mother board)라고도 부르며 메인보드에는 여러 컴퓨터 부품들을 부착할 수 있는 슬롯과 연결 단자가 있다.



버스

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

컴퓨터 내부에는 다양한 종류의 통로(버스)들이 있는데, 여러 버스 가운데 컴퓨터의 네 가지 핵심 부품을 연결하는 가장 중요한 버스는 시스템 버스(system bus)다.

시스템 버스의 구성

  • 주소 버스(adress bus): 주소를 주고받는 통로
  • 데이터 버스(data bus): 명령어와 데이터를 주고받는 통로
  • 제어 버스(control bus): 제어 신호를 주고받는 통로

CPU의 작동 원리

  • 메모리 속 명령어를 읽을 때

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



마치며

컴퓨터는 친숙하지만 CPU나 메모리라는 단어를 들어본 정도였었는데, 이번 기회에 어느정도 알게 되었다.
컴퓨터의 크게 4가지 구조 - CPU, 메모리, 보조기억장치, 입출력장치


출처
혼자 공부하는 컴퓨터 구조+운영체제

profile
신입개발자

0개의 댓글