на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Програма для роботи з файловою системою
p align="left">Якщо вхід FAT містить ненульове значення, що відповідає кластер вже зайнятий. Вільний кластер можна знайти, скануючи FAT з початку до виявлення першого нульового значення. Дефектні кластери звичайно идентифицируются в процесі форматування. На мал.3-8 зображена типова ланцюжок FAT.

Вільні входи FAT містять нульове значення посилання; одиниця, як значення посилання, ніколи не використається. Таким чином, першим номером посилання, пов'язаним з першим доступним кластером в області файлів даних, є 2; цей номер ставиться до першого фізичного кластеру в області файлів даних. На мал.3-9 показаний зв'язок між файлами, входи FAT і кластери в області файлів даних.

Не існує логічного розходження між обробкою 12-бітових й 16-бітових входів FAT; розходження ставляться тільки до пам'яті й методів доступу. Оскільки процесор 8086 особливо призначений для эфективний обробки 8- або 16-бітових величин, то процедура доступу для 12-бітової FAT є більше складної, чим для 16-бітової.

_____________________________________________________________________

12-бітовий 16-бітовий Значення |

-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і|

000H 0000H Вільний кластер |

001H 0001H Код не використається |

FF0-FF6H FFF0-FFF6H Резерв |

FF7H FFF7H Дефектний кластер |

(не використається) |

FF8-FFFH FFF8-FFFFH Останній кластер в |

файлі |

Всі інші значення Посилання на наступний |

кластер у файлі |

____________________________________________________________________|

Вхід FAT

0 1 2 3 4 5 6 7 8 9

___________________________________________________________________

| FFDH| FFFH| 003H| 005H| FF7H| 006H| FFFH| 000H| 000H| 000H|

| 4093| 4095| 3 | 5 | 4087| 6 | 4095| 0 | 0 | 0 |

|___________________________________________________________|______

| | | |

| | | |

| | | |

| | | |__ не використаний:

| | | доступний кластер

| | |

| | |_____ використати не можна

| |

| |______ не використається: не доступний

|

|

|______ диск двосторонній з подвійною щільністю

Розподіл пам'яті в FAT для типового диска MS DOS

FAT є високоефективною "бухгалтерською" системою, однак тут можуть виникнути різні проблеми й необхідність компромісних рішень. Одна із проблем пов'язана з наявністю частково заповненого кластера наприкінці файлу. При цьому виникає проблема ефективності, пов'язана з використанням кластера більшого розміру, коли відбувається виділення цілого кластера, незалежно від числа содержащихся в ньому байтів. Наприклад, десять 100-байтовых файлів на диску із кластерами розміром по 16 Кбайт, займає 160 Кбайт дискової пам'яті; ті ж файли на диску із кластерами розміром 1 Кбайт займають тільки 10 Кбайт - різниця становить 150 Кбайт, що означає зменшення обсягу пам'яті в 15 разів при використанні кластерів меншого розміру. З іншого боку, програма для 12-бітової FAT, показана на мал.3-10, демонструє складність (а отже, низьку швидкість) переміщення у великому файлі, які мають довгий список посилань між невеликими кластерами. Таким образом, необхідно враховувати характер даних: додатка більших баз даних працюють ефективніше всього із кластерами більшого розміру; використовують кластери меншого розміру, можна розмістити на диску безліч невеликих текстових файлів драйвер, що розробляє, для дискового програміст звичайно встановлює розмір кластера).

Внаслідок відключення електроенергії або безладного виконання програм виникають проблеми руйнування каталогів або таблиць розміщення файлів, які , не будучи виправлені, можуть привести до більше серйозним проблемам. Програма MS DOS CHKDSK може виявляти й фіксують деякі дефекти. (см. КОМАНДИ КОРИСТУВАЧА CHKDSK). Наприклад, однієї з типових проблем є наявність списків "повислих" посилань (dangling allocation lists), викликане тим, що в каталозі відсутній покажчик на початок списку. Подібна ситуація часто буває, коли не був обновлений вхід у каталог, тому що не відбулося закриття файлу перед вимиканням або перезавантаженням комп'ютера. Наслідки цього досить необразливі: дані недоступні, однак це обмеження не впливає на інші операції по розміщенню файлів. Команда CHKDSK може вирішити цю проблему, створивши новий вхід каталогу й зв'язавши його зі списком.

Інші труднощі виникають, якщо розмір файлу у вході каталогу не збігається з його довжиною, що обчислює за допомогою перегляду списку посилань в FAT. Це може викликати невірне виконання програми і повідомлення про помилки MS DOS.

Більше складна й рідше виникаюча проблема зустрічається, коли вхід каталогу заданий правильно, однак список посилань (весь або деяка його частина) використаний також іншим входом каталогу. Виникає важка ситуація, тому що запис або додавання в один файл змінює вміст іншого. Ця помилка звичайно викликає серйозне руйнування даних й/або каталогу й приводить до краху системи.

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

Крім CHKDSK, для обслуговування FAT можна використати безліч комерційно доступних сервісних програм. Наприклад, програми реорганізації диска (disk reorganizers) можна застосовувати для зміни структури FAT й упорядкування каталогу так, щоб всі файли на диску були розміщені послідовно в області файлів даних й, зрозуміло, в FAT.

12-бітовий FAT FFFH 007H 000H

003H _____ ____ ____

Резерв _____ | | _|_ | _|__ |

____|____ _|__ | __|_ | 00 |07| | |00| |

| | | | | 00 | FF | 6F |____| F0 FF 0

F9 FF FF 03 40 |___| | | | |__|

| | | | | |

| | | | | |

|______| |_____| |___|

004H

16-бітовий FAT

Резерв

| 0003H

____________ _____ ____ ____ _____ ____ _____ _____

| | | | | | | | | | | | | | | |

F8 FF FF FF 03 00 04 00 FF FF 06 00 07 00 FF FF 00 00

Вхід FAT

__________________________________________________

12-бітовий FAT |резерв| 003H| 004H| FFFH| 006H| 007H| FFFH| 000H|

16-бітовий FAT | |0003H|0004H|FFFFH|0006H|0007H|FFFFH|0000H|

|______|_____|_____|_____|_____|_____|_____|_____|

Вхід каталогу ____________

(указує на |FILE1.TXT |

2 вхід FAT) |___________|

(указує на ____________

5 вхід FAT) |FILE2.TXT |

|___________|

Область файлів даних Відповідний вхід FAT

__________________________________

| FILE1.TXT | 2

|________________________________|

| FILE1.TXT | 3

|________________________________|

| FILE1.TXT | 4

|________________________________|

| FILE2.TXT | 5

|________________________________|

| FILE2.TXT | 6

|________________________________|

| FILE2.TXT | 7

|________________________________|

| не використається (доступний) | 8

|________________________________|

Відповідність між FAT й областю файлів даних

;-і-і-і Одержати номер наступного посилання з 12-бітової FAT

;Параметри:

; ax = поточний номер ліворуч

; ds:bx = адреса FAT (повинна бути безперервної)

;

; Повертає:

; ax = номер наступного посилання

;

; Використає ax, bx, cx

next 12 proc near

add bx,ax /ds:bx - частковий індекс

shr ax,1/ax = зсув /2

/ зрушення не потрібний

pushf / зберегти зрушення

add bx,ax /ds:bx - індекс номера наступного кластера

mov ax,|bx| /ax = індекс номера наступного кластера

popf / зрушення не потрібний

jc shift / пропустити при використанні більше 12 біт

and ax,0fffh / менш 12 біт

ret

shift: mov cx,4/ cx = лічильник зрушень

shr ax,c1 /cx =

ret

next12 endp

Ассемблерная програма для доступу до 12-бітового FAT

Корневий каталог

Входи каталогу, як у кореневому, так й у підкаталогах, мають довжину 32 байта. Кожен вхід включає ім'я файлу й розширення, розмір файлу, початковий вхід в FAT , час і дату створення або останньої модифікації файлу і його атрибути. Ця структура нагадує формат блоків управління файлом (file control blocks - FCBs) для СР/М, використовуваний у файловій системі MS DOS, версії 1.х.

Угода про найменування файлів в MS DOS відбувається також з СР/М: восьмисимвольне ім'я файлу й наступний за ним трьохсимвольний тип файлу, вирівняні ліворуч і при необхідності доповнені пробілами. В межах обмежень символьного ряду ім'я й тип є абсолютно довільними. Час і дата задаються у форматі, використовуваному іншими функціями MS DOS і відбивають час останнього запису файлу.

Показаний дамп сектора каталогу обсягом 512 байт, що тримає 16 входів (кожен вхід у цьому прикладі займає два рядки). Байт зі зсувом ОАВН, що містить значення 10Н позначає, що вхід починаючи з адреси 0А0Н, ставиться до підкаталогу. Байт зі зсувом

;-і-і-і Одержати номер наступного посилання з 16-бітової FAT

;Параметри:

; ax = поточний номер ліворуч

; ds:bx = адреса FAT (повинна бути безперервної)

;

; Повертає:

; ax = номер наступного посилання

;

; Використає ax, bx, cx

next 16 proc near

add ax,ax /ax = зсув ліворуч

add bx,ax /ds:bx - індекс номера наступного посилання

mov ax,|bx| /ax = номер наступного посилання

ret

next16 endp

Ассемблерная програма для доступу до 16-бітового FAT

160Н, що містить 0Е5Н, означає, що файл вилучений. Байт зі зсувом

8ВН і значенням 08Н указує, що вхід каталогу, починаючи зі зсуву

80Н, є міткою тому. В остаточному підсумку, байт зі зсувом 1Е0Н

означає кінець каталогу, з огляду на, що наступні входи каталогу ніколи не використалися й, отже, їхній пошук не потрібно

Корнєвій каталог може мати спеціальний тип входу, що називається міткою тому, ідентифікується типом атрибута 08Н и використається для позначення імені диска. Корнєвій каталог може містити тільки одну мітку тому. Корнєвій каталог може також включати входи, указиває на підкаталоги; такі входи ідентифікуються типом атрибута 10Н і нульовим розміром файлу. Програми обробки підкаталогів повинні здійснює трасування ланцюжків кластерів в FAT.

Два інших особливих типи входів каталогу зустрічаються тільки в підкаталогах. Ці входи містять <імена_файлів>. и.., що означає відповідно поточний каталог і батьківський каталог для поточні. Ці спеціальні входи, називані іноді альтернативними іменами каталогу (directory aliases), використаються для швидкого переміщення в структурі каталогу.

0 1 2 3 4 5 6 7 8 9 A B C D E F

0000 49 4F 20 20 20 20 20 20-53 59 53 27 00 00 00 00 10......SYS'.....

0010 00 00 00 00 00 00 59 53-89 0B 02 00 D1 12 00 00 ......YS....O....

0020 4F 53 44 4F 53 20 20 20-53 59 53 27 00 00 00 00 MSDOS...SYS'....

0030 00 00 00 00 00 00 41 49-52 0A 07 00 C9 43 00 00 ......AIR...IC..

0040 41 4E 53 49 20 20 20 20-53 59 53 20 00 00 00 00 ANSI.....SYS....

0050 00 00 00 00 00 00 41 49-52 0A 18 00 76 07 00 00 ......AIR...V...

0060 58 54 41 4C 4B 20 20 20-45 58 45 20 00 00 00 00 XTALK....EXE....

0070 00 00 00 00 00 00 F7 7D-38 09 23 02 84 0B 01 00 ......W18.......

0080 4C 41 42 45 4C 20 20 20-20 20 20 08 00 00 00 00 LABEL...........

0090 00 00 00 00 00 00 8C 20-2A 09 00 00 00 00 00 00 .........*.D..R.

00A0 4C 4F 54 55 53 20 20 20-20 20 20 10 00 00 00 00 LOTUS...........

00B0 00 00 00 00 00 00 E0 OA-E1 C6 A6 01 00 00 00 00 ......'.a.&.a...

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.