Skip to content

Commit

Permalink
updated
Browse files Browse the repository at this point in the history
  • Loading branch information
yulmwu committed Jan 3, 2025
1 parent 073fa5d commit e00a8a8
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 2 deletions.
Binary file modified .DS_Store
Binary file not shown.
109 changes: 107 additions & 2 deletions _posts/fast/2024-10-25-os.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ tags: ["컴퓨터", "하드웨어", "CPU"]
2. [RISC](#2-1-8-2-risc)
2. [메모리(주기억장치)](#2-2-메모리주기억장치)
1. [RAM](#2-2-1-ram)
2. [캐시-메모리](#2-2-2-캐시-메모리)
1. [RAM의 종류](#2-2-1-1-ram의-종류)
2. [ROM](#2-2-2-rom)
1. [ROM의 종류](#2-2-2-1-rom의-종류)
3. [캐시-메모리](#2-2-3-캐시-메모리)
4. [메모리 주소](#2-2-4-메모리-주소)
3. [보조기억장치](#2-3-보조기억장치)
4. [입출력장치(I/O)](#2-4-입출력장치io)
5. [버스](#2-5-버스)
Expand Down Expand Up @@ -929,9 +933,109 @@ ARM 등이 RISC에 해당되며, 임베디드 시스템에 사용되는 프로

## 2-2. 메모리(주기억장치)

여태 CPU에 대한 내용을 다뤘다. 사실 CPU에 대한 동작 과정과 구조만 알고있어도 컴퓨터를 다루는데 무리가 전혀 없다.
하지만 컴퓨터는 CPU로만 이루어져있진 않다. 예컨대 CPU 외에 메모리, 입출력장치 등도 있어야 컴퓨터가 동작한다.

이번 파트에선 그중 하나인 "메모리"에 대해 다뤄볼 예정으로, 크게 **RAM****ROM**으로 구분하여 설명할 예정이다.

### 2-2-1. RAM

### 2-2-2. 캐시-메모리
우리가 앞서 "메모리"라고 하면 대부분 **RAM**을 의미한다고 설명하였다. ROM은 나중에 설명하고, RAM에 대해 먼저 설명하겠다.

> CPU는 메모리로 부터 데이터를 가져와 명령어를 실행한다. 또한 데이터를 메모리에 저장하기도 한다.
{:.info}

사실 위 설명만으로도 RAM이 어떤 역할을 하는지 대략적으로 알 수 있다.
어떠한 프로그램이 실행되면 보조기억장치(HDD, SSD 등)에서 프로그램의 데이터[^ram1]를 메모리로 가져와 CPU가 실행하게 된다.

만약 RAM의 크기가 상대적으로 작다면, RAM에 올라갈 수 있는 프로그램의 크기도 제한되므로 성능이 떨어지게 된다.
추가적으로 프로그램의 크기가 너무 커 올라가지 못할 경우, 프로그램의 실행되는 일부만 올라가고 나머지는 가상 메모리에 저장된다. 가상메모리는 보조기억장치를 RAM처럼 사용하는 기술인데, 추후 설명하겠다.

반대로 RAM의 크기가 상대적으로 크면 올라갈 수 있는 프로그램의 크기와 개수가 많아지므로 성능이 향상된다.

또한 RAM은 전원이 꺼지면 데이터가 사라지기 때문에 **휘발성 메모리(Volatile Memory)**이다.

#### 2-2-1-1. RAM의 종류

RAM엔 여러 종류가 있는데, 크게 **DRAM(Dynamic RAM)****SRAM(Static RAM)**으로 나눌 수 있다.

---

##### DRAM(Dynamic RAM)

흔히 말하는 "RAM"은 대부분 DRAM을 의미한다. DRAM은 동적 램이라는 뜻으로, 데이터를 저장하는 방식이 동적이라는 뜻이다.
이게 무슨말이냐, 쉽게 말해 일정한 주기마다 데이터를 갱신(refresh)해야 한다는 뜻으로, 갱신을 하지 않으면 데이터가 사라진다.

근데 왜 DRAM을 쓰냐, IT의 세계에선 그 무엇보다 중요한건 비용이다. 아무리 좋아도 비용이 비싸면 그만큼 안쓰이기 마련인데, DRAM은 비용이 저렴하고 상대적으로 소비전력도 낮으며, 밀도가 높아 용량이 크다는 장점이 있다.

추가적으로 **SDRAM(Synchronous DRAM)**, **DDR SDRAM(Double Data Rate Synchronous DRAM)** 등의 DRAM이 존재하며, 이는 DRAM의 성능을 향상시킨 버전이다.

**SDRAM**은 동기 DRAM이라는 뜻으로, CPU와 메모리의 속도를 맞추어 동작한다는 뜻이다. 즉 CPU 클럭과 메모리 클럭이 동일하게 동작한다.

**DDR SDRAM**의 Double Data Rate는 데이터 전송 속도를 늘렸다는 의미다. 다른말로 설명하면 대역폭을 늘렸다는 의미인데, 그럼 한번에 전송되는 데이터의 양이 늘어나므로 성능이 향상된다.
오늘날 대부분의 컴퓨터는 DDR SDRAM을 사용하며, DDR2, DDR3, DDR4, DDR5 등의 버전이 존재한다. 뒤의 숫자는 2^n의 의미로, DDR4는 16개의 대역폭을 가지고 있다.

---

##### SRAM(Static RAM)

Static은 정적이라는 뜻으로, 데이터를 저장하는 방식이 정적이라는 뜻이다. 컴퓨터에 전원이 인가되어있는 동안 데이터가 유지되며, DRAM과는 다르게 주기적인 갱신이 필요없다.
또한 대부분 DRAM보다 속도가 빠르나, 비싸고 소비전력이 높다는 단점이 있다.

또한 밀도가 낮아 용량이 작다는 단점이 있으나, 속도가 빨라 캐시 메모리에 사용되는 경우가 많다.

### 2-2-2. ROM

ROM은 Read-Only Memory의 약자로, 읽기 전용 메모리라는 뜻이다. 즉, 데이터를 읽기만 가능하고 쓰기가 불가능하다.
사실 불가능한건 아니며, 쓰기가 가능한 ROM도 존재한다. 이를 **PROM(Programmable ROM)**이라 하는데 곧 설명하겠다.

ROM은 이름 뜻 그대로 첫 프로그래밍 이후 데이터를 다시 쓸 필요가 없는 부트로더, 펌웨어 등에 사용된다. 물론 현재에 와선 펌웨어 역시 플래시 메모리에 저장되는 경우도 있다. 플래시 메모리는 추후 설명하겠다.
크게 **마스크 ROM(Mask ROM)****PROM(Programmable ROM)**으로, PROM의 하위로 **EPROM(Erasable Programmable ROM)****EEPROM(Electrically Erasable Programmable ROM)** 등이 존재한다.

추가적으로 ROM은 전원이 꺼져도 데이터가 유지되는 **비휘발성 메모리(Non-Volatile Memory)**이다.

#### 2-2-2-1. ROM의 종류

ROM은 원래 Read Only, 즉 읽기 전용이였으나 오늘날엔 다시 쓸 수 있게 만들어져가고 있다. 초기의 진짜 Read Only의 ROM을 **마스크 ROM**이라 한다.

---
##### Mask ROM(마스크 ROM)

**마스크 ROM**은 처음에 데이터를 쓰고 나면 다시 쓸 수 없는 ROM이다. 공장에서 만들어질때부터 데이터가 적히고, 이는 변경할 수 없기 때문에 오늘날엔 거의 쓰이지 않고 있다.

---
##### PROM(Programmable ROM)

PROM은 처음에 데이터를 쓸 수 있지만, 한번 쓰면 다시 쓸 수 없는 ROM이다. 이는 사용자가 데이터를 쓸 수 있게 만들어져서 **Programmable**이라는 이름이 붙었다.
마스크 ROM은 공장에서 부터 들어갈 내용을 패턴화하여 써넣는 반면, PROM은 아무것도 없는 상태로 사용자에게 공급되어 사용자가 직접 데이터를 쓸 수 있다.

하지만 한번 쓴 이후엔 마스크 ROM과 마찬가지로 다시 쓸 수 없다는 단점이 있다.

---
##### EPROM(Erasable Programmable ROM)

**EPROM**은 PROM과 다르게 데이터를 지울 수 있는 ROM이다. 칩셋에 동그란 창이 있는데, 그 위로 자외선을 비추면 데이터가 지워진다. 그 이후 PROM Writer를 이용해 다시 데이터를 쓸 수 있다.
제조사 등에서 버그 수정 등을 위해 다시 프로그래밍 시 유용하다.

---
##### EEPROM(Electrically Erasable Programmable ROM)

**EEPROM**은 EPROM과 다르게 자외선이 아닌 전기적인 방법으로 데이터를 지울 수 있는 ROM이다. 이는 EPROM보다 훨씬 편리하며, 현재의 플래시 메모리의 원형이 된다.
전기적으로 쓰고 지우기 때문에 자외선이나 PROM Writer가 필요없으며, 컴퓨터의 BIOS 등에 사용된다. 자외선을 사용하여 지우는 UVEPROM에 비해 EEPROM은 훨씬 편리하지만, 가격히 훨씬 비싸며 쓰기/지우기 속도가 느리다.

---
##### 플래시 메모리(Flash Memory)

**플래시 메모리**는 EEPROM의 일종으로, EEPROM보다 더욱 편리하고 빠르며, 대용량의 저장이 가능하다.
굳이 따지자면 RAM과 ROM의 중간쯤에 위치하는데, ROM과 같이 비휘발성인데 반해 RAM과 같이 쓰기/읽기 속도가 빠르다.

물론 RAM에 비교하면 월등히 느려 RAM 대용으론 부적합하고, 쓰기에 제한이 있어 몇십만~몇백만번 정도의 쓰기 이후엔 데이터를 더이상 쓸 수 없다.

플래시 메모리는 주로 USB 메모리, SSD 등에 사용되며, 최근엔 컴퓨터의 BIOS에도 사용된다. 덕분에 사용자가 쉽게 BIOS를 업데이트 할 수 있게 되었다.

### 2-2-3. 캐시 메모리

### 2-2-4. 메모리 주소

## 2-3. 보조기억장치

Expand Down Expand Up @@ -963,3 +1067,4 @@ ARM 등이 RISC에 해당되며, 임베디드 시스템에 사용되는 프로
[^cisc2]: RISC에서도 가변 길이 명령어를 사용하기도 하기 때문에, CISC에서만 가변 길이 명령어를 사용한다는 특징도 사라지고 있는 추세이다.
[^risc1]: 실제론 RISC의 명령어가 더 적거나 하진 않을 수 있다. 하지만 주소 지정 방식이 CISC보다 단순하여 명령어 처리에 효율적이다.
[^risc2]: 실제로 전력 소모면에선 임베디드를 제외하면 큰 차이가 없긴 하다.
[^ram1]: 프로그램의 명령어들과 프로그램이 가지고있는 데이터를 의미한다.

0 comments on commit e00a8a8

Please sign in to comment.