імена файлів

Всі типи файлів мають символьні імена. В ієрархічно організованих файлових системах зазвичай використовуються три типи імен файлів: прості, складові і відносні.

Просте, або короткий, символьне ім'я ідентифікує файл в межах одного каталогу. Прості імена привласнюють файлам користувачі і програмісти, при цьому вони повинні враховувати обмеження ОС як на номенклатуру символів, так і на довжину імені. До порівняно недавнього часу ці межі були досить вузькими. Так, в популярній файлової системи FAT довжина імен обмежувалася схемою 8.3 (8 символів - власне ім'я, 3 символу - розширення імені), а в файлової системі s5, підтримуваної багатьма версіями ОС UNIX, просте символьне ім'я не могло містити більше 14 символів. Однак користувачеві набагато зручніше працювати з довгими іменами, оскільки вони дозволяють дати файлів легко запам'ятовуються назви, ясно говорять про те, що міститься в цьому файлі. Тому сучасні файлові системи, а також вдосконалені варіанти вже існуючих файлових систем, як правило, підтримують довгі прості символьні імена файлів. Наприклад, в файлових системах NTFS і FAT32, що входять до складу операційної системи Windows NT, ім'я файлу може містити до 255 символів.

В ієрархічних файлових системах різних файлах дозволено мати однакові прості символьні імена за умови, що вони належать різним каталогам. Тобто тут працює схема «багато файлів - одне просте ім'я». Для однозначної ідентифікації файлу в таких системах ис-користується так зване повне ім'я.

Повне ім'я являє собою ланцюжок простих символьних імен всіх каталогів, через які проходить шлях від кореня до даного файлу. Таким чином, повне ім'я є складовим, в якому прості імена відокремлені один від одного прийнятим в ОС роздільником. Часто як роздільник використовується прямий або зворотний слеш, при цьому прийнято не вказувати ім'я кореневого каталогу. На рис. 5. 1, б два файли мають просте ім'я main.exe, проте їх складові імена /etc/main.ехе і /usr/anna/main.exe розрізняються.

У деревовидної файлової системи між файлом і його повним ім'ям є взаємно однозначна відповідність «один файл - одне повне ім'я». У файлових системах, що мають мережеву структуру, файл може входити в кілька каталогів, а значить, мати кілька повних імен; тут справедливо відповідність «один файл - багато повних імен». В обох випадках файл однозначно ідентифікується повним ім'ям.

Файл може бути ідентифікований також відносним ім'ям. Відносне ім'я файлу визначається через поняття «поточний каталог». Для кожного користувача в кожний момент часу один з каталогів файлової системи є поточним, причому цей каталог вибирається самим користувачем за командою ОС. Поточний каталог прийнято позначати символами ./, а файл, що знаходиться в цьому каталозі, наприклад, main.exe як ./main.exe. Файлова система фіксує ім'я поточного каталогу, щоб потім використовувати його як додаток до відносних імен для утворення повного імені файлу. При використанні відносних імен користувач ідентифікує файл ланцюжком імен каталогів, через які проходить маршрут від поточного каталогу до даного файлу. Наприклад, якщо поточним каталогом є каталог / usr, то відносне ім'я файлу /usr/anna/main.exe виглядає наступним чином: anna / main.exe.

У деяких операційних системах дозволено привласнювати одному і тому ж файлу кілька простих імен, які можна інтерпретувати як псевдоніми. В цьому випадку, так само, як в системі з мережевою структурою, встановлюється відповідність «один файл - багато повних імен», так як кожному простому імені файлу відповідає принаймні одне повне ім'я.

І хоча повне ім'я однозначно визначає файл, операційній системі простіше працювати з файлом, якщо між файлами і їх іменами є взаємно однозначна відповідність. З цією метою вона привласнює файлу унікальне ім'я, так що справедливе співвідношення «один файл - одне унікальне ім'я». Унікальне ім'я існує поряд з одним або декількома символьними іменами, що привласнюються файлу користувачами або додатками. Унікальне ім'я являє собою числовий ідентифікатор і призначене тільки для операційної системи. Прикладом такого унікального імені файлу є номер індексного дескриптора в системі UNIX.

Схожі статті