Search

DMA

class
운영체제 심화
상태
완료
날짜
목차

DMA

DMA(Direct Memory Access)는 일부 하드웨어에게 CPU와 독립적으로 메인 메모리에 접근할 수 있게 해주는 기능입니다.

DMA의 주요 장점

1.
효율성 증가 : DMA를 사용하면 CPU는 데이터 전송 과정에서 대기할 필요가 없으므로 다른 작업을 계속 수행할 수 있습니다.
2.
데이터 처리 속도 향상 : 대량의 데이터를 빠르게 전송할 수 있기 때문에 입출력 장치의 성능이 크게 향상됩니다.

DMA 작동 방식

1.
DMA 요청 : 입출력 장치가 데이터 전송을 필요로 할 때, DMA 컨트롤러에게 전송 요청을 합니다.
2.
DMA 컨트롤러 활성화 : DMA 컨트롤러는 CPU로부터 제어권을 받아 메모리 버스와 주변장치 버스의 제어권을 획득합니다.
3.
데이터 전송 : DMA 컨트롤러는 입출력 장치와 메모리 사이에서 데이터를 직접 전송합니다.
4.
전송 완료 : 데이터 전송이 끝나면 DMA 컨트롤러는 CPU에게 인터럽트를 보내 전송이 완료되었음을 알립니다.

DMA 예시

조금 더 DMA를 활용하는 부분에 대해 상세히 설명해보겠습니다.
요청 초기화
사용자가 SSD에서 데이터를 읽고 싶어할 때, 운영체제는 필요한 데이터의 위치와 크기를 파악하고, 이 정보를 바탕으로 DMA 작업을 초기화합니다.
메모리 할당
운영체제는 데이터를 저장할 메모리 영역을 할당합니다.
DMA 컨트롤러 설정
CPU는 DMA 컨트롤러에게 데이터를 읽어야 할 SSD의 물리적 주소와 데이터를 저장할 메모리의 주소를 알려줍니다. 또한, 전송할 데이터의 크기와 같은 세부 사항도 설정합니다.
여기까지는 운영체제가 관여하는 부분입니다. 즉, 어떤 데이터를 읽고 그 데이터를 어떤 메모리에 보관할지 모두 운영체제가 DMA에 지시하는 것입니다.
데이터 전송
DMA 컨트롤러는 설정된 주소에서 SSD의 데이터를 직접 메모리로 전송합니다. 이 과정에서 CPU는 데이터 전송에 직접 관여하지 않으며, 다른 작업을 계속 수행할 수 있습니다.
전송 완료
데이터 전송이 완료되면, DMA 컨트롤러는 CPU에게 인터럽트를 발생시켜 전송이 완료되었음을 알립니다.

DMA 부설

제가 DMA를 완전히 CPU와 다른 장치처럼 얘기했지만, 사실 현대의 DMA는 CPU 칩에 포함되어 있습니다.
CPU 칩의 구성 요소인 코어, 레지스터, 캐시 등 중 하나이죠.