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

From Ilianko

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

Под „файлова система” се разбира начинът на организация, съхранение и именуване на данните във външна памет и структурата на метаданните (служебната информация) за тях. Различните операционни системи осигуряват и разпознават една или повече файлови системи, например FAT, NTFS, ext2. за твърди дискове, UDF за оптични дискове и т.н., освен това чрез файловата система може да се осигурява достъп до отдалечени файлови сървъри или до виртуални файлове за обмен на потоци от данни и комуникация с периферни устройства.

Файловите системи предоставят дисковото пространство за отделните файлове на порции (allocation units), наричани още „клъстери” или "блокове" . Размерът на един клъстер се определя при форматирането на диска и зависи от типа на диска, размера на диска и възможностите на конкретната файлова система (от 512 байта до > 64KiB...). Клъстерът обикновено съдържа няколко физически сектора от диска. Драйверите на файловата система организират клъстерите във файлове и директории (които реално са също файлове, съдържащи списъци с файлове). Драйверите следят също така кои от клъстерите се използват в момента, кои са свободни и кои са отбелязани като повредени.

Задача. Запишете какви файлови системи се поддържат от MS Windows XP и по-новите версии?

Задача. Запишете какви файлови системи се поддържат от Линукс?

Задача. Избройте какви други файлови системи познавате.

Изисквания

  • Ефективно управление на свободното пространство
  • Каталог включващ всички файлове с цел осигуряване на бърз достъп до тях
  • Осигуряване на основни функции
    • триене
    • преименуване
    • преместване

FAT

В края на всеки клъстер се записва указател за следващия.

ext2

структура на inode

Всеки файл се представя със структура inode съдържащ:

  • типа на файла
  • права за достъп
  • собственик
  • timestamp
  • размер
  • ...
  • 15 указателя към блоковете с данни на файла
    • 12 съдържат директни пойнтера
    • 1 индеректен
    • 1 двойно индеректен
    • 1 тройно индеректен

Ако данните на файла не се поберат в 12 блока за данни, то се използва индеректен блок, в който са записани адресите на блоковете с данни за останалата част от файла. Ако и това не е достатъчно ( 4Кib cluster size/ 4 = 1024 адреса * 4КiB = 4 MiB, т.е ако файла е по-голям от 4MiB), за адресиране се използва двойно индеректен пойнтер към блоковете с данни