🛠 컴퓨터의 구성요소

컴퓨터의 구성요소를 살펴보기 전 컴퓨터란 무엇인가에 대하여 살펴보자.

컴퓨터란?
입력받은 데이터를 정해진 규칙대로 처리해서 처리 결과를 저장하고 출력하는 전자 장치이다.

이 정의를 나누어 분석해 본다면 아래와 같이 정리해 볼 수 있다.

  • '정해진 규칙대로' -> 소프트웨어
  • '입력받은 데이터를 처리해서 처리 결과를 저장하고 출력하는 장치이다.' -> 하드웨어

즉, 컴퓨터는 소프트웨어하드웨어로 구성되며, 이 둘의 상호작용을 통해 동작한다.

🤔 소프트웨어란?

물리적인 형태가 존재하지 않는 컴퓨터의 구성요소로서, 하드웨어가 어떻게 동작해야하는지 규정해놓은 명령어의 집합이다.

소프트웨어는 크게 2가지로 분류된다.

  • 시스템 소프트웨어(System Software)
    • 시스템 소프트웨어는 응용 소프트웨어를 실행하기 위한 일종의 플랫폼 역할을 수행하며, 하드웨어와 직접적으로 소통하며 하드웨어 장치들이 제대로 동작할 수 있도록 해준다.
      • 응용 소프트웨어의 실행 환경이다.
        • ex) Mac, Windows, Linux와 같은 운영체제 및 Node.js, JRE와 같은 런타임 환경
      • 하드웨어 장치를 관리한다.
        • ex) 키보드 드라이버, 마우스 드라이버, USB 드라이버와 같은 각종 장치 드라이버들
  • 응용 소프트웨어(Application Software)
    • 응용 소프트웨어는 소프트웨어에서 시스템 소프트 웨어를 제외한 모든 소프트웨어를 의미한다. 줄여서 애플리케이션 및 앱이라고도 하며, 일반적으로 프로그램이라고 불린다.

🤔 하드웨어란?

컴퓨터를 구성하는 기계적 장치들의 집합을 의미한다.
하드웨어는 중앙처리장치, 기억장치, 입력장치, 출력장치로 분류되고 각 장치들은 시스템 버스로 연결되어 있다.

  • 중앙처리장치 (Central Processing Unit, CPU)

    • CPU는 프로그램의 실행과 데이터 처리를 담당하는 컴퓨터의 핵심장치로, 프로세서라고도 한다. CPU는 제어장치, 연산장치, 레지스터로 구성되며 각 요소의 동작이 어우러져 기능을 수행한다.
      • 제어장치
        • CPU의 모든 동작과 데이터 흐름을 통제, 관리한다.
        • 운영체제와 소통하며 컴퓨터의 자원을 관리한다.
      • 연산장치
        • 프로그램이 기술되어져 있는 명령어를 수행한다.
        • 코드를 실질적으로 실행시키는 장치이다.
      • 레지스터
        • CPU 내에 존재하는 작고 빠른 기억장치이다.
        • 연산장치의 동작에 필요한 데이터들을 임시적으로 보관하며 제공한다.
  • 기억장치 (Memory Device)

    • 기억장치는 저장장치라고도 하며, CPU의 동작에 필요한 데이터들을 장기적, 단기적으로 보관한다. 여기서 장기적으로 저장하는 장치를 보조기억장치라고 하며, 단기적으로 데이터를 저장하는 장치를 주기억장치라고 한다.
      • 보조기억장치
        • 컴퓨터에게 필요한 모든 정보를 반영구적 저장
        • 큰 용량의 데이터를 저장할 수 있지만, 데이터를 읽고 쓰는 속도가 느리다.
        • CPU의 연산속도는 엄청나게 빠른 반면, 보조기억장치는 느리기 때문에 CPU 보조기억장치와 직접적으로 소통하지 않는다.
          • ex) SSD(Solid State Drive), HDD(Hard Disk Drive)
      • 주기억장치
        • 컴퓨터가 프로그램을 수행하는 동안 필요한 모든 데이터를 저장
        • 큰 용량 데이터를 저장할 수 없지만, 데이터를 읽고 쓰는 속도가 빠르다.
        • CPU의 연산속도를 어느정도 따라 잡을 수 있을 정도로 빠르기 때문에 CPU는 주기억장치와 직접적으로 소통한다.
          • ex) RAM(Random Access Memory), ROM(Read Only Memory)
      • 캐시 메모리
        • 캐시 메모리란 한번 CPU가 사용한 데이터와 관련된 데이터 중, 재사용성이 높은 데이터를 주기억장치로부터 미리 불러와서 대기시켜놓는 역할을 한다.
    • 기억장치의 계층 구조
  • 입력장치 (Input Device)

    • 사용자로부터 컴퓨터 내부로 데이터를 입력 받는 장치이다.
      • ex) 키보드, 마우스, 마이크 등
  • 출력장치 (Output Device)

    • 입력장치와 반대로, 출력장치는 컴퓨터 내부로부터 사용자에게 사람이 감각할 수 있는 형태로 데이터를 출력해주는 장치이다.
      • ex) 모니터, 스피커, 프린터 등이 출력장치에 해당한다.
  • 시스템 버스(System Bus)

    • 시스템 버스란 CPU를 포함한 각 하드웨어 장치 간의 통로이다. 즉, 하드웨어 장치를 물리적으로 연결한 전선을 의미하기 때문에 시스템 버스 또한 하드웨어에 포한된다.

🧐 그렇다면 컴퓨터의 동작은 어떻게 이루어 지는 걸까?

예를 들어 컴퓨터에 계산기를 켜본다고 가정하자.
계산기를 켜면 운영체제보조기억장치에 저장되어 있던 계산기 프로그램을 주기억장치RAM에 로드시킨다. 이 과정을 로딩(Loading)이라고 한다.

즉, 로딩이란 CPU가 작업할 수 있도록 보조기억장치 -> 주기억장치 로 프로그램 파일을 옮겨오는 과정을 의미한다.

로딩이 완료되면 계산기가 모니터상에 출력되어 나타나는데, 이렇게 실행중인 프로그램을 프로세스 라고 한다.
프로세스란, 메모리에 로드되어 실행 중인 프로그램들을 나타낸다.

이제 우리는 키보드나 마우스와 같은 입력장치를 통해 계산기에 데이터를 입력할 수 있다. 1 + 1 이라는 데이터를 입력하고 엔터를 누른다고 가정해보면,
CPU는 1 + 1을 계산기 프로그램의 소스코드에 작성된대로 해석하고, 소스코드에 작성된 명령어들을 적용하여 계산을 시작한다.

계산이 완료되면 계산 결과는 주기억장치에 저장되며, 모니터를 통하여 우리에게 보여진다.

👩🏻‍💻 프로그래밍 관련 개념설명

  • 컴파일이란?

    • 컴퓨터는 프로그래밍 언어로 작성된 소스코드를 이해하지 못한다. 그래서 소스코드를 작성한 후 컴퓨터에게 내용을 전달할려면 소스코드를 기계어 코드로 변환시켜주어야한다. 이처럼 프로그래밍 언어로 작성된 소스코드를 컴퓨터가 이해할 수 있는 기계어 코드로 번역하는 과정을 컴파일(Compile)이라고 한다.
  • 빌드란?

    • 위에서 설명한 컴파일(Compile)은 빌드(Build)라는 과정의 일부이다. 빌드는 작성한 소스코드를 실행할 수 있는 산출물로 변환시키는 과정을 의미하는데 그 과정 중 소스코드를 기계어 코드로 변역하는 컴파일 과정에 포함되어있다. 컴파일을 마친 코드는 기계어 코드로 번역되어 컴퓨터가 이해할 수 있을 뿐, 아직 사용자가 소스코드를 실행할 수는 없다. 프로그램이 실행되려면 .exe 또는 .msi 확장자를 가진 실행 파일로 만들어주는 빌드 과정이 필요하다.
profile
Backend Developer 👩🏻‍💻

0개의 댓글