코드 훔쳐보는 변태 코더
춤 좋아하는 백엔드 개발자(였으면 좋겠다)
컴퓨터 구조 (1)
컴퓨터 시스템의 기본 구성과 정보의 표현과 저장

컴퓨터 시스템의 기본 구성

  • 하드웨어
    • 물리적인 실체가 있는 장비, 부품
  • 시스템 소프트웨어
    • OS를 포함하는 부트로더, 장치드라이버, 쉘 같은 것들을 얘기함
  • 응용 소프트웨어
    • 애플리케이션

하드웨어

  • 입력, 연산, 제어, 기억, 출력 기능을 구현한다.
  • 변경이 어렵다는 의미가 될 수 있다.

컴퓨터 하드웨어의 주요 구성 요소

  • 디스플레이 (모니터 / 출력장치)
  • 메인보드
    • 머더보드라고도 칭한다. (주요 칩들과 메모리 모듈, I/O장치 인터페이스를 위해서 슬롯이 장착된 기판을 의미한다.)
  • CPU
    • 가장 중요한 구성 요소이다.
  • 주기억장치 모듈
    • 램 (메인메모리 모듈 이라고도 부른다.)
  • 확장보드
    • 사운드카드, 랜카드, 등 기능추가를 위해서 장착하는 보드들을 확장보드라고 칭한다.
    • 그래픽카드 또한 확장보드에 장착된다
  • 전원 공급 장치
  • 광 저장 장치
    • ODD라고도 한다.
  • 하드디스크, SSD 등
  • 키보드, 마우스와 같은 입력장치

소프트웨어

  • 특정 작업을 수행하기 위해서 하드웨어에 의해서 저장되고 실행되는 명령어
  • 정보처리의 종류와 수행시간을 지정해주는 명령들의 집합이라고도 한다.
  • 시스템 소프트웨어
    • 컴퓨터를 유지/관리하는 데 사용되는 소프트웨어를 얘기한다. (운영체제, 런타임환경, 펌웨어 등등)
    • 로우레벨 언어로 작성되는 경우가 많다.
  • 응용 소프트웨어
    • 사용하는 목적에 따라서 제작된 기능적인 프로그램을 칭한다.
    • 고급언어로 작성되어있는 경우가 많다.
  • 하드웨어에 의존적이다.

컴퓨터의 기본 구조

  • 가장 중요한 3요소
    • CPU / Memory / IO Devices이다
      • CPU : 중앙처리 장치, 프로그램의 실행과 데이터 처리를 담당하는 핵심 요소이다. (프로세서라고도 불린다.)
        • 입출력 장치로부터 정보를 받아오고 처리한 결과를 내보내는 역할을 한다.
        • 메인보드 내에서도 가장 큰 칩이다.
        • 산술 논리 연산장치 *ALU)와 컨트롤유닛/, 레지스터 (임시메모리)로 구성이 되어있다.
      • 기억 장치 : 저장장치라고도 한다. CPU에서 처리한 결과를 보관하는 용도로 주로 사용된다.
        • 1차 메모리, 2차 메모리로 나뉜다.
        • 프로그램 코드라던가 데이터를 저장하는 역할을 한다.
        • 1차 메모리는 휘발성인 경우가 많다. (램) 휘발성 → 전력공급이 중단되는 경우에 데이터가 유실되는 장치를 뜻한다. 빠른 IO를 특징으로 한다.
        • 2차 메모리는 보조저장 장치를 얘기한다. 비휘발성이다. (영구 데이터 보존을 위해 사용되는 경우가 많다. 디스크나 테이프)
      • 입출력 장치 : 사용자와 컴퓨터 간의 상호작용을 위한 장치이다.
    • 이 3가지가 시스템 버스로 통신하는 구조로 이루어져 있다.

정보의 표현과 저장

  • 정보의 종류
    • 프로그램 코드
    • 데이터
    • 2진수 비트들의 조합으로 표현이 된다.

프로그램 코드

  • 고급 언어 프로그램 (영문자와 숫자로 이루어져 있어서 사람들이 이해하기는 쉽지만 컴퓨터는 이해할 수 없다. 그래서 컴파일러가 존재한다.)
    • 컴파일러 → 고급 언어들을 컴퓨터 하드웨어가 이해할 수 있는 언어로 번역하는 일을 담당한다.
      • 언어 번역 프로그램
      • 해석기 번역기 정도로 이해하면 쉽다.
      • 원래 문서를 소스 코드, 출력된 문서를 타깃 코드라고 칭한다.
      • 소스 코드를 타겟 코드로 옮기는 과정을 컴파일이라고 한다. (다른 말로 빌드라고도 얘기한다.)
      • 일반적으로 인터프리터를 거치는 것보다 컴파일된 파일 실행이 훨씬 빠르다.
      • 네이티브 컴파일러와 크로스 컴파일러로 구분이 된다.
        • 구분이 되는 기준은 컴파일러가 실행되는 컴퓨터 또는 운영체제가 같은가 다른가에 따라서 나뉘게 된다.
        • 같은 경우 → 네이티브 / 다른 경우 → 크로스 컴파일러
        • 크로스컴파일러가 많이 쓰이고 있다.
    • 고급언어로 작성된 프로그램을 실행하는 방법은 두 가지가 있다.
      • 첫 번째는 컴파일을 하는 방법이다.
      • 두 번째는 인터프리터를 사용하는 방법이다.
        • 소스코드를 한줄한줄 읽어서 그 즉시 결과를 출력하는 방식이다. (베이식 같은 언어)
      • 프로그램 크기가 아주 큰 경우에 인터프리터로 더 빨리 실행할 수도 있다.
      • 컴파일 과정을 안 거치기 때문에 교육 목적에서 바로 결과를 확인할 수 있다.
  • 어셈블리 프로그램 로우레벨 랭귀지
    • 언어 사항의 차이를 해결하기 위해서 존재하는 어셈블리어로 작성된 프로그램을 뜻한다.
  • 기계어 로우레벨 랭귀지

고급언어에서 기계어 프로그램으로 번역되는 과정

  • 고급 언어 프로그램이 컴퓨터에서 처리가 되려면 어셈블리 프로그램으로 번역이 되어야 한다.
  • 그리고 해당 CPU를 위한 기계어 프로그램으로 번역이 되어야 한다.
  • 고급 언어 프로그램 ⇒ Z = X + Y → 기억장치에 저장되어 있는 데이터 X와 Y를 더하고 결괏값을 기억장치의 Z 번지에 저장해라 라는 뜻
    • 어셈블리 프로그램 ⇒ LOAD A, X → 기억장치의 X번지에 있는 내용을 읽어 레지스터 A에 로드해라
    • ADD A, Y → 기억장치의 Y번지에 있는 내용을 읽어서 레지스터 A에 적재된 값과 더하고 결과를 레지스터 A에 적재해라
    • STOR Z, A → 레지스터 A의 내용을 기억장치의 Z번지에 저장하라는 명령이다.
  • 고급언어 프로그램 → 어셈블리 프로그램으로 번역이 되면서 3줄로 번역이 되었다.
  • 어셈블리 프로그램 → 기계어 프로그램
    • LOAD A, X ⇒ 00100101
    • ADD A, Y ⇒ 10000110
    • STOR Z, A ⇒ 01000111

명령어 형식

  • 명령어의 비트 수와 용도 및 필드 구성 방법을 지정해주는 형식이다.
  • 기계어 필드가 두 개로 구성된 것으로 가정을 한다면
  • 00100101 → 연산코드 001 , 오퍼랜드 00101
  • 연산코드 필드
    • CPU가 수행할 연산을 지정한다.
    • 레지스터 A에 저장해라 라는 명령어를 기계어로 표현한 것이다. ⇒ 001
    • 비트가 3개라면 2^3 이기 때문에 8가지의 연산 방법을 가질 수 있다.
  • 오퍼랜드 필드
    • 명령어 실행에 필요한 데이터가 저장된 주소이다.
    • 비트가 5개라면 2^5 , 기억장치의 주소를 32개 가질 수 있다는 뜻이다.

마무리

  •  컴퓨터의 기본 구성에 대해서 공부해 보았습니다.
  • 하드웨어, 시스템 소프트웨어, 응용 소프트웨어 이렇게 크게 3개로 분류할 수 있습니다.
    • 하드웨어는 말 그대로 딱딱한 부품, 고치기 힘든 부품으로 CPU 메인보드 입출력장치 등등을 뜻합니다.
    • 시스템 소프트웨어는 하드웨어에 의존적인 시스템을 구동시키기 위한 프로그램 등을 칭합니다.
      • 명령들의 집합이라고도 합니다.
    • 응용 소프트웨어는 보통 평소에 사용하는 프로그램 같은 것이라고 생각하면 될 것 같습니다.
  • 하드웨어는 단순히 CPU가 가장 큰 역할을 하고 메모리가 부수적인 역할, 그리고 해당 데이터들의 입출력을 담당하는 입출력 장치로 나누면 될 것 같습니다.
  • 시스템 버스로 통신하는 구조로 이루어져 있다고 합니다. 
    • 하드웨어 부품 하나하나가 각각의 장치와 서로 협력을 하여 동작하는 것 같습니다.
    • 시스템버스가 그 협력관계를 유지시켜준다고 보면 될 것 같습니다.
  • 어셈블리어와 기계어에 대해서 살짝 개념을 짚었으나, 아직 이해는 되지 않습니다.
  • 어떻게 해서 연산코드 필드와 오퍼랜드 필드를 구별할 수 있는지, 생성할 수 있는지에 대해서 배우지 못해서 나중에 정리가 한번 더 필요할 것 같습니다.

 

  Comments,     Trackbacks