I/O 인터페이스와 버스
네트워크 카드나 NVMe SSD 등에서 널리 사용되는, 메모리 상의 기술자(디스크립터) 링을 사용한 DMA 구조에 대해 올바른 것은 무엇입니까?
- ACPU가 데이터를 1바이트씩 기기의 레지스터에 써서 전송한다
- BCPU는 전송의 주소와 길이를 기술자에 써서 기기에 알리기만 하고, 기기가 기술자를 읽어 스스로 전송을 진행한다
- C기술자는 기기 안에만 있고 CPU에서는 보이지 않는다
정답과 해설 보기
정답: B. CPU는 전송의 주소와 길이를 기술자에 써서 기기에 알리기만 하고, 기기가 기술자를 읽어 스스로 전송을 진행한다
기술자 링은 메인 메모리 상에 나열한 「어느 주소부터 몇 바이트를 보낼지」를 적은 표를 고리처럼 사용하는 구조입니다. CPU는 비어 있는 기술자에 전송 내용을 쓰고, 기기 레지스터에 「여기까지 썼다」고 한 번 알립니다. 기기는 DMA로 기술자를 읽고 데이터를 전송하며, 끝난 기술자에 완료 표시를 붙입니다. CPU와 기기가 서로를 기다리지 않고 많은 전송을 진행할 수 있습니다.
- A. 그것은 DMA를 사용하지 않는 프로그램에 의한 입출력입니다.
- B. 올바릅니다. 많은 전송을 한꺼번에 기기에 맡길 수 있습니다.
- C. 기술자는 메인 메모리에 놓이며 CPU와 기기 모두 읽고 씁니다.