3 | Содержание | 5

Файловая система.

1. Собственной файловой системы у Колибри нет, стандартно используется FAT, есть чтение с NTFS, делается поддержка файловой системы ext2 (на данный момент реализовано чтение каталогов).

2. Управляющих блоков для файлов нет. При всех операциях с файлами приложение задаёт полное имя файла (а ядро, соответственно, это полное имя каждый раз разбирает).

3. В Колибри файл - это всегда файл на диске (возможно, на рамдиске), другие сущности файловыми API не адресуются.

4. API файловой системы - функция 70 (с соответствующими подфункциями, описана в документации). Кроме того, есть некоторое количество устаревших функций, удаляемых по мере обновления приложений на (относительно) новую 70-ю.

5. Ограничений доступа нет (всё, что в принципе можно сделать, может сделать любое приложение). Соответственно и авторизации нет.

6. Запись есть только на FAT. Освобождение дискового пространства заключается просто в пометке соответствующих кластеров в таблице FAT как свободных. Выделение нового дискового пространства делается покластерно, для нахождения очередного свободного кластера [fs/fat32.inc, get_free_FAT для жёстких дисков; fs/fat12.inc, floppy_extend_file для дискет; blkdev/rd.inc, ramdisk_extend_file для рамдиска] сканируется таблица FAT на предмет поиска кластеров, помеченных в таблице FAT как свободные; для FAT12 (дискет и рамдиска) сканируется таблица от начала до конца, для FAT16 и FAT32 (жёстких дисков) есть внутренняя переменная - номер кластера, с которого начинается поиск, и каждый следующий поиск начинается с кластера, следующего за предыдущим найденным свободным (и здесь поиск, дойдя до конца, продолжается с начала тома); в случае с FAT32 начальное значение этой переменной берётся из сектора FSInfo (из структуры файловой системы) и сохраняется там же. Кроме того, для FAT32 изменение размера свободного пространства записывается в соответствующем поле в секторе FSInfo [fs/fat32.inc, add_disk_free_space].

7. Основная система - FAT, с NTFS и EXT2 есть только чтение, соответственно журналирования нет.

3 | Содержание | 5

Pterox' DocPack R6. Last Edition: 29.05.2010. История выпусков