DMA, 고성능 소켓

Minseo Lim·2025년 4월 8일

본 내용은 널널한 개발자 TV의 OS 강의를 공부하고 정리한 내용이다.


🔄 DMA (Direct Memory Access)

  • 기존 방식

    1. CPU가 데이터를 RAM의 특정 위치로 복사
    2. 또 다른 위치로 복사
    3. 그걸 장치로 보내는 구조 (예: Video Memory로 전송)
  • 👉 문제점

    • 불필요한 복사가 너무 많음
    • CPU가 자잘한 일에 과도하게 관여
  • ✅ 해결책: DMA

    • CPU를 거치지 않고, 장치 ↔ 메모리 간 직접 전송
    • 보통 NIC(Network Interface Card)에서 자주 사용됨
    • 덕분에 CPU 부하를 줄이고 속도는 훨씬 빨라짐

🧠 고성능 소켓 구조

📤 송신 과정

  1. 프로세스가 저장장치(HDD 등)에서 Socket에 데이터를 보냄
  2. 그 데이터는 I/O Buffer에 먼저 저장됨
  3. 이후 세그먼트화해서 커널 버퍼에 저장
  4. 장치 드라이버를 통해 NIC로 전송되어 네트워크로 나감

📥 수신 과정

  1. NIC가 데이터를 받으면, 보통 DMA 기능을 이용해서
  2. 다른 버퍼를 거치지 않고, 예약된 RAM 영역으로 직접 저장
  3. 커널은 해당 RAM의 내용을 읽고 소켓으로 전달

💡 요약 포인트

  • DMA 덕분에 CPU는 중간복사에서 해방, 성능 향상
  • 고성능 네트워크 환경에서는 DMA + 소켓 구조의 최적화가 핵심
  • NIC는 소켓 ↔ RAM ↔ 디바이스 흐름을 빠르게 처리하는 중간 브릿지 역할
profile
프로덕트 엔지니어 임민서입니다.

0개의 댓글