Всем привет!
Вопрос понимающим в железе.
Возьмем, например, локальную проводную сеть. На самом низком уровне, НЯЗ, она работает так: сетевая карта «выставляет на шину» пакет, т.е. последовательность сигналов 1/0, содержащий заголовок какого-то самого низкоуровневого протокола и данные. В заголовке - физический адрес сетевой карты-получателя. Этот пакет принимают ВСЕ карты, сверяют адрес получателя со своим собственным, и выкидывают пакет, если адрес не совпадает. Вопросы:
-
В вышеописанном все верно, или нет?
-
Непонятны детали: как карты между собой разбираются, чей черед слать пакет? Как регламентируется длина пакета? Кто вообще отвечает за синхронизацию, особенно в одноранговой сети?
Теперь про шину внутри компа на материнке. Она работает аналогично? Как там вообще происходит?
-
Допустим, если всем рулит процессор: такт 1 - он выставляет на шину адрес и в старших битах - код устройства, к которому обращается, и команду «чтение/запись»; такт 2 - устройство (при чтении) или процессор (при записи) выставляет на шину данные. Или все совсем не так?
-
Что насчет DMA? Оно же тоже должно шину использовать, например при копировании данных с устройства в RAM. Кем и как принимается решение, кто занимает шину в следующий такт - процессор или DMA?
Благодарствую. :)