Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Формат імен файлів

У різних ФС допустиме ім'я файлу може мати різну довжину ц йому можуть використовуватися різні набори символів. Так, в RT-H і Rsx-ц імена файлів складаються з символів кодування Radix-50 і мають довжину 9 символів: 6 символів — власне ім'я, а 3 — розширення. При цьому ім'я має вигляд "Хххххх.Ххх", але символ '.' не є частиною імені — це просто розділовий знак. Передбачається, що розширення повинне відповідати типові даних, що зберігаються у файлі: SAV буде ім'ям абсолютного завантажуваного модуля, FOR — програми на Фортрані, CRH - "файлом інформації про системний крах", як було написано в одному переволе керівництво (просто кажучи, це посмертна видача ОС, по якій можна спробувати зрозуміти причину аварії).
У Ср/м і її нащадках MS DOS-DR DOS, а також в VMS імена файлів зберігаються в 8-бітовій ASCII-кодировке, але чомусь дозволено використання лише букв верхнього регістра, цифр і деяких друкованих символів. При цьому в системах лінії Ср/м ім'я файлу має 8 символів плюс 3 символи розширення, а в VMS як ім'я, так і розширення можуть містити більше 32 символів. Всі перераховані системи використовують нечутливий до регістра букв пошук в каталогах: імена file.с, File.С і FILE.С вважаються одним і тим же ім'ям.

Обмеження на формат імені в MS DOS
Цікаво, що Ms/dr DOS при пошуку в каталозі переводять у верхній регістр ім'я, задане користувачем, але залишають без змін ім'я, лічене з каталога. Строго кажучи, це помилка: якщо ми створимо ім'я файлу, що містить букви нижнього регістра, то жодна програма не зможе відкрити або перейменувати такий файл.
Авторові довелося зіткнутися з такою проблемою при спробі прочитати дискету, записану ОС ТС (Експериментальна UNIX-подобная ОС для Паськаль-машини N9000). Проблему удалося вирішити лише за допомогою шестнадца-терічного дискового редактора прямим редагуванням імен в каталогах. Можливо, існує і елегантніше рішення, але авторові не удалося його знайти.
Використовувати конструкцію *.* марно, бо, насправді, операції над файлами, заданими таким чином, складаються з двох операцій: Findfirst/findnext, яка повертає [наступне] ім'я файлу, відповідне шаблону, і Open. Findfirst/findnext повертає неприпустиме ім'я файлу і Open не може використовувати його. Програма CHKDSK не заперечує проти імен файлів в нижньому регістрі. Строго кажучи, це теж помилка. Всі останні способи, так або інакше, зводяться до прямої (у обхід ДОС) модифікації ФС.
Крім того, цікавих ефектів можна досягти, спробувавши створити файл з ім'ям, що містить російські букви.
Найбільшим лібералізмом в сенсі імен відрізняються ОС сімейства Unix, в яких ім'я файлу може складатися з будь-яких символів кодування ASCII, окрім символів '\000' і V, наприклад, з восьми символів переведення каретки. При цьому '\000' є обмежувачем імені, а V — роздільником між ім'ям каталога і ім'ям файлу. Жодного розділення на ім'я і розширення немає, і хоча імена файлів з програмою на мові Із закінчуються ".с", а об'єктних модулів — ".о", крапка тут є частиною імені. Ви можете створити файл з ім'ям "gcc-2.5.8.tar.gz". У UNIX Svr3 довжина імені файлу обмежена 14 символами, а в BSD UNIX, Linux і Svr4— лише довжиною блоку на диску, тобто 512 байтами або більш. При цьому нульовий символ вважається кінцем імені в каталозі.

Можливість використовувати в іменах неалфавітні символи типа переведення каретки або ASCII EOT (End Of Transmission) видається небезпечною надмірністю. Насправді:

  • це не надмірність а, швидше, спрощення — з процедур, що працюють з іменами, видалена перевірка символу на "допустимість";
  • воно не настільки вже небезпечне: такий файл завжди можна перейменувати.

В деяких випадках процес набору імені файлу в командному рядку перетворюється на нетривіальну вправу, бо shell (командний процесор) розглядає багато неалфавітних символів як команди. Але треба відзначити, що, правильно використовуючи лапки і символ '\', користувач може передати команді аргумент, що містить будь-які символи ASCII, окрім \000".

Довгі імена файлів в ОС сімейства Ср/м
Останнім часом в ОС стало модним підтримувати довгі імена файлів. Частково це, можливо, пов'язано з тим, що виробники ПО для персональних комп'ютерів усвідомили, що системи сімейства Unix є потенційно небезпечними конкурентами, а довгі імена файлів традиційно вважаються однією з переваг цього сімейства.
Наприклад, Os/2, що використовує файлову систему HPFS (High Performance File System — високопродуктивна файлова система), підтримує імена файлів завдовжки до 256 символів, що містять друковані символи і пропуски. Крапка вважається частиною імені, як і в UNIX, і можна створювати імена, декілька крапок, що містять. Аналогічну структуру мають імена в NTFS, використовуваною в Windows Nt/2000/xp, VFAT (реалізація файлової системи Fat16, використовувана в Windows 95/98/me) і Fat32.

Описані ОС при пошуку файлу приводять до одного регістра всі алфавітні символи в імені. З одного боку, це означає додаткову Зручність для користувача — при наборі імені не потрібно піклуватися про регістр букв, з іншої — користувач не може створити в одному каталозі файли "text.txt" і "Text.txt". Через це, наприклад, не можна використовувати прийняте в UNIX угода про те, що файл на мові З має розширення "с", а на мові C++ — "С".
Головна ж проблема, що виникає при роботі з нечутливими « п гистру іменами, — це перетворення регістра в іменах, іспользующи національні алфавіти: російський, грецький, японську складову азбуку т.д. Файлова система, що підтримує такі імена, повинна учитиват мовні налаштування ОС, що створює багато складнощів, у тому числі і при прочитуванні носіїв, що видаляються, записаних в одній країні, де-небудь за кордоном. У системах сімейства Win32 ця проблема вирішена за рахунок зберігання імен у форматі Unicode.
Деякі ОС, наприклад, Rsx-11 і VMS, підтримують також номер версії файлу. У каталозі може існувати декілька версій файлу з одним ім'ям; якщо номер версії при відкритті файлу не задається, то відкривається остання версія.
Версії файлу дуже зручні при розробці будь-яких об'єктів, від програм або друкарських плат до книг: якщо вам не сподобалися зміни, внесені вами в останню версію, ви завжди можете відкататися назад. Нині функцію зберігання попередніх версій змінних файлів і керованого відкоту до них реалізують спеціальні застосування системи управління версіями (version control system) (RCS, CVS і ін.).

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017