з даним файлом у всіх процесах.
Щоб динамічно підтримувати відповідність резидентних копій індексних дескрипторів з їх оригіналами в індексному файлі, зміст таблиці індексних дескрипторів файлів періодично копіюється в індексний файл слідкуючим процесом (демоном) update, який запускається при переході OS UNIX в багатокористувацький режим. Зазначена процедура синхронізації дозволяє мінімізувати порушення коректності файлової системи при апаратних помилках, коли можливість приведення у відповідність індексного файлу і модифікованих резидентних копій індексних дескрипторів буде втрачена. Хоча в OS UNIX передбачені адміністративні засоби ремонту файлової системи, але виправлення суттєвих порушень може призвести до втрати даних.
Опис індексного дескриптора в POSIX
Стандарти POSIX описують поведінку файлової системи як нащадка традиційних файлових систем UNIX - UFS. Постійні файли повинні мати такі атрибути:
· довжина файлу в байтах;
· ідентифікатор (ID) пристрою (це ідентифікує пристрій, що містить файл);
· ID користувача, що є власником файла;
· ID групи файлу;
· режим файлу, що визначає які користувачі можуть зчитувати, записувати і запускати файл;
· Timestamp вказує дату останньої зміни инода (ctime, change time ), останньої модифікації вмісту файлу (mtime, modification time ), і останнього доступу (atime, access time );
· лічильник посилань вказують кількість жорстких посилань, що вказують на індексний дескриптор;
· покажчики на блоки диска, що зберігають вміст файлу ( докладніше.) .
Системний виклик stat зчитує номер індексного дескриптора файлу і деяку інформацію з нього.
Етимологія inode
Точна причина використання і у вузлах (нодах) невідома. У відповідь на запитання про це один з піонерів Unix-систем Денніс Рітчі відповів:
Чесно кажучи, я мало про це знаю. Це був всього лише термін, який ми почали використовувати. Індекс raquo ;, як я вважаю, використовувався через кілька незвичайної структури файлової системи, що зберігала інформацію про доступ до файлів в плоскому (двовимірному) масиві на диску, а вся інформація про ієрархію каталогів зберігалася окремо. Таким чином, і-номер був індексом в цьому масиві, і-нод - обраним елементом масиву. (Приставка и- використовувалася в першій версії керівництва; з часом дефіс перестали вживати).
Тобто index node (індексний вузол, елемент)? index-node ? i-node ? inode - поступове укорочення і злиття словосполучення index node . За іншою версією, початкова буква i в i -node походить від слова information (інформація).
Значення
Особливості файлової системи, які призводять до використання індексних дескрипторів, бентежать багатьох користувачів, не знайомих з цією концепцією:
· Якщо кілька імен вказують на один і той же індексний дескриптор (жорсткі посилання), то всі імена вважаються еквівалентними. Перше створене ім'я ніяким особливим становищем не володіє. Це відрізняється від поведінки схожих символьних посилань, які залежать від початкового імені.
· Індексний дескриптор може зовсім не мати посилань. Зазвичай такий файл повинен бути вилучений з диска (саме тому програми типу undelete в Unix не дозволяють встановити точне ім'я віддаленого файлу), а його ресурси повинні звільнитися (це нормальний процес видалення файлу), але якщо які-небудь процеси тримають файл відкритим, то вони можуть утримувати доступ до нього, а файл буде остаточно видалений тільки коли буде закрито останнє звернення до нього. Це відноситься і до виконуваним копіям, які утримуються відкритими процесами, їх виконують. З цієї причини, при оновленні програми рекомендується видаляти стару копію і створювати новий індексний дескриптор для оновленої версії, щоб ніякі екземпляри старої версії не продовжували виконуватися.
· Зазвичай немає можливості зіставити відкритий файл і його ім'я, за яким він був відкритий. Операційна система перетворює ім'я файлу в номер індексного дескриптора при першому ж зручному випадку, а потім забуває про ім'я файлу. Таким чином, функції бібліотек getcwd () і getwd () починають шукати в батьківському каталозі фай...