Для чтения с диска поток данных по существу:
- после того, как сборка для чтения / записи будет в запрошенном цилиндре, будет выбрана запрошенная головка.
- в каждом секторе читается идентификатор сектора. Если считанный номер сектора совпадает с запрошенным номером сектора, то данные сектора считываются.
- данные сектора считываются как последовательный битовый поток и преобразуются в байты.
- байты сектора хранятся в буфере сектора (обычно SRAM в контроллере); этот секторный буфер отличается от «дискового кэша».
- После считывания всего сектора данные проверяются с использованием ECC и, возможно, корректируются.
- После проверки данные сектора передаются с контроллера на хост-компьютер. Примечание: существование этого секторального буфера не очень хорошо известно, и существует широко распространенная дезинформация о том, что скорость передачи на интерфейсе хоста (egATA) связана или ограничена скоростью передачи в головке R / W. Это совершенно неверно, поскольку эти две передачи данных являются независимыми и последовательными операциями, а не одновременными.
- так как ПК получает данные от контроллера диска через интерфейс ATA, ПК может использовать либо запрограммированный ввод-вывод (ЦП многократно считывает регистр данных порта ATA и копирует значение в память назначения), либо DMA (контроллер DMA установка для копирования N байтов из регистра данных порта ATA в буфер памяти без дальнейшего вмешательства ЦП).
- «Буфер» памяти компьютера, который принимает данные, может быть буфером приложения (при использовании системного вызова блочного ввода-вывода ), или может быть внутренним системным буфером под управлением файловой системы, или даже памятью программы или данных, если данные поступают из свопинга область (или файл подкачки).
Запись на диск аналогична, за исключением того, что данные передаются с ПК на контроллер диска, вычисляется ECC, запрашивается сектор, а затем данные записываются из буфера секторов на диск.
Для дополнительного кредита:
Читайте о передачах " рассеяния-сбора ", которые используют цепочку DMA и список рассеяния-сбора адресов памяти и длины буфера. Вместо одного большого непрерывного буфера памяти передача "разброс-сборка" позволяет агрегировать несмежные буферы памяти для запроса дискового ввода-вывода.