Study/ComputerScience

컴퓨터 시스템이라는 환상 구조물의 총 설계도

imaginefuture-1 2025. 6. 27. 02:51

 

 

───────────────────────────────
│       ⬆️ Application Layer       │
│ (C/Python, Data Structure, etc)│
│  • Abstract Data Type (ADT)    │
│    - State / Operation         │
│      ex) Stack, Queue, Tree    │
───────────────────────────────
│       ⬆️ Operating System        │
│  • Virtual Memory Abstraction  │
│    - Memory Management         │
│    - Page Table, Page Fault    │
│  • Process / Scheduler         │
│  • File System, I/O Management │
───────────────────────────────
│           ⬆️ MMU                │
│ (Memory Management Unit)       │
│  • Virtual → Physical Address  │
│  • Handles TLB / Page Faults   │
───────────────────────────────
│     ⬆️ Memory Hierarchy         │
│  • Cache (L1/L2/L3 - SRAM)     │
│  • Main Memory (DRAM)          │
│  • Storage (SSD/HDD)           │
│  • Locality (Temporal/Spatial) │
│    → 속도 vs 비용 vs 용량       │
───────────────────────────────
│    ⬆️ CPU (ISA + Control Unit)  │
│  • Instruction Fetch/Decode    │
│  • Register File               │
│  • ALU (Arithmetic Logic Unit) │
│  • PC (Program Counter)        │
│  • Instruction Set Architecture│
───────────────────────────────
│      ⬆️ Transistor Logic        │
│  • Logic Gates (AND/OR/NOT)    │
│  • Flip-Flop, Latch            │
│  • Clock Signal                │
│  • State Machines              │
───────────────────────────────
│       ⬆️ Physical Hardware      │
│  • Silicon / Fabrication       │
│  • Power, Heat, Material Limit │
───────────────────────────────

 

🧠 "컴퓨터 시스템이라는 환상 구조물의 총 설계도"

하드웨어에서 추상 데이터 타입까지 — 현실의 재료로 환상을 짜내는 마법


🪨 1. 물리 계층 (Physical Layer)

재료는 한정돼있고 느리고 비싸다. 여기서 출발해야 함.

  • Transistor
    ⮕ 전자 스위치. 참/거짓, 0/1의 시작.
  • SRAM / DRAM
    • SRAM: 빠르고 비쌈. (캐시용)
    • DRAM: 느리고 쌈. (메인메모리용)
    • 둘 다 전류로 상태(state)를 유지함. DRAM은 refresh 필요.
  • Storage (SSD/HDD)
    ⮕ 매우 느리지만 대용량. 마지막 보루.

🔄 2. 레지스터 & 캐시 계층 (CPU 내부)

CPU가 직접 접근 가능하며 가장 빠른 속도. 용량은 작다.

  • Register (레지스터)
    • 가장 빠름, 상태(state)를 저장하는 작은 창고.
    • 연산의 중간값, 상태값, 변수 저장.
  • Cache (L1, L2, L3)
    • CPU와 DRAM 사이에서 지역성(Locality) 기반으로 캐시함.
    • Hardware-managed (OS 관여 불가), 나노초급 환상의 시작점.

🔧 3. 메모리 계층 (DRAM) + 주소공간 가상화

DRAM은 실제 주소 공간, 그러나 프로그램은 "가상 주소"만 봄.

  • Virtual Memory (가상 메모리)
    • 프로그램은 0x00000000부터 시작한다고 착각함.
    • 진짜 물리 주소는 MMU가 대응시켜줌.
  • MMU (Memory Management Unit)
    • 가상 주소 ➝ 실제 물리 주소로 매핑.
    • TLB 캐시를 통해 주소 변환을 빠르게 처리함.
    • Page Table로 가상 ➝ 물리 mapping 관리
  • Page Fault
    • 메모리에 해당 페이지가 없을 때 발생.
    • OS가 개입해서 디스크에서 적재(=느려짐), 회복.
    • 여기서부터 OS 개입 가능!

🧠 4. 운영체제 (Operating System)

제한된 자원을 잘 분배해주는 관리자. 환상의 핵심 조력자.

  • Process/Thread 관리
    • 타이머 인터럽트 기반으로 시분할 ➝ 마치 여러 프로세스가 동시에 도는 환상.
  • Page Replacement (예: LRU)
    • DRAM이 부족하면 덜 쓰이는 페이지를 쫓아냄.
  • 시스템 콜 + 인터럽트
    • 하드웨어와 상호작용하게 해주는 게이트.
  • DRAM <-> Disk I/O 관리
    • 접근 최소화해서 속도 trade-off 줄이기 위한 전략 관리.

🔣 5. Instruction Set Architecture (ISA)

하드웨어와 소프트웨어 사이 약속된 인터페이스

  • Instruction
    • MOV, ADD, JMP 등.
    • 결국 CPU는 이것만 이해함.
  • Registers, ALU, Control Unit
    • 인스트럭션 실행하는 내부 하드웨어.
    • ALU는 계산, 제어 유닛은 해석 및 흐름 제어.

🧰 6. Abstract Data Type (ADT)

사용자 입장에서는 이제 자료구조와 연산만 보임. 현실 감각 없음.

  • State + Operation
    • 상태(state): 내부 구조 (예: 리스트 내부 노드들)
    • 연산(operation): 추상적 기능 (예: push, pop, insert)
  • Ex) Stack
    • state: 배열 or 연결 리스트
    • operation: push(), pop(), peek()

🌐 7. Application + Interface Layer

진짜 사용자가 조작하는 인터페이스. 아래에서 흘러온 모든 것을 포장하는 겉면.

  • main() 함수부터 GUI, CLI까지.
  • 우리는 절대 MMU나 Page Fault를 직접 보지 않음.
  • 오직 그 환상 위에 살고 있을 뿐…

🔮 이 모든 걸 가능케 하는 핵심 마법들:

개념마법의 역할
Locality (지역성) "미래는 예측할 수 없지만 과거는 반복된다"
Virtualization "물리적 한계를 가리자. 환상을 만들자."
Cache "빠른 것처럼 보이게 하자."
MMU "주소는 가짜야. 진짜는 나만 알아."
Page Fault "준비 안 된 걸 처리하는 나의 방식"
OS "모든 걸 조율하는 마에스트로"
ADT "상태와 연산만 보여줘. 구현은 몰라도 돼."
 

┌────────────────────────────┐
│      Application Layer     │ ← 우리가 보는 환상
├────────────────────────────┤
│   Abstract Data Types (ADT)│ ← stack, queue, tree...
├────────────────────────────┤
│    Instruction Execution   │ ← CPU: MOV, ADD, etc
├────────────────────────────┤
│    OS + MMU + Page Table   │ ← 자원관리 + 환상 유지
├────────────────────────────┤
│  DRAM (slow), Page Fault   │ ← 메모리 trade-off
├────────────────────────────┤
│ SRAM Cache + Registers     │ ← 빠른 임시 기억
├────────────────────────────┤
│   Transistors & Storage    │ ← 현실의 한계, 재료
└────────────────────────────┘

🧬 마지막 메시지

너가 말했듯, 컴퓨터는 마치 인간 같다.
미래를 알 수 없고, 그래서 과거를 기반으로
효율을 추구하며, 계속 보완해가며 살아간다.

그런 구조 속에서, 컴퓨터를 공부하면 결국 나를 알게 된다.
효율적인 시스템을 만들려면 결국,
**"나는 무엇을 중요하게 생각하는가"**를 알아야 하니까.