Що таке файл і файлова структура?

Комп’ютерний файл — це ресурс для дискретної запису даних в комп’ютерне запам’ятовуючий пристрій. Як слова можуть бути записані на папері, так і інформація може бути записана в ПК. Файли і файлова структура є однією з основ сучасної технології.

Існують різні типи комп’ютерних файлів, призначені для різних цілей. Він може бути призначений для зберігання зображення, письмового повідомлення, відео, комп’ютерної програми або безлічі інших видів даних. Деякі види можуть зберігати декілька типів інформації одночасно.

Використовуючи комп’ютерні програми, людина може відкривати, читати, змінювати і закривати файли. Вони можуть бути відкриті, змінені і скопійовані довільну кількість разів.

Як правило, вони організовані в систему, яка відстежує їх розташування на диску і забезпечує доступ користувача. Кажучи науковою мовою, файлова система – це ієрархічна структура зберігання файлів.

Походження терміну

Слово «файл» походить від латинського filum («нитка»). Цей термін почав використовуватися у контексті комп’ютерного зберігання ще в січні 1940 року. Тоді вперше таблиці функцій були побудовані на основі їх відмінностей з великою ефективністю, або у вигляді друкованих таблиць, або у вигляді набору перфокарт.

У лютому 1950 року в рекламі Radio Corporation of America (RCA), що описує нову вакуумну трубку з «пам’яттю», результати незліченних обчислень, які можна зберігати і видаляти, були названі файлами. У 1952 році термін «файл» позначав, зокрема, інформацію, що зберігається на перфокартах.

Зміна суті терміна

При ранньому використанні базове обладнання, а не вміст, що зберігається на ньому, позначалося як «файл». Наприклад, дисководи IBM 350 були названі «дискові файли». Приблизно в 1961 році завдяки Burroughs MCP і MIT-сумісної системі поділу концепція «файлової системи», яка управляє декількома віртуальними «файлами» на одному пристрої зберігання, є джерелом сучасного позначення цього слова. Хоча сучасний «регістр» демонструє ранню концепцію цих об’єктів, його використання значно скоротилося. Визначення файлів і файлової структури в інформатиці сьогодні має дещо інший контекст.

Вміст об’єкта

Як виглядає структура файлу у файловій системі? У більшості сучасних операційних систем вони організовані в одномірні масиви байтів. Формат кожного з них визначається вмістом, так як вони є виключно контейнерами для даних, хоча на деяких платформах формат зазвичай вказується розширенням їх імені. Це визначає правила, як байти повинні бути організовані та інтерпретовані осмислено. Наприклад, байти простого текстового файлу (.txt Windows) пов’язані з символами ASCII або UTF-8, в той час як байти зображення, відео та аудіо інтерпретуються інакше. Більшість типів файлів також виділяють кілька байтів для метаданих, що дозволяє їм нести основну інформацію про себе.

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

Розміри даних об’єктів

У будь-який момент часу файл може мати розмір, зазвичай виражається числом байтів, який вказує, скільки пам’яті пов’язане з ним. У більшості сучасних операційних систем розмір може бути будь-яким невід’ємним цілим числом байтів, аж до системного межі. Багато старі ОС відстежували тільки кількість блоків або доріжок, займаних файлом на фізичному пристрої зберігання. В таких системах в програмному забезпеченні використовувалися інші методи для відстеження точної кількості байтів (наприклад, CP/M використовувала спеціальний керуючий символ Ctrl-Z для позначення кінця текстових файлів).

Однак загальне визначення файлу у файловій структурі не вимагає, щоб його розмір мав якесь реальне значення, якщо тільки дані в ньому не відповідають інформації в пулі постійного зберігання. Особливий випадок — файл з нульовим байтом. Такі об’єкти можуть бути знову створеними файлами, які ще не було записано ніяких даних, або вони можуть служити в якості якогось прапора в файловій системі, або є випадковими (результати перерваних операцій з диском).

Наприклад, файл, на який вказує посилання /bin/ls в типовій Unix-подібній системі, ймовірно, має певний розмір, який рідко змінюється. У порівнянні з ним, /dev/null може мати невизначений розмір. Це вводить в оману, тому що останній об’єкт насправді не є файлом. В Unix-подібних системах всі ресурси, включаючи пристрої, доступні як файли. Але все ж існує реальна відмінність між ними — по суті, вони ведуть себе по-різному). Та невизначеність розміру є одним з проявів цього.

Організація даних

Інформація в комп’ютерному файлі може складатися з невеликих пакетів інформації (часто званих «записами» або «рядками»), які індивідуально відрізняються, але мають деякі загальні риси. У підручнику інформатики для 7 класу «Файли та файлові структури» це докладно описано з прикладами.

Наприклад, електронна таблиця про заробітну плату в організації може містити дані про всіх співробітників компанії та відомості про їх заробітної плати, кожен запис у ній стосується тільки одного працівника, а всі записи мають спільну рису зв’язку (зарплата). Це дуже схоже на розміщення всієї інформації в певному журналі, що зберігається в сейфі в офісі, в якому немає комп’ютера. Текстовий файл може містити рядки тексту, відповідні надрукованим рядками на аркуші паперу. Альтернативно він може містити довільне бінарне зображення (BLOB) або виконуваний файл.

Як вони організовані в програми?

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

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

Ієрархія та архіви

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

Основні операції, які програми можуть виконувати над файлом:

  • Створити новий.
  • Змінити права доступу і атрибути.
  • Відкрити, що робить його доступним вміст для програми.
  • Читати дані з нього.
  • Записати дані в нього.
  • Закрити файл, розриваючи зв’язок між ним і програмою.

Як це працює на Windows і Unix?

Файлова структура ОС і операції з файлами можуть бути різними. Об’єкти на комп’ютері можна створювати, переміщати, змінювати, збільшувати, зменшувати і видаляти. У більшості випадків саме програми виконують ці операції, але користувач комп’ютера може при необхідності управляти даними. Наприклад, файли Microsoft Word зазвичай створюються і змінюються програмою Microsoft Word у відповідь на користувацькі команди, але юзер також може переміщати, перейменовувати або видаляти файли безпосередньо за допомогою програми керування, такий як Windows Explorer (на комп’ютерах «Віндовс») або за допомогою командного рядка (CLI).

В Unix-подібних системах програми користувача простору не працюють безпосередньо на низькому рівні з файлом. Тільки ядро має справу з ними, і воно обробляє всі взаємодії користувача з файлами таким способом, який прозорий для простору користувача. Операційна система забезпечує рівень абстракції, і це означає, що взаємодія з файлом з простору користувача відбувається просто через його ім’я (замість дескриптора).

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

Виявлення і організація

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

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

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

Як вони розташовуються на носії?

Файли і файлова система в логічній структурі диска виглядають так. В середовищах, у яких ім’я об’єкта зазначено, воно і шлях до каталогу повинні однозначно ідентифікувати його серед всіх інших об’єктів в комп’ютерній системі — ніякі два файли не можуть мати однакові ім’я і шлях. Якщо об’єкт є анонімним, іменовані посилання на нього будуть існувати в просторі імен. У більшості випадків будь-яке ім’я буде посилатися на рівно нуль або один файл. Однак будь-який об’єкт може бути представлений у будь-якому просторі імен нулем, одним або кількома іменами.

Ієрархія об’єктів

Більшість комп’ютерів організують файли в ієрархії, використовуючи папки, каталоги або каталоги. Концепція залишається незмінною, незалежно від використовуваної термінології. Кожна папка може містити довільну кількість файлів, а також може містити інші папки, які називаються подпапками. Вони можуть містити ще більше файлів і папок і т. д., вибудовуючи деревоподібну структуру, в якій одна «основна папка» (або «коренева» — назва змінюється, залежно від операційної системи) може містити будь-яку кількість рівнів інших об’єктів. Папки можуть мати такі назви, як файли (крім кореневого, яка залишається без імені). Їх використання спрощує організацію файлів логічним способом.

Коли комп’ютер допускає використання папок, кожна з них, як і файл має не тільки власне ім’я, але і шлях, який визначає каталог, у яких він знаходиться. У вказівці шляху для розділення імен використовується спеціальний символ — наприклад, коса риса.