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

5.1.2. Структура файлу

Файли можуть бути структуровані декількома способами. Файл являє собою неструктуровану послідовність байтів. В даному випадку операційна система не

цікавиться вмістом файлу. Все, що вона бачить, - це байти. Значення цим

байтам присвоюються програмами користувацького рівня. Такий підхід характерний як для UNIX, так і для Windows 98. Трактування операційною системою файлів, як просто послідовностей байтів забезпечує максимальну гнучкість. Користувальницькі програми можуть поміщати в файли все що завгодно і називати їх будь-яким зручним для них

способом. Операційна система не втручається в цей процес, що особливо цінно для користувачів, які збираються зробити що-небудь незвичайне. В даній моделі файл являє собою послідовність записів фіксованої довжини, кожна зі своєю внутрішньою структурою. Для файлів, що складаються із записів, важливим є те, що операція читання повертає одну запис, а операція запису оновлює або доповнює один запис. Кілька

десятиліть тому, коли щосили застосовувалися перфокарти, що складаються з 80 колонок

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

вхідних файлів 80-символьні блоки і тут же розширювали їх до 132-символьних

блоків. Жодна сучасна універсальна система не працює подібним

чином.

5.1.3. Типи файлів

Багато операційні системи підтримують різні типи файлів.

Наприклад, в системах UNIX та Windows проводиться різниця між звичайними

файлами та каталогами. Крім того, в UNIX розрізняють символьні та блочні

спеціальні файли. Windows XP також використовує файли метаданих, які ми

розглянемо пізніше. До звичайних (regular) файлів відносяться всі файли, що містить

містять інформацію користувача. Всі файли на рис. 5.1 є просто

файлами. Каталоги - це системні файли, що забезпечують структуризацію

файлової системи. Пізніше ми розглянемо їх детальніше. Символьні

спеціальні файли мають відношення до введення-виведення і використовуються для

моделювання послідовних пристроїв введення-виведення, таких як термінали, принтери

та мережі. Блокові спеціальні файли знаходять застосування при моделюванні

дисків. В цьому розділі в основному розглядаються звичайні файли.

Звичайні файли, як правило, є або ASCII-файлами, або

двійковими файлами. ASCII-файли містять текстові рядки. У деяких системах

кожна ASCII-рядок завершується символом повернення каретки. В інших

(Наприклад, UNIX) використовується символ перекладу рядка. Є системи

(Наприклад, Windows), де потрібні обидва символи. Рядки не зобов'язані мати одну і ту

ж довжину.

Головною перевагою ASCII-файлів є те, що вони можуть відображатися на екрані і виводитися на друк «як є», без якого-небудь перетворення, і редагуватися будь-яким текстовим редактором. Більш того, якщо кілька програм використовує ASCII-файли для введення і виведення, нескладно з'єднати вхід однієї програми з виходом інший, як це робиться в конвеєрах оболонки. (Обмін даними між процесами не стає простіше, але інтерпретація інформації полегшується, якщо її подання стандартизовано.)

Крім ASCII-файлів існують виконавчі файли. При виведенні їх на принтер виходить незрозумілий набір символів. Але насправді у них є якась внутрішня структура, відома використовує їх програмі. Наприклад, на рис. 5.2, а зображений простий виконуваний двійковий файл, входить в одну з версій UNIX. Хоча технічно будь-який файл являє собою всього лише послідовність байтів, операційна система стане виконувати його тільки в тому випадку, якщо він має відповідний формат. Файл складається з п'яти розділів: заголовка, тексту, даних, даних переадресації і символьної таблиці. Заголовок починається з так званого магічного числа, ідентифікує файл як виконуваний (щоб запобігти випадковий «Запуск» файлу іншого формату). Слідом за сигнатурою в заголовку розташовуються поля з розмірами різних частин файлу, адресою точки входу файлу і деякі прапори. За заголовком слідують текст програми і дані. Вони завантажуються в оперативну пам'ять і налаштовуються на роботу за адресою завантаження за допомогою бітів переадресації. Символьна таблиця використовується для налагодження. Другий приклад двійкового файлу являє собою архів у системі UNIX. Він

складається з набору бібліотечних процедур (модулів), компільованих, але НЕ скомпонованих. Кожній процедурі передує заголовок, що містить її ім'я, дату створення, ім'я власника, код захисту і розмір. Як і у випадку виконуваного файлу, заголовки модулів зберігають велику кількість двійкових чисел. Якщо в такому вигляді подати їх на принтер, вийде повна тарабарщина. Всі операційні системи повинні розпізнавати, принаймні, один тип файлів - власні виконувані файли, але деякі операційні системи розрізняють і інші типи файлів. Стара система TOPS-20 (для комп'ютера DECsystem 20) навіть аналізувала час створення кожного наданого їй на виконання файлу. Потім вона знаходила вихідний файл і перевіряла, не чи був він змінений, після того як був створений виконуваний файл. Якщо виявлялося, що виконуваний файл вже застарів, операційна система автоматично

перекомпілювати вихідний файл. У перекладі на мову UNIX – програма make була вбудована в оболонку. Розширення імен файлів були обов'язковими, щоб операційна система могла визначити, яка двійкова програма від якого вихідного файлу відбулася.

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

розширенням dat. Якщо користувач потім спробує запропонувати цей файл компіляції

компілятору С, операційна система не дозволить його скомпілювати, так як у файлу

для даної дії невірне розширення. Спроба скопіювати файл f ile. dat в f ile. з також буде відкинута операційною системою, щоб захистити користувача від помилки.

Хоча така «дружність» по відношенню до користувача («захист від дурня ») може бути корисна для новачків, вона ставить досвідчених користувачів в безвихідне становище, змушуючи їх витрачати масу зусиль на те, щоб перехитрувати операційну систему.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]