본 내용은 널널한 개발자 TV의 OS 강의를 공부하고 정리한 내용이다.
🔄 DMA (Direct Memory Access)

-
기존 방식
- CPU가 데이터를 RAM의 특정 위치로 복사
- 또 다른 위치로 복사
- 그걸 장치로 보내는 구조 (예: Video Memory로 전송)
-
👉 문제점
- 불필요한 복사가 너무 많음
- CPU가 자잘한 일에 과도하게 관여함
-
✅ 해결책: DMA
- CPU를 거치지 않고, 장치 ↔ 메모리 간 직접 전송
- 보통 NIC(Network Interface Card)에서 자주 사용됨
- 덕분에 CPU 부하를 줄이고 속도는 훨씬 빨라짐
🧠 고성능 소켓 구조

📤 송신 과정
- 프로세스가 저장장치(HDD 등)에서 Socket에 데이터를 보냄
- 그 데이터는 I/O Buffer에 먼저 저장됨
- 이후 세그먼트화해서 커널 버퍼에 저장
- 장치 드라이버를 통해 NIC로 전송되어 네트워크로 나감
📥 수신 과정
- NIC가 데이터를 받으면, 보통 DMA 기능을 이용해서
- 다른 버퍼를 거치지 않고, 예약된 RAM 영역으로 직접 저장
- 커널은 해당 RAM의 내용을 읽고 소켓으로 전달
💡 요약 포인트
- DMA 덕분에 CPU는 중간복사에서 해방, 성능 향상
- 고성능 네트워크 환경에서는 DMA + 소켓 구조의 최적화가 핵심
- NIC는 소켓 ↔ RAM ↔ 디바이스 흐름을 빠르게 처리하는 중간 브릿지 역할