dragon писал(а):
Версии модулей, цифровые подписи и идентификаторы разработчика - это уже всё слишком сложно
Я так понял, что на этом форуме принято первый ответ писать более-менее по существу, а потом начинается "ла-ла-ла" и вопрос забалтывается. Предложить цифровые подписи новичку -- толсто.
dragon писал(а):
Ну допустим для базовых модулей можно номера поставить типа 0 - менеджер памяти, 1 - планировщик и т.п., но вопрос что делат с другими модулями? Например подсистемы fat32 может и не быть, как обязательного компонента.
Абстрагировать нужно не сами модули, а классы модулей, учитывая, что модулей какого-то класса в систему может быть загружено больше одного, как в случае файловых систем. SDK VFS должен включать в себя и интерфейс типа IFileSystem, реализуемый впоследствии конкретным модулем, типа FAT32.dll.
Код, использующий модули, сможет получить от ядра этот IFileSystem и использовать его, не вникая в подробности реализации. Нужно лишь внести в IFileSystem все нужные методы, чтобы ничего не приходилось запрашивать в обход него. Иначе это уже не абстракция, а каша.
Когда модулей одного класса несколько, должна быть возможность их перечисления и запроса интерфейса у конкретного модуля с передачей ему контекста -- номера или UID.
Посмотри код любой программы, использующей загружаемые модули. Не обязательно ОС, а просто программы, типа Far или Miranda.