컴퓨터 구조 - 2. 데이터 저장과 프로그램

JeongSH·2024년 9월 23일

컴퓨터 구조

목록 보기
2/11

저장(스토리지) 정의와 표기법

컴퓨터에서 데이터를 저장하고 처리할 때 사용하는 기본 단위는 비트(bit).

  • 전자 하드웨어와의 통신: CPU, 메모리, 입출력 장치와 통신하려면 전자 신호를 보내야 함.
  • 컴퓨터의 이해: 컴퓨터가 이해하기 쉬운 신호는 켜짐(on)과 꺼짐(off), 즉 0과 1로 표현.
  • 비트: 이 두 상태를 나타내는 컴퓨터의 가장 작은 정보 단위

bit(b)

컴퓨터 저장의 가장 작은 단위

  • bit를 통해 컴퓨터는 숫자, 문자, 이미지, 동영상, 소리, 문서, 프로그램을 나타낼 수 있음.
  • 문자와 같은 경우 다음과 같은 ASCII 표를 통해 매핑하여 나타냄.

Byte (B)

데이터를 저장의 기본 단위

  • 바이트(Byte): 1바이트는 8비트로 구성되며, 대부분의 컴퓨터에서 데이터를 처리하는 최소 단위.
  • 왜 8비트인가?: 처음에 ASCII 문자를 표현하기 위해 8비트를 사용.
  • 8비트 사용: 초기 인터넷과 인텔의 8비트 마이크로프로세서에서 사용되었음.

Word

데이터 처리의 기본 단위

  • 한 개 이상의 바이트로 데이터를 구성.
  • 32비트 레지스터와 메모리 주소를 가진 시스템에서는 1 워드는 4바이트(32비트).
  • 64비트: 64비트 시스템에서는 1 워드는 8바이트(64비트).

Memory

  • Address 메모리 내부의 상대적인 위치

  • Contents: 데이터가 Memory Cell에 저장됨.
    (각각의 Memory Cell은 1Byte.)

  • 각각의 Memory Cell은 주소가 있으며, 주소를 통해 저장 위치를 인지할 수 있다.

메모리에서의 정보 저장 및 검색

  • 데이터 저장(쓰기): 메모리 셀의 각 비트를 0 또는 1로 설정하여 기존 데이터를 삭제하고 새로운 데이터를 저장.
  • 데이터 검색(읽기): 특정 메모리 셀의 내용을 다른 저장 영역으로 복사하여 데이터를 읽어옴.

프로그램과 하드웨어 사이

  • 응용 소프트웨어: 워드 프로세서, 미디어 플레이어, 웹 브라우저 같은 프로그램으로, 수백만 줄의 코드로 작성되며 고급 라이브러리를 사용. 주로 고급 프로그래밍 언어(HLL)인 C, C++, Java 등으로 작성.

  • 컴퓨터 하드웨어: CPU, 메모리, 입출력 장치(I/O) 등으로 구성되어 있으며, 아주 간단한 저수준 명령어만 실행할 수 있음.

=> 중간에 필요한 것: 고급 언어와 단순한 하드웨어 사이를 연결해주는 중간 단계가 필요합. 이를 위해 운영 체제나 컴파일러가 사용.

기계어(명령어)

기계어 명령어: 컴퓨터가 이해하고 실행할 수 있는 비트들의 집합. 예를 들어, 명령어 10011001010000은 컴퓨터에게 두 숫자를 더하라고 지시.

  • 초기 프로그래머들: 초창기에는 컴퓨터와 이진수(바이너리)로 직접 소통.

  • 문제점: 이진수로 작업하는 것은 너무 번거롭고 인식하기 어려움.

  • 해결책: 인간이 이해하기 쉬운 표기법(어셈블리어)을 고안하고, 이를 바이너리 코드로 번역하는 방법을 개발. 이 과정은 어셈블러가 담당.

어셈블리어

어셈블리어: 프로그래머는 add A, B처럼 간단한 명령어를 작성하면, 어셈블러가 이를 10011001010000 같은 이진 명령어로 변환.

  • 특징: 어셈블리어는 컴퓨터가 따를 각 명령어에 대해 한 줄씩 작성해야 함. 즉, 프로그래머가 하드웨어 수준에서 작업을 해야 한다.

  • 문제점: 프로그래머가 컴퓨터처럼 사고해야 하기 때문에 매우 복잡하고 번거로움.

  • 해결책: 더 강력한 고급 언어가 개발되어, 사람이 이해하기 쉽게 프로그램을 작성하고 이를 기계어로 번역할 수 있어야 함.

고급 프로그래밍 언어 (HLL)

예시: C, C++, Java

  • 자연스러운 사고: 프로그래머가 컴퓨터처럼 생각하지 않고, 자연스러운 언어에 가깝게 생각하면서 코드를 작성할 수 있다.
  • 알고리즘: 작업을 수행하는 일련의 단계들을 정의하여 문제 해결에 중점을 둠.
  • 생산성 향상: 고급 언어는 개발 시간을 줄이고, 프로그래머의 생산성을 높임.
  • 컴퓨터 독립성: 고급 언어는 특정 컴퓨터 기계에 의존하지 않으며, 다양한 플랫폼에서 실행될 수 있다.

코드 수준과 번역 단계

  • 컴파일러(Compiler): 고급 언어(HLL)로 작성된 코드를 어셈블리어로 번역.

  • 어셈블러(Assembler): 어셈블리어를 기계어(Machine Language)로 변환하여 컴퓨터가 실행할 수 있도록 함.

이 두 단계는 고급 언어로 작성된 프로그램이 최종적으로 컴퓨터에서 실행될 수 있도록 하는 과정.

0개의 댓글