Здравствуйте, elmal, Вы писали:
E>Здравствуйте, netch80, Вы писали:
N>>Ну так потому что невежа-автор не отличает DMA от прерываний — потому и немного. E>Во первых, порекомендуй видео лучше.
Эээ... почему это я должен рекомендовать _видео_? Это наименее подходящий формат для объяснения подобных вещей. Видео полезно там, где что-то показываешь и иначе слишком долго и занудно рассказывать про «вот тот зелёный элемент который второй слева и на котором написано «хрен», но на самом деле там горчица, что и показано на нём же рисунком в стиле порошка».
Такие вещи подаются текстом. Возможно, с картинками. И вообще, можно начать с книг Таненбаума, Иртегова и прочих, кто писал про это...
E> А во вторых, в каком то виде про прерывания он так или иначе сказал. Только без малейших подробностей, но если копать — там закопаешься, особенно если еще разные архитектуры.
"В каком-то виде" он сказал, да, но совсем не то, что надо было сказать.
E> Основное так или иначе в видео сказано, и где там равенство DMA от прерываний я не очень понимаю, даже близко такого не увидел.
В том, что то, что он сказал про прерывания, если хоть как-то попытаться конструктивно понять, то это применимо именно для DMA. Иначе противопоставления с PIO в принципе быть не может, PIO не противопоставляется прерываниям, а дополняет (как одно из) их до полного механизма.
E> И там много чего не сказано, что хотелось бы знать.
Да. Лучше сказать, что там вообще ни о чём.
E> Например как разные устройства делят адресное пространства,
При правильной настройке они получают разные адреса. Настройкой занимается BIOS или OS в случае PCI (и ISA PnP, было когда-то такое), или производитель карт плюс админы (если могут переключателями менять) в случае ISA. Главное, что таки в современном мире эти адреса у каждого устройства можно менять в широких пределах.
E> как драйвер узнает, что такой то адрес будет использоваться именно такой видеокартой
Зависит от ОС. Но в общем случае его вызывает ОС со словами "гляди, тут, кажется, для тебя устройство" и предоставляет некую ссылку (указатель), по которой можно найти те адреса, которые задала ОС (поменяла после BIOS или нет, уже следующий вопрос).
E> и отображать адреса нужно именно сюда,
Этого не понял.
E> как разрешаются конфликты если поставили 2 видеокарты,
На ISA так нельзя было. На PCI они просто получат разные адреса в процессе первичной настройки, а метод детекта типа устройства в PCI даст, что ОС будет знать, что тут таки видеокарты, и позовёт драйвера соответственно типу.
У каждого устройства на PCI можно получить фиксированные данные — пару id vendor+device (ну ещё есть такие же для поставщика, иногда зовётся не device id, а card id), по ним в базе в самой ОС и ищется драйвер. Как это сделано — зависит от ОС. Например, FreeBSD предпочитает подход, где в данных драйвера вкомпилирован список пар таких id.
E> особенно интересно про видеокарты встроенную в процессор.
Она выглядит точно так же, как видеокарта, только находится в современных процессорах на шине 0, которая не выходит за пределы процессора.
Дальше уже дело BIOS и ОС опознать, какая карта активна — например, спросить каждую, вставлен ли в неё хоть какой-то шнурок от монитора. Но тут я уже деталей не знаю. Возможно, данные ещё и передаются по наследству от BIOS.
E>Да и вообще, как эти шины все работают я не понимаю лично вообще ни черта, начиная с шины ISA, про PCI и говорить не стоит. Когда понимал — тогда было просто — на шину были выведены большинство контактов процессора, а далее уже пошли эти мосты и уже понимания как это все работает через эти мосты нет ни черта!
Про мост достаточно сказать простую вещь: он слушает обращения к нему и если комбинация тип+адрес входит в диапазон настроенного у него, он пробрасывает в подчинённую сторону, иначе игнорирует.
E> Понимания в деталях естественно, включая всякие Plug And Play и т.д. А знать иногда б не помешало, например какого хрена USB устройства периодически отваливаются.
Про USB я уже тут ничего не скажу. Может, драйвер плохо рассчитывает толщины потоков и игнорирует какие-то устройства. Тут надо детали знать.
E> А там ведь лютая жуть идет, мало того что через чипсет, так потом может идти устройства через USB разветвители — уже давно это работает блин как магия для меня.
Да там нет особой магии и жути. Хост имеет пул номеров (от 1 до 127), которые могут назначаться устройствам. Хаб умеет запросы сверху, если знает такое устройство, передать вниз к устройству (или другому хабу), а снизу от устройства — передать наверх. Ну и хаб умеет определять факт подключения устройства и транслировать общение с ним, пока не задан номер. В общем и всё.
Жуть там начинается, когда распределяются полосы трафика. И то, возможно, это я не видел описания, как это делать прямо и ровно.
E> Общий принцип то понятен — прерывания, DMA и таймер, все как раньше, но как именно это все мапится на адресное пространство, что происходит при включении — вообще темный лес.
Ну можешь поспрашивать постепенно. Кто-нибудь ответит, хоть и не сразу.