Прямой доступ к памяти (DMA - Direct Memory Access)
Прямой доступ к памяти реализуется с помощью DMA - контроллера.
Контроллер содержит несколько регистров:
- регистр адреса памяти
- счетчик байтов
- управляющие регистры, могут содержать:
- порт ввода-вывода
- чтение или запись
- единицы переноса (побайтно или пословно)
Без контроллера происходит следующее:
- Процессор дает команду дисковому контроллеру прочитать данные в буфер,
- Считываются данные в буфер, контроллер проверяет контрольную сумму считанных данных (проверка на ошибки). Процессор, до прерывания, переключается на другие задания.
- Контроллер диска инициирует прерывание
- Операционная система начинает работать и может считывать из буфера данные в память
Работа DMA - контроллера
С контроллером происходит следующее:
- Процессор программирует контроллер (какие данные и куда переместить)
- Процессор дает команду дисковому контроллеру прочитать данные в буфер
- Считываются данные в буфер, контроллер диска проверяет контрольную сумму считанных данных, (процессор, до прерывания, переключается на другие задания).
- Контроллер DMA посылает запрос на чтение дисковому контроллеру
- Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память
- Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру
- DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов
- Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.
- Контроллер DMA инициирует прерывание
Операционной системе не нужно копировать данные в память, они уже там.