운영체제 | Direct Memory Access

성수당·2025년 9월 26일

운영체제

목록 보기
30/31
post-thumbnail

🥔 Direct Memory Access (DMA)란?

Direct Memory Access (DMA) 는 주변 장치가 CPU의 개입 없이 메인 메모리(RAM)와 직접 데이터를 주고받는 방식이다. 대용량 데이터를 빠르게 전송할 수 있도록 하기 위해 도입된 구조로, I/O 처리 성능 향상에 매우 중요하다.

🥔 CPU가 I/O를 직접 처리할 때의 문제점

CPU가 I/O 장치와 메모리 간 데이터를 직접 읽고 쓰게 되면 다음과 같은 문제가 발생한다:

  • CPU가 I/O 전송에 완전히 묶이게 된다.
  • 전송이 끝날 때까지 다른 작업을 수행하지 못한다.
  • 작은 데이터를 주고받는 것은 괜찮지만, 대용량 파일 전송이나 네트워크 통신에는 비효율적이다.

예: 하드디스크에서 메모리로 1GB를 복사할 때, CPU가 이를 직접 처리하면 전송 시간 동안 아무런 다른 계산도 하지 못한다.

🥔 DMA 동작 원리

  1. CPU는 DMA 컨트롤러전송할 데이터의 시작 주소, 크기, 읽기/쓰기 방향 등을 설정한다.
  2. 설정이 끝나면 CPU는 DMA에게 제어권을 넘기고 다른 작업을 수행한다.
  3. DMA 컨트롤러가 메모리와 I/O 장치 사이에 직접 데이터를 전송한다.
  4. 전송이 완료되면 DMA가 인터럽트를 발생시켜 CPU에게 완료를 알린다.

🥔 DMA 구조 예시

┌────────────┐     ┌────────────┐     ┌────────────┐
│  I/O 장치  │◄───►│ DMA 컨트롤러 │◄───►│    메모리    │
└────────────┘     └────────────┘     └────────────┘
                         ▲
                         │
                    ┌────────┐
                    │  CPU   │ (설정만 하고 개입 X)
                    └────────┘

CPU는 설정만 담당하고, 데이터 전송은 완전히 DMA 컨트롤러가 수행한다.

🥔 DMA의 장점

항목설명
CPU 부하 감소데이터 전송에 개입하지 않아도 되므로 CPU가 다른 연산을 수행할 수 있다
고속 전송 가능하드웨어 레벨에서 직접 전송하므로 속도가 빠르다
효율적인 I/O 처리대용량 데이터의 입출력 처리에 적합하다

🥔 DMA 없이 I/O 처리 방식: Programmed I/O

  • CPU가 I/O 장치의 레지스터에 직접 읽고 쓰는 방식
  • 모든 데이터 전송을 CPU가 하나하나 관리해야 한다.
  • 오버헤드가 크고, 병목 현상이 발생한다.
  • 소규모 I/O에는 적합하지만 대용량에는 부적절하다.

🥔 DMA와 Interrupt의 차이

구분DMAInterrupt
정의메모리와 장치 간 직접 데이터 전송장치의 상태 변화를 CPU에 알림
CPU 역할설정만 수행, 이후 관여 X인터럽트가 발생할 때마다 CPU가 응답
예시디스크에서 파일 읽기키보드 입력, 마우스 클릭

DMA는 대용량 전송, Interrupt는 이벤트 통지라는 점에서 사용 목적이 다르다.

🥔 DMA 사용 예시

  • 디스크 → 메모리 파일 읽기
  • 메모리 → 디스크 백업 저장
  • 사운드 카드에서 음성 데이터 스트리밍
  • 네트워크 카드의 버퍼 → 시스템 메모리 전송

🥔 마무리 요약

  • DMA는 CPU 개입 없이 I/O 장치와 메모리 간 직접 데이터 전송을 가능하게 한다.
  • CPU 부하를 줄이고 전체 시스템 성능을 향상시키는 핵심 기술이다.
  • 대용량 입출력 처리에 반드시 필요한 방식으로, 모던 운영체제의 필수 구성 요소이다.
profile
말하는 감자🥔

0개의 댓글