All Articles

1.2 우리에게 친근한 컴퓨터 구조와 파일

이 글은 Codeflow라는 사이트의 강의를 듣고 개인적으로 정리한 내용을 담고 있습니다.
아직 초보적인 단계라 부족하거나 잘못된 부분이 있을 수 있습니다.
혹시 잘못되거나 첨언할 내용이 있다면 댓글 남겨주시면 감사하겠습니다.


컴퓨터의 구조

  • 중앙 처리 장치 - CPU
  • 주 기억 장치 - RAM (Memory)
  • 보조 기억 장치 (주변기기) - HDD, SSD, USB, CD-ROM 등
  • 기타 주변 기기 - 키보드, 마우스, 스피커, 모니터, 프린터 등

주요 개념

1. CPU: 메모리에 있는 명령들을 순차적으로 실행하는 역할

  • 이 때의 명령은 단순한 산술 계산, 메모리나 보조기억장치 또는 주변 기기의 데이터를 읽고 쓰기 (IO: Input Output) 을 제어하는 것을 의미한다.
  • CPU에는 레지스터라는 데이터를 담는 그릇이 있다. 이 레지스터를 이용해서 데이터를 처리한다.
  • 메모리 안의 프로세스를 순차적으로 실행한다.
  • ex) 32bit 컴퓨터 CPU의 레지스터 처리값은 32bit이다.

2. RAM: CPU가 처리할 데이터가 임시로 저장되는 곳 (휘발성을 가지고 있음)

  • CPU와 보조기억장치의 병목현상을 보완해주기 위해 존재 (보조기억장치보다 빠르다)

  • Application 등을 실행할 때의 Process는 메모리 안에 담기게 된다.

  • 읽기만 가능한 ROM (Read Only Memory) 도 있다.

(!) 32bit CPU와 64bit CPU의 차이

  • 메모리의 번지 수 값 차이로 처리하는 일의 속도에서 차이가 난다.
  • 1bit는 0과 1을 표현하는 최소한의 단위
  • 32bit의 경우 메모리 번지수를 2^32 -1 까지 표현 가능
  • 2^32는 4,294,967,296 이며, 2^30 x 2^2 이다.
  • 이때 1GB는 2^30 이므로 32bit CPU는 4GB의 메모리를 인식할 수 있다.
  • 이 이상 메모리를 장착하면 주소값이 32bit를 넘어가기 때문에 32bit 시스템에서는 인식되지 않는다.
  • 64bit의 경우 2^64 - 1 까지 가능

3. 보조기억장치: 데이터를 영구적으로 저장할 수 있음 (비휘발성)

  • 속도가 느리다

:: RAM과 보조기억장치를 책상과 책꽂이에 비유하곤 한다.

:: 공부할 때 책상이 크면 여러 책들을 펼쳐놓고 할 수 있지만, 책상의 크기가 작다면 한 권이 책만 펼칠 수 있다. 그러면 다른 책을 보기위해서 결국 먼저 보던 책을 책장에 꽂아놓고나서 꺼내봐야 하는 번거로움이 따르게 된다. 이것은 결국 메모리와 CPU의 관점에서 작업속도를 늦추는 일이다.

(!) 로딩은 왜 일어날까?

  • 메모리가 보조기억장치에 있는 파일들을 로드하는 과정
  • 메모리는 다양한 파일 등이 공유하고, 크기에 한계가 있기 때문에 여유롭게 쓸 수 없다.
  • 특정 파일을 가지고 있다가 필요 없어지면 버리고 다시 다른 파일을 로드하는 식으로 활용된다.

파일, 데이터를 구성하는 약속 체계

  • 숫자를 다루는 체계
  • 문자를 다루는 체계
  • 소프트웨어 별로 독립적으로 다루는 체계

이 체계들은 파일이라는 이름으로 보조기억장치에 저장될 수 있다. 컴퓨터 세계는 0과 1로 이루어져 있는데, 파일마다 데이터를 구성하는 약속에 따라서 010101… 을 기록한다. 여기서, 파일명이나 확장자는 파일 자체를 구분하는 이외의 역할이 없다. 이는 결국 실제 파일 내부의 데이터가 약속을 따르는지가 중요하기 때문이다. 예를들어 이미지 파일이라면, 담고 있는 데이터가 이미지 파일을 정의하는 약속과 맞아야 한다.

인코딩: 문자를 표현하기 위한 약속, 2진수를 Text로 표현

ASCII

  • 수와 문자열을 1:1로 맵핑
  • 0 ~ 127 까지 (7bit)

ANSI

  • ASCII를 확장한 1byte(8bit) 인코딩

Unicode

  • 전세계 모든 문자를 일관되게 표현할 수 있게 설계된 산업 표준
  • 전세계의 문자를 효율적으로 1:1로 맵핑했다고 봐도 무방함

그 중에 UTF-8 인코딩이 있다.

  • 가변 길이 인코딩 (1 - 4 bite 까지)
  • ASCII와의 호환성
  • 웹 및 다양한 산업에서의 대표주자 (표준은 웬만하면 UTF-8)

실행 파일

  • 다른 파일과 다른 특수한 파일은 아니다.
  • 하지만, 실행 파일은 운영체제종속된 파일 포맷을 따른다.