Цитата
FIFO и есть связанный список. Какие отличия???
Как раз и нет. Главное отличие аналогично фундаментальной разнице между списком и массивом. В одном случае атомарной операцией (то есть не зависящей от состояния структуры) является вставка и удаление произвольного элемента, в другом - выборка.
Цитата
Ничего FIFO не гарантирует, синхронизацию доступа надо аппаратными средствами осуществлять, причем в 667х эти средства есть.
...
Не вляпались в ситуацию, когда оба процесса одновременно искалечат индексы первого и последнего элементов очереди. Это же элементарно и называется оверран.
Вы можете осуществлять синхронизацию любыми способами, которые сочтете удобными. На мой вкус FIFO удобнее.
1) ему не нужна особая специальная поддержка в аппаратных средствах.
2) оно дает возможность асинхронного взаимодействия ядер, в отличие от критических секций. В частности это позволяет решить проблему передачи данных на обработку из прерываний в основные процессы. Захват критической секции в прерывании, которое наступает асинхронно, может привести к deadlock-у.
3) overrun и underrun не является проблемой FIFO, и тут вам jcxz все правильно написал. Я только еще раз суть подчеркну: любая сторона может асинхронно проверить ситуацию на overrun/underrun и сделать правильные выводы. Для этого не нужно делать критическую секцию вокруг FIFO. Вообще говоря это не дается бесплатно, но платой является то, что писатель может увидеть overrun даже когда место на самом деле еще есть, а читатель может увидеть пустое fifo еще какое-то время после того, как там данные уже появились. Или, проще, цена состоит в том, что один-два слота памяти FIFO будут зарезервированы на крайний случай, но не будут использоваться фактически. Так вот, эта цена обычно абсолютно приемлема, так как памяти в нем гораздо больше.
4) FIFO могут использоваться для передачи данных в другие клоковые домены, хотя это уже больше относится к их реализации в ПЛИС. В этом случае им также нет конкурентов по совокупности характеристик, главной из которых является возможность асинхронной передачи данных.