Задачка на файловую систему.
Написана на C#, для запуска нужно использовать Visual Studio не ниже 2010, открывать файл CatFileSystem.sln

Решение состоит из 3 папок:
FS - сама файловая система
CLI - консольный интерфейс к файловой системе
Tests - тесты на файловую систему

Для проверки можно запустить программу из Visual Studio или скомпилировать её и запустить exe.
При этом должен будет запуститься консольный интерфейс с простыми командами вроде cat,echo,другие. Есть help команда с описанием.
Особая команда - test, она запускает 10 потоков, проходящих файловую систему и выводящих размер файлов. Это команда как раз проверяет корректность блокировки.

Для реализации блокировки использован алгоритм булочной, который позволяет неограниченное число параллельных потоков.
Для реализации файловой системы используется файл, разделенный на 2 части.
В первой части хранятся записи о названиях файла, содержащие имя файла и номер первого блока с его содержимым.
Во второй части хранятся собственно блоки данных, каждый блок хранит байтовый массив информации и, возможно, ссылку на следующий блок файла.

Я постарался прокомментировать каждый класс и некоторые методы.
Но язык C# содержит много интересных возможностей, который могут показаться неочевидными тому, кто пользуется им не часто.
Поэтому я готов отвечать на любые вопросы по синтаксису или логике самого решения.