Когда происходит чтение или запись на диск, куда передаются данные?

Я понимаю, что есть такая вещь, как контроллер диска, который содержит буфер, но было интересно, если процессор читает непосредственно из этого буфера, или данные должны сначала пойти в определенное место в памяти, а затем позволить себе быть прочитаны процессором?

кто - нибудь знает, как называется буфер? И как DMA вписывается во все это?

20
задан sawdust
09.05.2023 14:49 Количество просмотров материала 2407
Распечатать страницу

2 ответа

для чтения с диска поток данных по существу:

  • после чтения/записи сборки на требуемый цилиндр, просила ж/д глава выбран.
  • в каждом секторе считывается идентификатор сектора. Если считанный номер сектора совпадает с запрошенным номером сектора, считываются данные сектора.
  • данные по участка прочитаны как серийный поток бита, и преобразованы к байтам.
  • байты участка хранятся в сектор buffer (обычно SRAM в контроллере); это буфера сектора отличается от "дискового кэша".
  • как только весь участок был прочитан, данные утвержены используя ECC, и возможно исправлены.
  • после проверки, данные сектора передается от контроллера к ПК. Примечание: существование этого буфера сектора не очень хорошо известно, и существует широко распространенная дезинформация о том, что скорость передачи на хосте (е. g.ATA) интерфейс связан или ограничен битовой скоростью на голове р / В. Это совершенно неверно, так как эти две передачи данных являются независимыми и последовательными операциями, а не параллельными.
  • по мере того как ПК получает данные от регулятора диска через интерфейс Ата, ПК может использовать то программируемый ввод/вывод (ЦП повторно считывает регистр данных порта ATA и копирует значение в память назначения) или DMA (контроллер DMA настроен на копирование N байт от регистра данных порта ATA к буферу памяти без дальнейшего вмешательства ЦП).
  • "буфер" памяти ПК, который получает данные, может быть буфером приложения (при использовании блокировать системный вызов ввода-вывода), или может быть внутренний системный буфер под управлением файловой системы, или даже программа или память данных, если данные пришли из области подкачки (или файл подкачки).

запись на диск аналогична, за исключением того, что данные передаются с компьютера на диск регулятор, ECC высчитан, спрошенный участок обнаружен местонахождение, и после этого данные написаны от буфера участка к platter.

например:

Читать далее "разбросом" переводы, которые использует DMA chaining и список точечного сбора адресов памяти и длин буферов. Вместо одного большого, смежного буфера памяти, передача" scatter-gather " позволяет использовать несмежные буферы памяти для агрегирования запроса дискового ввода-вывода.

16
отвечен sawdust 2023-05-10 22:37

он попадает в определенную область памяти, которую ядро выделило драйверу диска. Я не думаю, что это конкретно. Эта область памяти обычно настраивается как кольцевой буфер. В зависимости от ОС эта память может быть скопирована повторно в пользовательское пространство для использования приложением.

DMA является "прямой доступ к памяти", что означает, что контроллер диска может напрямую записывать в оперативную память, не имея процессора неоднократно спрашивать его, если больше данные доступны (известный как опрос - путь вещи используется надо сделать). Вместо этого, когда весь буфер был передан, контроллер тогда прерывает ЦП, чтобы сообщить ему, что данные теперь доступны.

Если вы хотите знать о еще более низком уровне, водитель делает ioctl звонки.

2
отвечен Aaron D. Marasco 2023-05-11 00:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх