기억장치의 분류

컴퓨터의 기억장치는 크게 두 가지로 나뉜다.

구분 역할 예시
주기억장치 CPU가 직접 접근하는 작업 공간 RAM, ROM
보조기억장치 데이터를 영구 저장하는 공간 HDD, SSD, USB

주기억장치는 속도가 빠르지만 용량이 작고, 보조기억장치는 느리지만 대용량 저장이 가능하다. CPU는 보조기억장치에 직접 접근하지 못하고, 데이터를 주기억장치로 올려서 처리한다.


RAM (Random Access Memory)

임의 접근 메모리. 어느 주소든 동일한 속도로 접근할 수 있다는 뜻에서 Random Access라는 이름이 붙었다.

핵심 특징은 두 가지다.

  • 임의 접근(Random Access): 저장 위치에 상관없이 접근 속도가 일정하다.
  • 휘발성(Volatile): 전원이 끊기면 데이터가 사라진다.

RAM은 내부 동작 방식에 따라 SRAM과 DRAM으로 나뉜다.


SRAM (Static RAM)

정적 램. 플립플롭(Flip-Flop) 회로로 데이터를 유지하기 때문에, 전원이 공급되는 동안 리프레시 없이 데이터를 그대로 보존한다.

  • 속도가 매우 빠르고 안정적이다.
  • 하지만 회로 구조가 복잡해 단가가 높고 집적도가 낮다.
  • 대용량으로 만들기 어렵기 때문에 소용량 고속 메모리에 사용된다.

주요 사용처

용도설명
Cache (캐시 메모리) CPU와 DRAM 사이의 속도 차이를 줄이기 위한 버퍼 역할. L1, L2, L3 캐시가 모두 SRAM이다.
Buffer (버퍼) 장치 간 속도 차이를 완충하는 임시 저장소

DRAM (Dynamic RAM)

동적 램. 캐패시터(Capacitor)에 전하를 충전하는 방식으로 데이터를 저장한다. 캐패시터는 시간이 지나면 전하가 방전되기 때문에 주기적으로 리프레시(Refresh) 가 필요하다.

  • SRAM보다 느리지만 집적도가 높고 단가가 낮다.
  • 대용량 구현이 가능해 우리가 흔히 말하는 "메인 메모리(주기억장치)" 가 바로 DRAM이다.

DRAM은 기술 발전에 따라 여러 규격으로 나뉜다.

규격 Full Name 특징
RDRAM Rambus DRAM Rambus사가 개발한 고속 DRAM. 버스 폭이 좁은 대신 클럭이 매우 높다. 현재는 거의 사용되지 않는다.
SDRAM Synchronous DRAM CPU 버스 클럭과 동기화되어 동작하는 DRAM. 이전 비동기 방식 대비 안정성과 속도가 향상됐다.
DDR SDRAM Double Data Rate SDRAM 클럭의 상승 엣지(Rising Edge)와 하강 엣지(Falling Edge) 양쪽에서 데이터를 전송한다. 같은 클럭에서 SDRAM의 2배 대역폭을 낸다. 현재 DDR4, DDR5가 주류다.

ROM (Read-Only Memory)

읽기 전용 메모리. 이름 그대로 데이터를 읽는 것만 가능하고, 일반적인 방법으로는 쓰기가 불가능하다.

핵심 특징은 두 가지다.

  • 읽기 전용(Read-Only): 데이터 변경이 불가능하거나 매우 제한적이다.
  • 비휘발성(Non-Volatile): 전원이 꺼져도 데이터가 유지된다.

펌웨어, BIOS처럼 시스템이 부팅될 때 반드시 필요한 코드를 저장하는 데 사용된다.


ROM도 기술 발전에 따라 여러 종류로 나뉜다.

규격 Full Name 설명
MROM Mask ROM 제조 과정에서 데이터가 영구 기록된다. 생산 후 변경 불가.
PROM Programmable ROM 공장 출하 후 사용자가 딱 한 번 데이터를 기록할 수 있다. 이후 변경 불가.
EPROM Erasable Programmable ROM 자외선(UV) 을 쪼여 데이터를 지우고 재기록할 수 있다. 창문이 있는 IC 칩 모양이 특징이다.
EEPROM Electrically Erasable Programmable ROM 전기 신호로 데이터를 지우고 쓸 수 있다. 바이트 단위 접근이 가능하다.
Flash Memory EEPROM의 발전형. 블록 단위로 삭제·기록한다. SSD, USB, SD카드의 핵심 소자다.
NVRAM Non-Volatile RAM RAM처럼 읽기·쓰기가 자유롭지만 비휘발성이다. Cisco 라우터에서 startup-config를 저장하는 데 사용된다.

'IT Basics' 카테고리의 다른 글

IP 주소 구조  (0) 2026.04.22
쉬운 2진수 읽는 방법  (0) 2026.04.22

IP 주소란?

IP 주소는 네트워크에 연결된 장비를 식별하는 논리 주소다. 집 주소처럼, 데이터가 어디로 갈지 알 수 있게 한다. 

IPv4 주소는 32비트로 이루어져 있다. 이걸 사람이 읽기 쉽도록 8비트(1옥텟(octet)) 단위로 잘라 10진수로 표현한다.

옥텟은 8개가 모여 있는 것을 의미한다. Octopus도 문어 다리가 8개이기 때문에 Oct-라는 접두사가 붙는다.

11000000 . 10101000 . 00000001 . 00000001
  192    .   168    .     1    .     1

→ 192.168.1.1

각 옥텟은 0~255 사이의 값을 갖는다. (8비트 최대값 = 128+64+32+16+8+4+2+1 = 255)

최대값은 255이나 개수는 256개이다. (1~10은 열 개지만, 0~10은 열한 개인 원리)

 

네트워크 부분 vs 호스트 부분

IP 주소는 두 파트로 나뉜다.

파트 의미
네트워크 부분 어느 네트워크인지 (아파트 단지)
호스트 부분 그 네트워크 안의 어떤 장비인지 (동·호수)

어디까지가 네트워크이고 어디서부터 호스트인지를 나타내는 것이 서브넷 마스크다.

IP 주소:      192.168.  1.  1
서브넷 마스크: 255.255.255.  0

→ 네트워크: 192.168.1.0
→ 호스트:   192.168.1.0~255

서브넷 마스크에서 255(= 11111111)인 옥텟은 네트워크 부분, 0(= 00000000)인 옥텟은 호스트 부분이다.

 

 

사이더 표기법 (CIDR)

서브넷 마스크를 매번 길게 쓰는 대신, 1의 개수만 /숫자 로 표기한다.

255.255.255.0 = 11111111.11111111.11111111.00000000
                → 1이 24개 → /24

예: 192.168.1.1/24
 

 

서브넷 마스크 CIDR 호스트 수
255.0.0.0 /8 16,777,214
255.255.0.0 /16 65,534
255.255.255.0 /24 254
255.255.255.128 /25 126

호스트 수 공식: 2ⁿ - 2 (n = 호스트 비트 수, -2는 네트워크/브로드캐스트 주소 제외)

예를 들어, /24는 네트워크 비트가 24개이므로 호스트 비트는 8개이다.

따라서 2⁸-2=254가 나온다.

/24는 네트워크 비트가 24개이므로 24개에 해당하는 비트까지는 주소가 같아야 같은 네트워크에 속한 IP이다.

#예시
IP: 10.10.0.1
서브넷마스크: 255.0.0.0 (/8)

IP: 10.20.0.2
서브넷마스크: 255.0.0.0 (/8)

/8이므로 네트워크 부분은 첫 번째 옥텟까지 해당.
네트워크는 10.x.x.x
호스트는 10.0.0.0 ~ 10.255.255.255 까지 가능(16,777,214개)
두 IP는 같은 네트워크에 있으므로(주소가 같으므로) 직접 통신 가능.

#예시
IP: 10.10.0.1
서브넷마스크: 255.255.0.0 (/16)

IP: 10.20.0.2
서브넷마스크: 255.255.0.0 (/16)

/16이므로 네트워크 부분은 두 번째 옥텟까지 해당.
네트워크는 10.10.x.x 혹은 10.20.x.x
호스트는 10.10.0.0 ~ 10.10.255.255, 10.20.0.0 ~ 10.20.255.255 까지 가능(65,534개)
두 IP는 다른 네트워크에 있으므로(주소가 다르므로) 직접 통신 불가능.

 

 

특수 주소

주소 의미
192.168.1.0 네트워크 주소 (첫 번째) — 장비에 할당 불가
192.168.1.255 브로드캐스트 주소 (마지막) — 장비에 할당 불가
127.0.0.1 루프백 — 자기 자신을 가리킴
0.0.0.0 모든 네트워크 (라우팅에서 사용)
 
 
 
 
 

'IT Basics' 카테고리의 다른 글

주기억장치와 보조기억장치  (0) 2026.04.23
쉬운 2진수 읽는 방법  (0) 2026.04.22

2진수란?

우리가 평소 쓰는 숫자는 10진수다. 0부터 9까지 10개의 숫자를 쓰고, 9를 넘으면 자리가 올라간다.

2진수는 0과 1만 사용한다. 1을 넘으면 바로 자리가 올라간다.

10진수:  0  1  2  3   4   5   6   7    8   9  10  11  ...
 2진수:  0  1 10 11 100 101 110 111 1000 ...

2진수 → 10진수 변환

각 자리에는 자리값(weight) 이 있다.

해당 자리가 1이면 자리값을 더하고, 0이면 더하지 않는다.

 

예시: 1100 0000 → ?

2의제곱:   2⁷  2⁶  2⁵  2⁴  2³  2²  2¹  2⁰
자리값:  128  64  32  16   8   4   2   1
비트  :    1   1   0   0   0   0   0   0

128 + 64 = 192

자리값 오른쪽 끝부터 2⁰, 2¹, 2², … 순서로 올라간다. 2⁰=1, 2¹=2, 2²=4...

 

예시: 1010 1000 → ?

자리값:  128  64  32  16   8   4   2   1
비트  :    1   0   1   0   1   0   0   0

128 + 32 + 8 = 168

 

 

10진수 → 2진수 변환

반대로 10진수를 2진수로 바꾸려면, 2로 계속 나누면서 나머지를 아래에서 위로 읽는다.

 

168 ÷ 2 = 84  ... 나머지 0
 84 ÷ 2 = 42  ... 나머지 0
 42 ÷ 2 = 21  ... 나머지 0
 21 ÷ 2 = 10  ... 나머지 1
 10 ÷ 2 =  5  ... 나머지 0
  5 ÷ 2 =  2  ... 나머지 1
  2 ÷ 2 =  1  ... 나머지 0
  1 ÷ 2 =  0  ... 나머지 1

따라서 168 = 1010 1000

 

개인적으로 암산을 하는 편인데, 구하려는 10진수의 값에서 가장 가까운 2의 제곱수를 뺀다.

2의제곱:   2⁷  2⁶  2⁵  2⁴  2³  2²  2¹  2⁰
자리값:  128  64  32  16   8   4   2   1
비트  :    1   0   0   0   0   0   0   0

168(10진수)에서 128(2진수, 2)을 빼면 40

 

자리값:  128  64  32  16   8   4   2   1
비트  :    1   0   1   0   0   0   0   0

 

40에서 32를 빼면 8

 

자리값:  128  64  32  16   8   4   2   1
비트  :    1   0   1   0   1   0   0   0

8은 뺄 필요가 없으므로 8자리에 1을 추가 

 

-> 1010 1000

 

'IT Basics' 카테고리의 다른 글

주기억장치와 보조기억장치  (0) 2026.04.23
IP 주소 구조  (0) 2026.04.22

+ Recent posts