Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО / конспект_укр.doc
Скачиваний:
43
Добавлен:
03.03.2016
Размер:
634.37 Кб
Скачать

Функції створення і доступу до об'єктів файлової системи

Пошук об’єкту за вказаним шляхом

Вихідні дані: повний шлях доступу, наприклад E:\D1\F1.TXT

Алгоритм:.

1.У кореневому каталозі вказаного диску необхідно знайти описувач піддиректорії «D1». У цьому описувачі вибрати номер кластера, з якого починається директорія «D1». Перетворити номер кластера в абсолютну адресу і прочитати частину директорії «D1». Розмір зчитуваної області має бути кратний сектору, тобто читання може бути секторне або кластерне.

2.Організувати цикл пошуку в цьому каталозі об'єкту «F1.txt». Якщо в результаті об'єкт не знайдено і не була знайдена ознака обмежувача інформації, то необхідно прочитати наступний сектор директорії «D1».

3.По досягненні кінця поточного кластеру, то необхідно звернутися до таблиці FAT і перевірити, чи не є цей кластер останнім для даної директорії, тобто в таблиці FAT буде записаний ознака кінця ланцюжка.

4.Якщо кластер останній і об'єкт не знайдений, то можна констатувати відсутність вказаного об'єкту по даному шляху.

5.Якщо кластер не останній, то FAT містить номер наступного кластера директорії «D1», і вищеописані дії повторюються для нового кластеру.

Створення об'єкт типу файл.

Вихідні дані: повний шлях – L:\D1\D2\name.xxx.

Алгоритм.

  1. Для всіх компонентів шляху окрім останнього реалізувати «Пошук об’єкту за вказаним шляхом »

  2. Результат виконання п.1 - початковий кластер директорії «D2» (N_KLAST_D2). Переглядається таблиця FAT на предмет пошуку першого вільного елементу. Номер цього кластеру запам'ятовується як початковий (N_KLAST_D3). Переглядається «D2» на предмет пошуку вільного дескриптору (або дескрипторів) (тобто «0» або «Е5» в 1-му байті). Якщо вільного місця в «D2» не знайдено, тоді необхідно реалізувати алгоритм «розширення директорію ».

  3. Після того, як знайдено місце на диску під об'єкт і при необхідності розширене місце під директорію, необхідно сформувати описувач даного об'єкту.

  4. Після цього таблиця FAT і інформація про директорію D2 має бути записана на диск. При цьому необхідно відновити інформацію у всіх копіях FAT.

Створення об'єкту типа директорія.

Вихідні дані: шлях – L:\D1\D2\DIR3.

Алгоритм:

  1. Повторюються пункти 1та 2 попереднього алгоритму.

  2. Кластер (N_KLAST_DIR3), який був знайдено для директорії «DIR3», аналогічно створенню файлу заповнюється «0». Перші два описувачі в цьому кластері є стандартними для будь-якого підкаталогу. Ім'я, що записується в 1-й з них є «.», в другій «..». Номер кластера в 1-му описувачі дорівнює номеру кластера батьківського каталогу в другому номері кластера даного каталогу. Всі останні данні інформаційно однакові.

  3. Повторити п.3 та 4 попереднього алгоритму враховуючи, тип створюваного об’єкту.

Видалення файлу.

При видаленні файлу, необхідно знайти директорію якій належить описувач(и) файлу, що видаляється. Після чого в перший байт кожного описувача записується код «Е5h. Далі у таблиці FAT у весь ланцюжок кластерів, що належать даному об'єкту, занести значення «0». Виконати поновлення інформації на диску.

Видалення директорії.

Необхідно повторити всі дії для всіх об'єктів цієї директорії. І лише коли директорія буде порожня, тоді звільнити описувач(и) цієї директорії і ланцюжок кластерів.

Відновлення видаленого об'єкту.

Відновити об'єкт на всі 100% можливо в тому випадку, якщо він займав до видалення безперервний ланцюжок кластерів і жоден кластер, що раніше належав видаленому об'єкту, не зайнятий, на момент відновлення іншим об'єктом.

Після видалення об'єкту в описувачі його зберігається початковий номер кластеру і довжина в байтах. Перерахувавши довжину в кластер, робиться припущення, що об'єкт займає безперервний ланцюжок кластерів від заданого початкового. З початковим номером кластера йде звернення до таблиці FAT і вибирається номер наступного кластера.

Для видаленого об'єкту, вміст елементів FAT має бути рівне «0». Якщо це не так, то відновлення повністю неможливе. Інакше замість «0» в елемент FAT заноситься номер рівний попередньому кластеру, збільшений на одиницю.

Якщо ж видалений об'єкт займає один кластер, тоді в елемент FAT заноситься ознака кінця ланцюжка.

Якщо на якомусь етапі вибране значення не дорівнює «0», то потрібно зробити крок назад і записати ознаку кінця ланцюжка (EOF), тим самим реалізується спроба часткового відновлення файлу. Означений алгоритм не відпрацьовує для FAT32 в ОС, починаючи з W2000, оскільки при видаленні об’єкту скидається в 0 старша частина початкового кластеру видаляє мого об’єкту.

Соседние файлы в папке СПО