Ответ на ваш первый вопрос заключается в том, что помимо Fuse, как кто-то другой сказал вам, вы также можете использовать Dokan, который делает то же самое для Windows, и оттуда просто возникает вопрос о чтении и записи в физический раздел (http://msdn.microsoft.com/en-us/library/aa363858%28v=vs.85%29.aspx (см., В частности, раздел «Физические диски и тома»).
Конечно, в Linux или Unix, кроме использования чего-то вроде Fuse, вам нужно всего лишь выполнить, чтение или запись нужного устройства в / dev / xxx (если вы root), и в этих терминах Unices более дружелюбный или небезопасный в зависимости от вашей точки зрения.
Оттуда попробуйте реализовать простую файловую систему, такую как Fat, или что-то более экзотическое, например, файловую систему tar, или даже какую-нибудь простую файловую систему, основанную на концепциях Unix, такую как UFS или Minux, или просто что-то, что регистрирует только сделанные вызовы и их аргументы файла журнала (и это поможет вам понять, какие вызовы выполняются драйверу файловой системы во время регулярного использования вашего компьютера).
Теперь ваш второй вопрос (на который гораздо проще ответить), да, C / C ++ справится с задачей, так как они являются языком разработки системы, также большая часть вашего примера кода будет на C / C ++, поэтому по крайней мере, вы будете читать C / C ++ в своей разработке.
Теперь для вашего третьего вопроса, да, это может быть выполнено одним человеком, например, файловая система ext (широко известная в мире Linux своими преемниками как ext2 или ext3) была создана одним разработчиком Теодором Цо, так что не думаю, что эти вещи не могут быть выполнены одним человеком.
Теперь, заключительные замечания, помните, что настоящая файловая система взаимодействует со многими другими подсистемами в обычном ядре, например, если у вас есть ноутбук и он находится в спящем режиме, файловая система должна сбрасывать все изменения, сделанные в открытых файлах, если у вас есть файл подкачки в разделе или даже если файл подкачки имеет свою собственную файловую систему, это повлияет на вашу файловую систему, особенно на размеры блоков, так как они будут иметь тенденцию быть равными или равными степеням размера блока страницы, потому что просто разместить блок из файловой системы в памяти, который по совпадению равен размеру страницы (потому что это только одна передача).
А также, безопасность, так как вы захотите контролировать пользователей и какие файлы они читают / пишут, и это обычно означает, что перед открытием файла вам нужно будет знать, какой пользователь вошел в систему, и какие разрешения он имеет для этот файл. И, очевидно, без файловой системы пользователи не могут запускать какие-либо программы или взаимодействовать с машиной. Современные слои файловой системы также взаимодействуют с сетевой подсистемой из-за того, что существуют сетевые и распределенные файловые системы.
Так что, если вы хотите узнать больше о работе с файловыми системами ядра, вот о чем вам следует беспокоиться (помимо знания интерфейса VFS)
P.S .: Если вы хотите, чтобы разрешения Unix работали в Windows, вы можете использовать что-то вроде того, что MS использует для NFS на серверных версиях Windows (http://support.microsoft.com/kb/262965)