Давайте візьмемо жорсткий диск / мережевий інтерфейс. Її поділяють декілька процесів. Тепер кілька процесів можуть видавати на жорсткий диск одночасні команди для зчитування даних. Коли дані доступні, як ядро знає, для якого процесу дані готові? Чи дотримується якийсь протокол між ОС і жорстким диском. тобто деякі метадані, які повертаються з готовими даними?
Відповіді:
1 для відповіді № 1Якщо мова йде про дані, характерні для кожного процесу (наприклад,г. доступ до файлу, відкритого з файлової системи на жорсткому диску або в приймальній мережі), як правило, серіалізується за допомогою механізмів блокування. "Протокол" (присвоєння належним чином отриманих даних запитуваному процесу) - це більш-менш специфічна частина драйвера або ядра - робиться інакше, наприклад, код мережі та код віртуальної файлової системи.
Це дуже добре описано в розділі "Конкурс та умови перегонів" книги драйверів пристроїв Linux від Kroah-Hartman, Rubini, Corbet. Ви можете подивитися тут: https://www.safaribooksonline.com/library/view/linux-device-drivers/0596005903/ch05.html