답변:
디스크 읽기의 경우 데이터 흐름은 본질적으로 다음과 같습니다.
디스크에 쓰기는 데이터가 PC에서 디스크 컨트롤러로 전송되고 ECC가 계산되고 요청 된 섹터가 찾은 다음 섹터 버퍼에서 플래터로 데이터가 기록된다는 점을 제외하면 비슷합니다.
추가 크레딧 :
DMA 체인 과 메모리 주소 및 버퍼 길이의 분산 수집 목록 을 사용하는 " 산란 수집 "전송 에 대해 읽어보십시오 . 하나의 큰 연속 메모리 버퍼 대신 "스 캐터 수집"전송을 통해 비 연속 메모리 버퍼 사용을 디스크 I / O 요청에 대해 집계 할 수 있습니다.
커널이 디스크 드라이버를 할당 한 특정 메모리 영역으로 들어갑니다. 나는 그것이 특별히 지명되었다고 생각하지 않습니다. 이 메모리 영역은 일반적으로 링 버퍼 로 구성됩니다 . OS에 따라이 메모리는 응용 프로그램에서 사용할 수 있도록 사용자 공간에 두 번째로 복사 될 수 있습니다.
DMA는 (- 방식 일 폴링으로 알려진 디스크 드라이브의 컨트롤러가 직접 더 많은 데이터를 사용할 수있는 경우를 물어 반복 CPU를하지 않고 RAM에 쓸 수 있다는 것을 의미한다 "직접 메모리 접근"입니다 사용 할 수있는). 대신, 전체 버퍼가 전송되면 컨트롤러가 CPU를 인터럽트하여 데이터를 사용할 수 있음을 알립니다.
더 낮은 수준에 대해 궁금한 경우 드라이버가 ioctl을 호출합니다.