Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson_14_SPZ.doc
Скачиваний:
4
Добавлен:
21.12.2018
Размер:
327.68 Кб
Скачать
  1. Підсистема вводу/виводу.

Функції вводу/виводу в ОС Unix задаються за допомогою 5 системних викликів, а саме:

  • open;

  • close;

  • read;

  • write;

  • seek.

При використанні цих команд в якості параметрів вказується дескриптор (номер) файлу, вказується режим відкриття, зчитування, запису файлу, а також кількість байт при виконанні операції. При виконанні операції читання (запису) можливі три такі ситуації, при яких читання (запис) відбувається послідовно:

  • якщо читання (запис) відбувається перший раз з певного файлу, то воно відбувається послідовно з першого байту пам’яті;

  • якщо перед поточною операцією читання (запису) була попередня операція читання (запису), то буде зчитано (записано) байти з поточної позиції вказівника файлу;

  • якщо операції зчитування (запису) передувала команда пошуку seek, то поточна операція виконується з поточного зміщення вказівника файлу.

Для того щоб завершити операцію вводу/виводу використовується команда close. Ті самі команди вводу/виводу застосовуються для фізичних пристроїв. В Unix всі фізичні пристрої представлені спеціальними файлами в єдиній структурі файлової системи. Це означає, що розробник може написати програму, яка комунікується з пристроями вводу/виводу, яка буде незалежна від них самих шляхом вводу/виводу інформації у відповідний файл. На відміну від інших ОС підсистема вводу/виводу ОС Unix орієнтована на роботу з потоками (stream), а не з записами. Потік в даному контексті, це послідовність байт, яка закінчується спеціальним розділювачем. Використання механізму потоків дозволяє забезпечити незалежність від фізичних пристроїв, уніфікацію файлів і конвеєрів, та гнучкість роботи з операціями вводу/виводу даних.

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

  • будь – яка операція вводу/виводу розглядається як запис в файл або зчитування з файлу. Клавіатура або термінал також інтерпретується як файл;

  • доступ до будь – якого файлу (пристрою) здійснюється через його дескриптор (номер). Існує декілька стандартних дескрипторів (файл з дескриптором 1 – стандартний ввід, 2 – стандартний вивід, 3 – стандартне повідомлення про помилки);

  • задача (чи процес) яка породжується в певному процесі наслідує всі відкриті дескриптори цього батьківського процесу.

Тому для правильного функціонування підсистеми вводу/виводу доцільно при розробці власних програм забезпечити правильне використання системних дескрипторів (1 – stdin, 2 – stdout, 3 – stderr).

  1. Структура файлової системи.

В файловій системі Unix це множина символів з послідовним або блоковим доступом. В файлі можуть міститися будь – які дані, які записуються туди користувачем. Файл не має ніякої внутрішньої структури, за виключенням тієї, яку накладає на неї користувач. Дані на вінчестері розміщуються по блоках розміром 512 байт. В загальному випадку диск розбивається на наступні області:

  • невикористовуваний (вільний) блок;

  • керуючий блок (супер блок), який містить інформацію про розмір диску та границі інших блоків;

  • і – блок, який складається з опису файлів, які називаються і – вузлами;

  • область для зберігання вмісту файлів.

Рис. 14.1. Організація файлів на диску Unix.

Кожен і – вузол містить наступну інформацію:

  • ідентифікатор власника файлу;

  • ідентифікатор групи власника файлу;

  • біти захисту;

  • фізичну адресу на диску, де знаходиться вміст цього файлу;

  • розмір файлу;

  • час створення файлу;

  • час останньої модифікації файлу (використання);

  • час останньої зміни атрибутів файлу;

  • байти, які вказують є даний файл директорією, звичайним файлом чи спеціальним файлом.

Таким чином файлова система Unix представляє собою структуру даних, яка містить керуючий супер блок, в якому визначається вся файлова система в цілому, масив і – вузлів, в яких визначені всі файли у файловій системі, сукупність блоків, які містять самі файли та сукупність вільних блоків.

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

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

Звичайний файл, який не є директорією, може зустрічатися в різних директоріях і можливо під різними іменами. Ця властивість називається зв’язувальною. Елемент директорії, який відноситься до одного файлу називається зв’язком.

В системах Unix такі зв’язки мають однаковий статус чи права. Файли не належать директоріям, а зв’язки в цих директорія вказують на фізичний файл розміщений на диску.

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