вторник, 6 декември 2011 г.

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

    Файлова система или управление на данните това е тази компонента на операционната
система, която е предназначена да управлява постоянните обекти данни, т.е. обектите, които
съществуват по-дълго отколкото процесите, които ги създават и използват. Постоянните обекти
данни се съхраняват на външна памет (диск или друг носител) в единици, наричани файлове.
Файловата система трябва да:
• осигурява операции за манипулиране на отделни файлове, като например create, open,
close, read, write, delete и др.
• изгражда пространството от имена на файлове и да предоставя операции за
манипулиране на имената в това пространство.
 
    Какво съдържа пространството от имена? Каква е организацията на файловата система?
Какви са операциите, наричани системни примитиви, системни функции, системни
извиквания или system calls, осигурявани от файловата система? Това са въпроси, които
вълнуват потребителите и се разглеждат в първия раздел. Вторият раздел е посветен на
проблеми при физическата реализация на файлова система и подходи за тяхното решаване.
Като примери са използвани файловите системи на операционните системи UNIX, MINIX,
LINUX, MSDOS, OS/2 и Windows NT.

1. ЛОГИЧЕСКА СТРУКТУРА НА ФАЙЛОВА СИСТЕМА
1.1. ИМЕНА И ТИПОВЕ ФАЙЛОВЕ

    Най-важната характеристика на една абстракция за потребителите са правилата, по
които се именуват обектите, в случая файловете. Най-често името на файл е низ от символи с
определена максимална дължина, като в някои системи освен букви и цифри са разрешени и
други символи. Много често името се състои от две части, разделени със специален символ,
например ".". Втората част се нарича разширение на името и носи информация за типа или
формата на данните, съхранявани във файла. Например, следните имена имат разширения,
показващи типа на данните във файла...........


1.2. КАТАЛОЗИ И ОРГАНИЗАЦИЯ НА ФАЙЛОВАТА СИСТЕМА

     Вторият основен въпрос, засягащ външния вид на файловата система е: Колко каталога
има и ако са повече от един каква е организацията на системата от каталози? Каталогът
съдържа по един запис (елемент) за всеки файл, който съдържа като минимум името на файла.
Освен това може да съдържа атрибутите на файла и дисковите адреси на данните на файла или
указател към друга структура, където се съхраняват дисковите адреси на данните и евентуално
атрибутите на файла.



1.3. ОПЕРАЦИИ С ФАЙЛОВЕ

Системните примитиви реализират операциите, които файловата система предоставя на
потребителите за:
• работа с отделни файлове;
• изграждане на структура на файловата система;
• защита на файловата система.
   Ще разгледаме няколко основни системни примитиви за работа с файлове по стандарта POSIX,
който е реализиран в повечето UNIX системи - System V, 4.3BSD, SunOS, AIX, HP-UX, OSF/1 и
др, в LINUX и MINIX. Повечето съвременни операционни системи предоставят системни
примитиви, изпълняващи същите функции, макар да има различия в имената, броя аргументи и
при реализацията им.
Основното проектно решение, което определя набора от операции над файл, е
структурата на файла. За потребителя файлът представлява последователност от 0 или повече
байта. Това е структурата на файла, реализирана от файловата система и съобразно тази
структура са проектирани системните примитиви. Преди да разгледаме системните примитиви
ще въведем някои необходими понятия, използвани при работа на файловата подсистема.
Файлов дескриптор (file descriptor) е неотрицателно цяло число, от 0 до 19 в по-
ранните версии на UNIX или до 63, 255 и повече в по-новите версии на UNIX и в LINUX, което
се свързва с файл при отваряне и се използва за идентифициране на файла при последващата
му обработката. Връзката между файловия дескриптор и файла се разрушава при затваряне на
файла. Файловите дескриптори имат локално значение за всеки процес, което означава, че
файлов дескриптор напр. 5 в два процеса най-вероятно е свързан с различни файлове. Прието е
файловите дескриптори 0, 1 и 2 да се свързват със стандартно отворените файлове, които всеки
процес получава, съответно стандартния вход, стандартния изход и стандартния изход за
грешки. Стандартно тези три файлови дескриптора са свързани с един и същи специален файл,
съответстващ на управляващия терминал на процеса. Но за ядрото на операционната система
няма нищо специално в тези файлови дескриптори. Това е просто съглашение, което ако се
приеме от всички потребителски програми, прави лесно пренасочването на стандартния им
вход/изход/изход за грешки и свързването на програми в конвейер, с помощта на командния
интерпретатор.
С всяко отваряне на файл се свързва и указател на текуща позиция във файла (file
offset, file pointer), който определя позицията във файла, от която ще бъде четено или
записвано и на практика стойността му е отместването от началото на файла, измерено в
байтове. Този указател се зарежда, изменя или използва от повечето примитиви за работа с
файлове.
С всяко отваряне на файл се свързва и режим на отваряне на файла, който определя
начина на достъп до файла чрез съответния файлов дескриптор докато е отворен от процеса,
напр. само четене, само писане, четене и писане. При всеки следващ опит за достъп до файла се
проверява дали той не противоречи на режима на отваряне, и ако е така, достъпа се отказва
независимо от правата на процеса.


РЕАЛИЗАЦИЯ НА КАТАЛОГ

ПРИМЕРИ НА ФАЙЛОВИ СИСТЕМИ (UNIX, LINUX, WINDOWS - NTFS)

Всичко за Файлови системи в документа.

Няма коментари:

Публикуване на коментар