Чи є файлова таблиця у файловій системі чи в пам'яті?


9

У контексті таблиць керування операційною системою термін "файли таблиць" стосується структури даних, що є частиною файлової системи, або що знаходиться в основній пам'яті (і в такому випадку я припускаю, що вона матиме посилання лише на відкриті файли) ? У моєму підручнику 1 сказано:

У таблицях подано інформацію про існування файлів, їх розташування у вторинній пам'яті, їх поточний стан та інші атрибути. Багато, якщо не вся ця інформація може зберігатися та використовуватися системою управління файлами, і в цьому випадку ОС мало знає про файли або взагалі не знає.

Також, що таке система управління файлами? Чи означає це файлова система?

1 stallings, операційні системи , 7- е видання, стор. 127

Відповіді:


23

Без подальшого контексту незрозуміло визначити, чи говорять Stalling про таблицю inode в пам'яті або про таблиці з файловою системою. Я позичив комусь набагато більш раннє видання книги, але не отримав його назад; тому я не можу самостійно шукати контекст.

Існує три "таблиці файлів", але та, про яку йдеться тут, частіше називається " таблицею введення в пам'яті "; другий, як правило, називається " таблиця відкритих файлів ", і існує в процесі. Обидві таблиці знаходяться в пам'яті ядра та не доступні програмі. Третя «таблиця» - це дійсно два набори таблиць у файловій системі (на диску), перший - це таблиця введення на диску, а другий - самі блоки даних (зверніть увагу: ця дискусія стосується традиційного управління файловою системою UNIX, нові системи можуть мають різні організації). Записи в таблиці inode мають послідовності посилань на блоки даних, які містять або непрямі опорні блоки, або фактичні дані. Ключ до файлуу файловій системі знаходиться inode, а не самі блоки даних. Коли Stalling говорить про дискову "таблицю файлів", це, як правило, "менша" таблиця на диску, яка позначає файли, такі як таблиця inode або таблиця визначення блоку в системах FAT.

З точки зору таблиці inode в пам'яті, inode завантажується з файлової системи, її значення st_nlink збільшується, а потім стає доступним для решти системи, коли дані Inode записуються на диск, st_ctime оновлюється. Якщо inode більше не потрібен у пам'яті, значення st_nlink зменшується, а запис у таблиці позначається як вільний. Кожен процес почнеться з посиланнями на три або п'ять записів у пам'яті в таблицю інф.узлов: иноді з stdin, stdout, stderr- це часто файл пристрій (термінал) - а потім посилання на поточний каталог і кореневої каталог. Інода буде розміщуватися в таблиці лише один раз, тому в таблиці може бути кілька посилань на один inode.

Таблиця відкритого файлу зберігається за кожним процесом і містить посилання на таблицю inode пам'яті, а також покажчики на буфери та інформацію про стан (наприклад, fseek(2)значення та прапорці open(2). Дескриптор файлу буквально є індексом у відкритій таблиці файлів; але більшість люди посилаються на запис у відкритій таблиці файлів, коли говорять про "дескриптор файлу".

Коли файл відкривається за допомогою open(2)знайденого наявного запису у відкритій таблиці файлів, визначається вкладення посилання на файл за назвою шляху, що inode завантажується в таблицю inode пам'яті в пам'яті, якщо вона ще не завантажена, кількість ліній st_nlink збільшується, а запис запису inode посилається в дескрипторі файлів, встановлюються прапори і виділяються буфери. При закритті відбувається реверс.

Підпрограми в ядрі називаються " системою управління файлами ", а " файлова система " - організацією на диску. Сьогодні modprobe(8)на диску є ряд модулів, що підключаються, які можна завантажити ( ) у систему управління файлами для різних організацій. Наприклад, існують типи файлової системи ext2 / ext3 / ext4, і кожен з них має інший модуль у системі управління файлами ядра; те саме з ntfs, sbfs, nfs, vfat, jfs тощо.

Це трохи довше, ніж я спочатку мав намір, тому я зупинюсь тут.


Це неймовірно гарна відповідь.
Казарк

Так, будь ласка, не зупиняйте себе, коли ви надаєте таку добру, всебічну відповідь.
Лізардкс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.