Итак, недавно состоялся содержательный разговор с одним из пользователей данного ресурса. Он смог меня убедить что прав, но я всё-таки сомневаюсь (на другом форуме сказали что как-то не так, но как не объяснили) .
Значит, есть 2 процесса, есть одно устройство.. . давайте это будет винчестер. Есть 2 файла по гигу. Теперь вопрос, а что будет если мы одновременно в двух процессах запустим чтение этих файлов? Будет ли читаться сначала один файл, а потом другой.. . Или будут читать маленькими кусочками оба файла по очереди? Если маленькими кусочками, то по какому правилу (просто прерывание чтения в момент переключения процессов, или же на чтения каждого файла будет выделена своя квота времени) ?
вообщем понимаете суть? Хочу знать что происходит при таком чтении и как это происходит) ) На моём любимом форуме по программированию чёто отвечают невпопад.. . Спрашиваю то же самое, а мне про буферы ввода-вывода рассказывают и про упреждающее чтение )) Надежда только на вас.
Другие языки программирования и технологии
Как же это работает. Разделение ресурсов устройств между процессами
Это зависит в первую очередь от режима работы SATA-контроллера. До появления второго поколения SATA-контроллеров все жесткие диски выполняли операции последовательно. Если же возникала ситуация вроде вашей (когда идет чтение двух файлов одновременно) , то скорость чтения существенно снижалась, поскольку головка будет попеременно метаться между разными областями диска. При этом приоритет считывания того или иного файла определить невозможно, это зависит от множества факторов (скорость работы центрального процессора, количества работающих в фоне приложений и служб, прошивки самого жёсткого диска, степени фрагментации файлов на нём, файловой системы, а также от приложения, которое инициировало считывание файла.. . ну и т. д.) . В целом работу жёсткого диска в таком режиме можно сравнить с работой лифта, который пытается перевозить пассажиров в том порядке, в каком поступают вызовы с этажей. Естественно, получается это у него далеко не самым лучшим образом, ибо жёсткий диск изначально спроектирован так, чтобы читать только один файл (головка-то одна у него) .
Появление SATA-контроллеров второго поколения (SATA-II) дало нам новый протокол обращения к жёсткому диску - AHCI (Advanced Host Controller Interface). Помимо всего прочего, AHCI-режим включал в себя поддержку технологии NCQ (Native Command Queuing - аппаратная установка очередности команд) . В этом режиме жёсткий диск работает с файлами принципиально иначе, он старается минимизировать количество метаний головки. Возвращаясь к примеру с лифтом: теперь лифт останавливается на каждом этаже, впуская и выпуская пассажиров. Да, какие-то пассажиры теперь будут ждать дольше, но большинство теперь попадает на нужный этаж намного быстрее.
Появление SATA-контроллеров второго поколения (SATA-II) дало нам новый протокол обращения к жёсткому диску - AHCI (Advanced Host Controller Interface). Помимо всего прочего, AHCI-режим включал в себя поддержку технологии NCQ (Native Command Queuing - аппаратная установка очередности команд) . В этом режиме жёсткий диск работает с файлами принципиально иначе, он старается минимизировать количество метаний головки. Возвращаясь к примеру с лифтом: теперь лифт останавливается на каждом этаже, впуская и выпуская пассажиров. Да, какие-то пассажиры теперь будут ждать дольше, но большинство теперь попадает на нужный этаж намного быстрее.
Если это видеофайлы, то их можно запустить на разных плеерах и смотреть одновременно несколько фильмов
Алексей Чаплий
да, но это не даёт ответа на вопрос )) Мы не знаем как устроен плеер... Тем более что он не читает файл одним разом, а буферизирует только часть файла (потому если смотреть фильм с диска он периодически затихает, а иногда снова раскручивается... иногда сопровождается очень коротким подвисанием видео из-за большой нагрузки при чтении).
Так что это не может служить показателем ситуации... а рядом уже ответили, как это устроено в относительно новых системах... осталось узнать как это происходило в старых :)
Так что это не может служить показателем ситуации... а рядом уже ответили, как это устроено в относительно новых системах... осталось узнать как это происходило в старых :)
Мое мнение. Скорее всего система разпределит ресурсы на два файла, но сам процес чтения файла будет более медленным, так как таких процесса два. Если же делать акцент только на один, соответственно скорость чтения будет больше
Алексей Чаплий
у меня есть предположение, так и будет, но только напрямую от квоты времени процесса чтение данных зависеть не будет. А просто будет делиться драйвером на отрезки равной длинны (или что-то типа такого) и по прочтению очередного отрезка очередь будет пересматриваться... Но вот так ли это... Вообщем очень интересен процесс обработки самой очереди (что, где, когда?) :)
Похожие вопросы
- А почему у меня в диспечере устройств 39 процессов работает?вообще ничего не делаю на компе
- я переустановила винду и все нормально,но у мя не работает мультимедия....звуко устройств вообще нет,пишет он мне....
- Как работают устройства ввода-вывода или как вывести пиксель на экран, не задействуя WinAPI и пр.?
- Как вы считаете этот ресурс хороший?
- Зачем нужно "Безопасное извлечение устройства" в Windows ?
- Как создавать программы для устройств
- Что делать,если компьютер не видит USB устройства? (телефона)
- Можно ли писать программы на одном и том же языке для разных устройств?
- Как возможно перевести программу работающую в Linux для работы в Windows? Как вкратце происходит этот процесс?
- Приоритеты процессов в Linux
За ответ спасибо )) он реально прояснил ситуацию в настоящее время... осталось разобраться с ide интерфейсом :) (кстати, вот только что на форуме ответили... полностью подтверждая всё то, что Вы написали).