Отправляет email-рассылки с помощью сервиса Sendsay

Операционная система Proolix

Q & A

Hi, All!

Как я уже говорил, иногда свои ответы на вопросы, касающиеся Пруликса,
полученные по е-мейлу или в icq я дублирую сюда, для всеобщего сведения.
Учитывая то, что у Пруликса документация и комментарии в исходниках
очень скудные, эти ответы, я думаю, будут полезны.

Вот еще свежее:

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

А если на диске есть файловая система, то появляется понятие логического
блока. Для FAT-12/FAT-16/FAT-32 это кластер, размер кластера может быть
разным от 1 сектора и больше. Размер кластера в секторах указан
бут-секторе в переменной ClustSiz (файл src/boot/boots.asm Proolix-d)

Теперь о работе с файловой системой. Эта работа реализована в системе
Proolix-d. Там реализована работа с FAT-12 и FAT-16. Это все реализовано
в ядре, см. каталог src/kernel:

Файл io.c. Функции:

open() - открыть файл
read() - читать из файла
write() - писать в файл
close() - закрыть файл

absread.c и abswrite.c - чтение и запись физического блока (сектора) на диск

cluread.c - чтение кластера

sec4clu.c - вычисление номера первого сектора кластера

dir.c - работа с каталогами

Файл k2.c:

Функции

LinkClu() - определение по номеру кластера номера следующего кластера в
цепочке, составляющей файл

GetFreeClu() - получить номер свободного кластера

AppendClu() - формирование цепочки кластеров (цепляем к цепочке еще один
кластер)

NextClu() - вычисление следующего кластера и загрузка его в кеш

В упрощенном виде работа с FAT реализована в загрузочном секторе.
Загрузочный сектор Пруликса умеет найти корневой каталог, в нем файл по
имени BOOT, загрузить его и передать ему управление

Prool

Ответить   Wed, 26 Oct 2005 11:16:33 +0300 (#462975)