ЗНАЕТЕ ЛИ ВЫ?

Незалежна від пристроїв частина операційної системи



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

Типовими функціями для незалежного від пристроїв пласту є:

· забезпечення загального інтерфейсу для драйверів пристроїв;

· іменування пристроїв;

· захист пристроїв;

· забезпечення незалежного розміру блоку;

· буферизація;

· розподіл пам'яті на блок-блок-орієнтованих пристроях;

· розподіл і звільнення виділених пристроїв;

· повідомлення про помилки.

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

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

 

Користувальницький пласт програмного забезпечення

Хоча велика частина програмного забезпечення введення-виведення знаходиться усередині ОС, деяка його частина міститься в бібліотеках, що пов'язуються з користувальницькими програмами. Системні виклики, що містять виклики введення-виведення, звичайно, подаються через бібліотечні процедури. Якщо програма, написана мовою С, містить виклик:

count = write (fd, buffer, nbytes),

то бібліотечна процедура write пов'язана з програмою. Набір подібних процедур є частиною системи введення-виведення. Зокрема, форматування чи введення- виведення виконується бібліотечними процедурами. Прикладом може бути функція printf мови С, що приймає рядок формату і, можливо, деякі змінні як вхідну інформацію, потім будує рядок символів АSCSII і робить виклик printf для виведення цього рядка. Стандартна бібліотека введення-виведення містить велике число процедур, що виконують введення-виведення і працюють як частина користувальницької програми.

Іншою категорією програмного забезпечення введення-виведення є система спулінга (spooling).

Спулінг - це спосіб роботи з виділеними пристроями в мультипрограмній системі. Розглянемо типовий пристрій, що вимагає спулінга, - рядковий принтер. Хоча, технічно, легко дозволити кожному користувальницькому процесу відкрити спеціальний файл, пов'язаний із принтером. Такий спосіб небезпечний через те, що користувальницький процес може монополізувати принтер на довільний час. Тому створюють спеціальний процес - монітор, що має виняткові права на використання цього пристрою. Також створюють спеціальний каталог, названий каталогом спулінга. Для того, щоб надрукувати файл, користувальницький процес розміщує виведену інформацію в цьому файлі і в каталозі спулінга.

Процес-монітор, по черзі, роздруковує усі файли, що містяться в каталозі спулінга.

 


Файлова система

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

• сукупність усіх файлів на диску;

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

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

Імена файлів

Файли ідентифікуються іменами. Користувачі дають файлам символічні імена, при цьому враховуючи обмеження ОС як на використовувані символи, так і на довжину імені. Донедавна ці межі були дуже вузькими. Так, у популярній файловій системі FАТ, довжина імен обмежується відомою схемою 8,3 (8 символів - власне ім'я, 3 символи - розширення імені), а в ОС UNIX system V ім'я не може містити більше 14 символів.

 

Загальна модель файлової системи

Однак, користувачу набагато зручніше працювати з довгими іменами, оскільки вони дозволяють дати файлу дійсно мнемонічну назву, за якою навіть через досить великий проміжок часу можна буде згадати, що містить цей файл. Тому сучасні файлові системи, як правило, підтримують довгі символьні імена файлів. Наприклад, Windows NT у своїй новій файловій системі NTFS установлює, що ім'я файлу може містити до 255 символів, не враховуючи завершального нульового символу.

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

Довгі імена підтримують не тільки нові файлові системи, але і нові версії відомих файлових систем. Наприклад, в ОС Windows 95 використовують файлову систему VFАТ, що являє собою істотно змінений варіант FАТ. Серед багатьох інших удосконалень однією з головних позитивних рис VFАТ є підтримка довгих імен. Крім проблеми генерації еквівалентних коротких імен, при реалізації нового варіанта FАТ, важливим завданням було збереження довгих імен за умови, що метод збереження і структура даних на диску принципово не повинні змінитися.

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

Унікальне ім'я є числовим ідентифікатором і використовується програмами операційної системи.

Прикладом такого унікального імені файлу є номер індексного дескриптора в системі UNIX.

 

Типи файлів

Файли є різних типів: звичайні файли, спеціальні файли, файли-каталоги.

Звичайні файли, у свою чергу, поділяються на текстові і двоїчні. Текстові файли складаються з рядків символів, представлених у АSCSI-коді. Це можуть бути документи, вихідні тексти програм і т.п. Текстові файли можна прочитати на екрані а роздрукувати на принтері. Двоїчні файли не використовують АSCSI - коди, вони часто мають складну внутрішню структуру, наприклад, об'єктний код чи програми архівних файлів.

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

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

У різних файлових системах можуть використовуватися атрибути з різними характеристиками, наприклад:

• інформація про дозволений доступ;

• пароль для доступу до файлу;

• власник файлу;

• творець файлу;

• ознака "тільки для читання";

• ознака "схований файл";

• ознака "системний файл";

• ознака "архівний файл";

• ознака "двоїчний / символічний";

• ознака "тимчасовий" (видалити після завершення процесу);

• ознака блокування;

• довжина запису;

• показник ключового поля в записі;

• довжина ключа;

• час створення, останнього доступу й останньої зміни;

• поточний розмір файлу;

• максимальний розмір файлу.

Каталоги можуть безпосередньо містити значення характеристик файлів, як це зроблено у файловій системі MS-DOS, чи посилатися на таблиці, що містять ці характеристики як це реалізовано в ОС UNIX (малюнок 2.31). Каталоги можуть утворювати ієрархічну структуру за рахунок того, що каталог нижчого рівня може належати каталог з вищого рівня (малюнок 2.32).

Ієрархія каталогів може бути виражена деревом чи мережею. Каталоги утворять дерево, якщо файлу дозволено входити тільки в один каталог, і мережу - якщо файл може входити відразу в кілька каталогів. У MS-DOS каталоги утворюю деревоподібну структуру, а в і UNIX'е - мережну. Як і будь-який інший файл, каталог має символічне ім'я. Він еідентифікується складеним ім'ям, що містить ланцюжок символічних імен усіх каталогів, через які проходить шлях від кореня до певного каталогу.

Мал. 2.31. Структура каталогів: а - структура запису каталогу MS-DOS (32 байта),

б - структура запису каталогу ОС UNIX

 

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

 

Файли

 

 
 
Мал. 2.32. Логічна організація файлової системи а - однорівнева; б - ієрархічна (дерево); в - ієрархічна (мережа)  

 

 


Логічна організація файлу

Програміст має справу з логічною організацією файлу, представляючи його у вигляді організованих логічних записів. Логічний запис - це найменший елемент даних, яким може оперувати програміст, за умови обміну з зовнішнім пристроєм. Навіть якщо фізичний обмін із пристроєм здійснюється великими одиницями, операційна система забезпечує програмісту доступ до окремого логічного запису. На малюнку 2.33 показані кілька схем логічної організації файлу. Записи можуть бути фіксованої чи перемінної довжини. Вони можуть бути розташовані у файлі послідовно (послідовна організація) чи в складнішому порядку, з використанням, так званих, індексних таблиць, що дозволяють забезпечити швидкий доступ до окремого логічного запису (індексно-послідовна організація). Для ідентифікації запису використовують спеціальне поле запису, назване ключем. У файлових системах ОС UNIX і MS-DOS файл має найпростішу логічну структуру - послідовність однобайтових записів.

Мал. 2.33. Способи логічної організації файлів





Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.238.190.82 (0.008 с.)