
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.08.2013, 11:43
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Всем привет. Подскажите, узнал что винда не даёт монополизировать устройство... То есть при переключении процесса все устройства принудительно освобождаются (работа с ними прерывается и передаётся следующему процессу). Теперь мне стало интересно... а в линуксе (unix-системах) это происходит так же? То есть может ли доступ к устройству быть монополизирован одним процессом и происходит ли так по-умолчанию (если например я читаю файл в 100МБ в одном процессе, надо ли что-то делать, что бы другой процесс не мог прервать данную операцию и передёрнуть головку в другое место, вызвав потерю времени на перетягивание головки + износ оборудования)? Вот, в принципе по работе мне это не надо (так как щас пишу на php)... но вот на будущее хотелось бы знать так ли это и если нет, то краткое пояснение как... спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 12:47
|
|||
|---|---|---|---|
|
|||
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Програмёрпри переключении процесса все устройства принудительно освобождаются (работа с ними прерывается и передаётся следующему процессу). Бред. Даже в Винде процессы не работают с устройствами, а только с системным API. Работа с устройствами производится самой системой. И естественно она обрабатывает запросы по мере их поступления. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 13:19
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Dimitry SibiryakovПрограмёрпри переключении процесса все устройства принудительно освобождаются (работа с ними прерывается и передаётся следующему процессу). Бред. Даже в Винде процессы не работают с устройствами, а только с системным API. Работа с устройствами производится самой системой. И естественно она обрабатывает запросы по мере их поступления. "передаётся следующему процессу" я сказал в переносном смысле разумеется... ничего никуда не передаётся, но функции API в случае когда запрашиваются 2 файла с разных процессов начинают точно также читать файлы типа "по квотам"... то есть когда идёт переключение на процесс, автоматически идёт и переключение на чтение файла запрошенного этим процессом. Или меня ввели в заблуждение? если так, поясните пожалуйста как это происходит на системном уровне... выделяются ли квоты на работу с устройством, или как? А то я долго спорил с человеком, утверждая, что процесс может занять устройство на длительный срок (вызвать функцию API, которая будет отрабатываться длительное время, например читая файл размером в 200МБ), он же говорит, что не может, так как операция запрошенная переключенным процессом останавливается и функция, вызванная процессом на который произошло переключение продолжит свою работу. В интернете поиском вычитал, что устройства в виндовсе не могут быть монополизированы, а копирование трёх файлов одновременно замедляют процесс в намного больше раз только из-за того, что происходит частый перевод головки с места на место для достижения эффекта одновременного копирования. Потому предположил что мой собеседник был прав? В чём я ошибся? Расскажите пожалуйста, или ссылку киньте на источник, которому можно было бы верить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 18:02
|
|||
|---|---|---|---|
|
|||
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
ПрограмёрТо есть может ли доступ к устройству быть монополизирован одним процессом и происходит ли так по-умолчанию (если например я читаю файл в 100МБ в одном процессе, надо ли что-то делать, что бы другой процесс не мог прервать данную операцию и передёрнуть головку в другое место, вызвав потерю времени на перетягивание головки + износ оборудования)?Даже если поставить систему раком, стартанув time-critical нитку, вы всё равно не сможете монополизировать всё процессорное время. Поэтому оставьте вредные привычки чесать левое ухо правой рукой и через задницу. Вам сказали "файл читать"? Вот и читайте, не подсчитывая сколько seek-ов будет сделано в процессе такого чтения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 19:16
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Basil A. SidorovПрограмёрТо есть может ли доступ к устройству быть монополизирован одним процессом и происходит ли так по-умолчанию (если например я читаю файл в 100МБ в одном процессе, надо ли что-то делать, что бы другой процесс не мог прервать данную операцию и передёрнуть головку в другое место, вызвав потерю времени на перетягивание головки + износ оборудования)?Даже если поставить систему раком, стартанув time-critical нитку, вы всё равно не сможете монополизировать всё процессорное время. Поэтому оставьте вредные привычки чесать левое ухо правой рукой и через задницу. Вам сказали "файл читать"? Вот и читайте, не подсчитывая сколько seek-ов будет сделано в процессе такого чтения. Ёлки )) Да вопрос ведь не в том, что я хочу как-то систему понасиловать и сделать так, как я хочу... Я спрашиваю как ведёт себя система, когда я прошу её что-то сделать с устройством (проиграть звук например)... То есть я в одном процессе вызываю функцию воспроизведения и в другом тоже вызываю эту же функцию... Как поступит виндовс и как поступит линукс... Мне просто интересно знать что и как происходит, мне не интересно это менять под себя (нет, конечно знание - сила... зная что это так, а мне надо иначе - можно воспользоваться знаниями, но сейчас вопрос задаю не для этого). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 20:57
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Програмёр, Есть еще такие штуки как файловая система со своими представлениями о работе с файлами, буфер ввода-вывода, упреждающее чтение... Так что, совсем не факт, что при чтении файла двумя процессами одновременно головки будут туда-сюда бегать по каждому чиху. Тоесть, бегать то они будут, но по мере исчерпания буфера, например. А есть еще и другая сторона - фрагментация. Это когда файл разбросан кусками по поверхности диска. Тогда даже при последовательном чтении файла одним процессом головкам придется туда-сюда... О, да, не забудьте еще про своп, логи... и другие служебные надобности ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 21:58
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
vkleПрограмёр, Есть еще такие штуки как файловая система со своими представлениями о работе с файлами, буфер ввода-вывода, упреждающее чтение... Так что, совсем не факт, что при чтении файла двумя процессами одновременно головки будут туда-сюда бегать по каждому чиху. Тоесть, бегать то они будут, но по мере исчерпания буфера, например. А есть еще и другая сторона - фрагментация. Это когда файл разбросан кусками по поверхности диска. Тогда даже при последовательном чтении файла одним процессом головкам придется туда-сюда... О, да, не забудьте еще про своп, логи... и другие служебные надобности ОС. Это то всё я понимаю... И про буфер ввода-вывода и про остальное... Но, суть задачи - запустить 2 процесса одновременно и попробовать в них считать файлы больших объёмов (ну например по гигу каждый) и загнать это всё в оперативку разумеется... Вот мы это сделали... мне интересно узнать что происходит на уровне системы теперь... то есть используется ли какая-то функция прерывающая чтение, или как это происходит? Ждёт ли кто-то кого-то, или не ждёт? ну и другое. Просто нигде не могу найти инфы в инэте по данному вопросу... только форумы и обсуждения... и те с непонятным исходом... Кто-то же тут явно должен знать как это работает? может я вопрос как-то неверно задаю? если да, то скажите что в нём непонятного )). Может не знаю, вопрос в ветку виндовса перенести? (просто тут создавал, так как думал что знаю как в винде это работает и хотел узнать как в линуксе, а теперь оказалось что и в винде возможно не так) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 22:12
|
|||
|---|---|---|---|
|
|||
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Запросы ставятся в очередь к драйверу, драйвер их обрабатывает и пересылает устройству, устройство их обрабатывает и исполняет. На любом этапе очередь может переупорядочиваться. А там ещё прямой доступ к памяти, прерывания всякие... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 22:22
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Dimitry SibiryakovЗапросы ставятся в очередь к драйверу, драйвер их обрабатывает и пересылает устройству, устройство их обрабатывает и исполняет. На любом этапе очередь может переупорядочиваться. А там ещё прямой доступ к памяти, прерывания всякие... можно подробнее описать процесс обработки очереди... Именно он меня интересует.. Потому так и получается, что мне отвечают, а я нужного в ответах не нахожу, так как отвечают в общем. Заранее спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 22:28
|
|||
|---|---|---|---|
|
|||
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
http://ru.wikipedia.org/wiki/NCQ например. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 22:33
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Dimitry Sibiryakov http://ru.wikipedia.org/wiki/NCQ например. То есть с многозадачностью ничего общего не имеет? То есть сама система не реализует систему очереди, а опять же всего лишь поддерживают такую функциональность устройства? ))) Блин... так меня же просто надули получается )) И значит я был прав в споре... Я ведь правильно сейчас сказал? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 23:06
|
|||
|---|---|---|---|
|
|||
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
ПрограмёрЯ ведь правильно сейчас сказал? )) Нет. У системы - своя очередь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2013, 08:46
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Dimitry SibiryakovПрограмёрЯ ведь правильно сейчас сказал? )) Нет. У системы - своя очередь. Вы это нарошно? Расскажите пожалуйста суть программной очереди На сколько большое влияние на процесс имеет программная очередь? То есть, если системе было направлено 10 запросов на чтение файла, то она просто выставит эти запросы в ряд и будет отдавать их устройству как только то будет готово их принять? А если устройство может принять только 5 запросов, то система запросит 5 файлов, а остальные 5 будут ждать, пока не считаются предыдущие 5 (ну то есть один считался - запрос на следующий отправился)? Тогда получается чтение всёровно остаётся последовательным? Или запросы на чтение файлов как-то перемешиваются (то есть они читаются по кускам, что бы один файл не ждал полного прочтения второго файла)? Меня это интересует больше всего... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2013, 14:10
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Это зависит от конкретного устройства! Например, принтер монополизируется до завершения печати документа. чтобы с устройством можно было работать многопоточно - должен быть некий софт в самом устройстве или в ОС, который такую работу понимает. И так же само устройство должно быть заточено под такой функционал. как правило, есть некоторый минимальный обьем, меньше которого нельзя распределять 1 ресурс между несколькими процессами. Для дисковых накопителей это сектор. Если процесс начал чтение сектора, то пока он чтение не закончит, другой процесс не может его прервать (в другом варианте более приоритетный процесс его прервать может, но тогда текущему процессу этот сектор надо будет читать заново). Вариант в скобках используется редко, и использовать его можно далеко не всегда, и не со всеми типами ресурсов. Есть следующий подход -- процессам назначаются приоритеты. Если процесс захватывает ресурс, а потом процесс с более высоким приоритетом хочет захватить этот ресурс, то приоритет первого процесса временно повышается. Если еще кто-то приоритетный начинает хотеть этот ресурс -- приоритет первого процесса снова повышается до максимального из тех,кто хочет этот ресурс. То есть, надо смотреть на конкретное устройство под конкретной ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2013, 14:15
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Програмёр, авторузнал что винда не даёт монополизировать устройство... Откуда ты такое узнал? Попробуй открыть например "COM1:" с двух разных процессов. Или "\\.\C:" - он уже открыт и монополизирован. авторТо есть может ли доступ к устройству быть монополизирован одним процессом и происходит ли так по-умолчанию (если например я читаю файл в 100МБ в одном процессе, надо ли что-то делать, что бы другой процесс не мог прервать данную операцию и передёрнуть головку в другое место, вызвав потерю времени на перетягивание головки + износ оборудования)? Файл это не устройство. Устройство может быть представленно как файл но не наоборот. Между файлом и устройством может быть большое расстояние в прямом и переносном смысле. авторТо есть, если системе было направлено 10 запросов на чтение файла, то она просто выставит эти запросы в ряд и будет отдавать их устройству как только то будет готово их принять? Тем более устройства не работают с файлами. С файлами работает часть операционной системы под названием "Файловая система" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2013, 16:01
|
|||
|---|---|---|---|
|
|||
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Програмёрможно подробнее описать процесс обработки очереди... Именно он меня интересует..Пришёл первоклассник к аспиранту мехмата и попросил рассказать про ассимптотические ряды. Ну интересно стало ребёнку ...Потому так и получается, что мне отвечают, а я нужного в ответах не нахожу, так как отвечают в общемА вы уже знаете свою половину ответа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2013, 17:34
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
OoCcавторТо есть может ли доступ к устройству быть монополизирован одним процессом и происходит ли так по-умолчанию (если например я читаю файл в 100МБ в одном процессе, надо ли что-то делать, что бы другой процесс не мог прервать данную операцию и передёрнуть головку в другое место, вызвав потерю времени на перетягивание головки + износ оборудования)? Файл это не устройство. Устройство может быть представленно как файл но не наоборот. Между файлом и устройством может быть большое расстояние в прямом и переносном смысле. ДА НУ!!!! правда?!!!! блин... а я то думал у меня на винчестере куча устройств лежит.... (Вы сами вдумайтесь то... я про винчестер говорил, как про устройство... а не про файл). Неужели Вы меня настолько нубом считаете? )) OoCcавторТо есть, если системе было направлено 10 запросов на чтение файла, то она просто выставит эти запросы в ряд и будет отдавать их устройству как только то будет готово их принять? Тем более устройства не работают с файлами. С файлами работает часть операционной системы под названием "Файловая система" Как-то даже скучно ... Неужели на данном форуме никто не знает как это работает? Уже всё вокруг обошли, а ответа на вопрос не дали... Когда спросил настолько прямо, что уже нельзя ответить правильно не раскрыв сути, так начали вообще какие-то левые истины открывать... Файл, если просто и своими словами - это именованная адресованная структура байт хранящаяся на запоминающем устройстве. Так вот запрос на чтение файла может быть произведён не только по имени (то есть запрос к драйверу файловой системы), но и по адресу и размеру (запрос от драйвера к устройству)... Если нам надо считать 100 метров инфы, мы ведь не будет их по одному сектору читать (сколько там... по 512 байт вроде стандартный для винта... 100 000 000 / 512 = 200 000 запросов), и создавать циклы огромных размеров и тратить уйму времени на запросах. Так что понимание "файл" на аппаратном уровне - это массив данных на носителе... И даже если я неверно выразился, сути вопроса это не изменило... Повторюсь, основной вопрос: организация программной очереди ОС (в частности Windows). С аппаратной уже определились (NCQ), так что её описывать не надо... А вот как поступает система, если у неё попросили прочитать 10 файлов одновременно (ну то есть 10 процессов хотят считать по файлу)? Как система организовывает такое "параллельное" чтение? Что будет читаться и когда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2013, 17:51
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
chabapokЭто зависит от конкретного устройства! Например, принтер монополизируется до завершения печати документа. чтобы с устройством можно было работать многопоточно - должен быть некий софт в самом устройстве или в ОС, который такую работу понимает. И так же само устройство должно быть заточено под такой функционал. как правило, есть некоторый минимальный обьем, меньше которого нельзя распределять 1 ресурс между несколькими процессами. Для дисковых накопителей это сектор. Если процесс начал чтение сектора, то пока он чтение не закончит, другой процесс не может его прервать (в другом варианте более приоритетный процесс его прервать может, но тогда текущему процессу этот сектор надо будет читать заново). Вариант в скобках используется редко, и использовать его можно далеко не всегда, и не со всеми типами ресурсов. Есть следующий подход -- процессам назначаются приоритеты. Если процесс захватывает ресурс, а потом процесс с более высоким приоритетом хочет захватить этот ресурс, то приоритет первого процесса временно повышается. Если еще кто-то приоритетный начинает хотеть этот ресурс -- приоритет первого процесса снова повышается до максимального из тех,кто хочет этот ресурс. То есть, надо смотреть на конкретное устройство под конкретной ОС. Спасибо, Ваш ответ реально полезен :)... По поводу работы в общем с устройствами - понял... По поводу работы Windows с жёсткими дисками... Как и написал в прошлом посте, если считывать инфу по 1 сектору, то файл среднего размера (100МБ) будет считан полностью только после 200 000 запросов (приблизительно... количество секторов такого файла). Так вот, делает ли реально система именно так, рвёт запрос на файл на уйму маленьких кусочков, перемешивает их и начинает читать? или же эти куски намного больше (например по кластерам, или ещё как)... Или же вообще никаких кусочков не будет, а будет цельное чтение одного файла, потом другого, потом третьего? Из Вашего ответа следует, что ядро ОС вообще не имеет к этому процессу (работы с устройствами) никакого отношения (никак на него не влияет) и зависит только от драйвера. Значит и процесс обработки очереди описывается в драйвере и зависит только от него? Тогда интересно знать, как именно ведёт себя драйвер по-умолчанию (который с Windows поставляется)... Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.08.2013, 18:04
|
|||
|---|---|---|---|
|
|||
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
ПрограмёрФайл, если просто и своими словами - это именованная адресованная структура байт хранящаяся на запоминающем устройствеФайл это именованная сущность, а не то, что вы подумали.А вот как поступает система, если у неё попросили прочитать 10 файлов одновременно (ну то есть 10 процессов хотят считать по файлу)? Как система организовывает такое "параллельное" чтение? Что будет читаться и когда?Курите сорцы винды, если вам нужны такие детали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 00:39
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Basil A. SidorovПрограмёрФайл, если просто и своими словами - это именованная адресованная структура байт хранящаяся на запоминающем устройствеФайл это именованная сущность, а не то, что вы подумали.А вот как поступает система, если у неё попросили прочитать 10 файлов одновременно (ну то есть 10 процессов хотят считать по файлу)? Как система организовывает такое "параллельное" чтение? Что будет читаться и когда?Курите сорцы винды, если вам нужны такие детали. Ну, исходники то можно покрутить... Но во-первых, не уверен что исходники винды вообще раздобыть можно (всётаки не opensource), а даже если их раздобыть, то не думаю, что требуемая логика в 10 строках заключена. Нет, конечно если по работе надо и этот труд будет оплачен, то конечно можно и покопаться... Но я же для себя (а значит не могу сидеть и дни напролёт исходники изучать, так как с голоду помру )... Потому и спрашиваю, в надежде, что на тему набредут люди, которые с этим как-то связывались и знают как это работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 15:57
|
|||
|---|---|---|---|
|
|||
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
ПрограмёрПотому и спрашиваю, в надежде, что на тему набредут люди, которые с этим как-то связывались и знают как это работает...Есть книжки аля "Ресурсы Windows NT". Там, кроме прочего, рассказывается об устройстве подсистемы ввода-вывода этой самой NT. Принципы - объяснены, а детали - в тех самых исходниках. P.S. Практичнее надо быть. Даже если вы нароете "утёкшие" исходники какого-то из билдов Windows 2000 - ничем это вам не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 16:37
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
ПрограмёрПовторюсь, основной вопрос: организация программной очереди ОС (в частности Windows). С аппаратной уже определились (NCQ), так что её описывать не надо... А вот как поступает система, если у неё попросили прочитать 10 файлов одновременно (ну то есть 10 процессов хотят считать по файлу)? Как система организовывает такое "параллельное" чтение? Что будет читаться и когда? Ёпть - почитайте про прерывания, PSW, ПДП, приоритеты и переключение процессов и их контекстов ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 23:10
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Basil A. SidorovПрограмёрПотому и спрашиваю, в надежде, что на тему набредут люди, которые с этим как-то связывались и знают как это работает...Есть книжки аля "Ресурсы Windows NT". Там, кроме прочего, рассказывается об устройстве подсистемы ввода-вывода этой самой NT. Принципы - объяснены, а детали - в тех самых исходниках. P.S. Практичнее надо быть. Даже если вы нароете "утёкшие" исходники какого-то из билдов Windows 2000 - ничем это вам не поможет. ок. гляну... спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 23:11
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
landyПрограмёрПовторюсь, основной вопрос: организация программной очереди ОС (в частности Windows). С аппаратной уже определились (NCQ), так что её описывать не надо... А вот как поступает система, если у неё попросили прочитать 10 файлов одновременно (ну то есть 10 процессов хотят считать по файлу)? Как система организовывает такое "параллельное" чтение? Что будет читаться и когда? Ёпть - почитайте про прерывания, PSW, ПДП, приоритеты и переключение процессов и их контекстов ... Почитал... интересно ) Но большую часть уже знал... а это всё оказалось "около" требуемого, но не оно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.08.2013, 14:55
|
|||
|---|---|---|---|
подскажите немного теории общения с устройствами (вопрос на "да" и "нет") |
|||
|
#18+
Програмёр Из Вашего ответа следует, что ядро ОС вообще не имеет к этому процессу (работы с устройствами) никакого отношения (никак на него не влияет) и зависит только от драйвера. Значит и процесс обработки очереди описывается в драйвере и зависит только от него? Тогда интересно знать, как именно ведёт себя драйвер по-умолчанию (который с Windows поставляется)... Конкретно, охватив весь список устройств, ответить на вопрос невозможно. связка программа<->ядро ОС работает через api, и оно документировано связка ядро ОС<->драйвер работает по унифицированному протоколу, который найти относительно реально. Любой производитель, делая железку и выпуская под нее драйвер, руководствуется такой документацией. связка драйвер<->железка работает по условно-унифицированному протоколу, или по закрытому. В зависимости от железки. Найти его описание в общем случае нереально, однако если железка сделана с использованием широко распространенных микросхем, то можно найти документацию на эти микросхемы, в которой описывается апи как с ними работать. Но как именно конкретный драйвер использует это апи - сказать нельзя. Только путем реверс-инжиниринга. Есть такие любители, например на лоре в 2007 тип принялся писать драйвер принтера кэнон-номер_не_помню для линукса. Описания протокола нет, он все делал реверс-инжинирингом и к сегодняшнему дню он довольно сильно в этом деле продвинулся. Насколько помню, не так давно он хвастался, что уже может печатать документы, правда регулярно в печати встречаются полосы, избавиться от которых у него пока не вышло. Конкретно про чтение файлов - можете искать описание протоколов ide, sata,и производных от них. Если интересно "какое-нибудь" чтение - можно найти исходинки работы с флешкой для embedded-систем, и поизучать. Конкретно про работу с вводом-выводом на диск виндой и линукс -- большинство драйверов работает так: задачи бьются по секторам или группам секторов, и работа с ними исполняется или последовательно(скорей всего в hdd) или (если у нас sata в режиме achi) в ограниченное число потоков(в нормальных ssd). Число потоков, вероятно, зависит от конкретной модели винчестера. При этом для некоторых задач (например форматирование) группой секторов может быть весь винчестер. если протокол "ядро ОС<->драйвер" не допускает одновременную работу с ресурсом, то одновременной работы с ресурсом нет, а если допускает, то все зависит от драйвера, в котором это может быть реализовано, а может и нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=25&mobile=1&tid=1482838]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 300ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...