Уж исходники Линуха, в т.ч. поддержки ФАТ32, точно открыты, как и спецификация FAT32. Ну а подсказать, как организовать взаимодействие и т.п., невозможно в принципе: это зависит от внутреннего устройства системы, от используемой в ней модели ввода-вывода и т.п.
Одним из важнейших и сложнейших в реализации компонентов ОС является диспетчер (менеджер) ввода-вывода, который как минимум принимает от польозовательских программ запросы на выполнение операций ввода-вывода, выполняет их стандартную обработку (например, проверяет корректность указанных в запросе данных -- адреса и длины буфера, кода функции ввода-вывода и т.д.), находит драйвер, который отвечает за управление устройством, которому адресован запрос, передаёт запрос драйверу, в дальнейшем помогает ему выполнять ввод-вывод (предосталяя ряд стандартных подпрограмм), а в конце возвращает код завершения запроса и другую информацию пользовательской программе. Диспетчер ввода-вывода отвечает и за взаимодействие драйверов между собой.
Думаю, Вам лучше для начала попробовать более-менее разобраться в драйверной модели Винды (WDM -- не путать с объектно-ориентированной WDF, появившейся в Висле и на самом деле являющейся надстройкой над WDM: без знания последней невозможно по-настоящему понять, как именно реализован ввод-вывод).
|