Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Режими керування вводом-виводом



Як відомо, є два основних режими вводу/виводу: режим обміну з опитуванням готовності пристроювводу/виводу і режим обміну з перериваннями. Розглянемо рис.9.1.

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

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

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

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

Секція запуску ініціює операцію вводу/виводу. Ця секція запускається для включенняпристрою вводу/виводу або просто для ініціації чергової операції вводу/виводу.

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

Секція завершення звичайно виключає пристрій вводу/виводу або просто завершує операцію.Керування операціями вводу/виводу в режимі переривань вимагає великих зусиль з боку системнихпрограмістів — такі програми створювати складніше, ніж ті, що працюють у режимі опитування готовності.Прикладом тому може служити ситуація з драйверами, що забезпечують друк. Так, в ОС Windows (іWindows 9x, і Windows NT) драйвер друку через паралельний порт працює не в режимі з перериваннями, якце зроблено в інших ОС, а в режимі опитування готовності, що приводить до 100%-го завантаженняцентрального процесора на весь час друку. При цьому, природньо, виконуються й інші задачі, запущені навиконання, але винятково за рахунок того, що ОС Windows реалізує витісняючу мультизадачність і час відчасу перериває процес керування друком і передає центральний процесор іншим задачам

70 Віртуальні пристрої вводу-виводу.

Як відомо, багато пристроїв не допускають спільного використання. Насамперед, це пристрої зпослідовним доступом. Такі пристрої можуть стати закріпленими, тобто бути наданими деякомуобчислювальному процесу на весь час життя цього процесу. Однак це приводить до того, що обчислювальніпроцеси часто не можуть виконуватися паралельно — вони очікують звільнення пристроїв вводу/виводу.Для організації використання багатьма паралельно виконуючими задачами пристроїв вводу/виводу, що неможуть бути поділюваними, вводиться поняття віртуальних пристроїв. Використання принципу віртуалізаціїдозволяє підвищити ефективність обчислювальної системи.

Узагалі говорячи, поняття віртуального пристрою ширше, ніж використання цього терміну дляпозначення спулінгу (SPOOLing — simultaneous peripheral operation on-line, тобто імітація роботи зпристроєм у режимі «он-лайн»). Головна задача спулінгу — створити видимість паралельного поділупристрою вводу/виводу з послідовним доступом, що фактично повинно використовуватися тількимонопольно і бути закріпленим. Наприклад, ми вже говорили, що у випадку, коли кілька програм повиннівиводити на друк результати своєї роботи, якщо дозволити кожній такій програмі друкувати рядок на першувимогу, то це приведе до потоку рядків, що не представляють ніякої цінності. Однак можна кожномуобчислювальному процесу надавати не реальний, а віртуальний принтер і потік виведених символів (чикеруючих кодів для їхнього друку) спочатку направляти в спеціальний файл на магнітному диску. Потім,по закінченні віртуального друку, відповідно до прийнятої дисципліни обслуговування і пріоритетамидодатків виводити вміст спул-файла на принтер. Системний процес, що керує спул-файлом називається спулером (spool-reader чи spool-writer).

71Системні таблиці вводу-виводу даних

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

Перша таблиця (чи список) містить інформацію про всі пристрої вводу/виводу, підключених дообчислювальної системи. Назвемо її умовно таблицею устаткування (equipment table), а кожен елемент цієїтаблиці нехай називається UCB (unit control block, блок керування пристроєм вводу/виводу). Кожен елементUCB таблиці устаткування, як правило, містить наступну інформацію про пристрій:

 тип пристрою, його конкретна модель, символічне ім'я і характеристики пристрою;

 як цей пристрій підключений (через який інтерфейс, до якого роз‘єму, які порти і лінія запитупереривання використовуються і т.д.);

 номер і адресу каналу (і підканалу), якщо такі використовуються для керування пристроєм;

 вказівка на драйвер, що повинний керувати цим пристроєм, адреса секції запуску і секціїпродовження драйвера;

 інформація про те, використовується чи ні буферизація при обміні даними з цим пристроєм,«ім'я» (чи просто адреса) буфера, якщо такий виділяється із системної області пам'яті;

 уставка тайм-ауту і комірки для лічильника тайм-ауту;

 стан пристрою;

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

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

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

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

адресі (у координатах C-H-S) порцію даних. Хоча найчастіше програміст і не використовує пряму адресаціюпри роботі з магнітними дисками, а працює на рівні файлової системи. Однак у такому випадку вжерозроблювачі файлової системи не повинні залежати від того, накопичувач якого конкретного типу і моделі, атакож якого виробника використовується в даному конкретному комп'ютері (наприклад, HDD IBM DTLA307030, WDAC 450AA чи який-небудь ще). Важливим повинний бути тільки сам факт існування накопичувача,

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

Отже, спосібпідключення пристрою, його конкретна модель і відповідний їй драйвер містяться у вже розглянутій таблиціустаткування. Але для того, щоб зв'язати деякий віртуальний пристрій, використаний програмістом пристворенні додатку із системною таблицею, що відображає інформацію про те, який конкретний пристрій і якимчином підключений до комп'ютера, використовується друга системна таблиця. Назвемо її умовно таблицеюопису віртуальних логічних пристроїв (DRT, device reference table). Призначення цієї другої таблиці —встановлення зв'язку між віртуальними (логічними) пристроями і реальними пристроями, описаними задопомогою першої таблиці устаткування. Іншими словами, друга таблиця дозволяє супервізоруперенаправляти запит на ввід/вивід з додатку на ті програмні модулі і структури даних, які (або адресияких) зберігаються у відповідному елементі першої таблиці. У багатьох багатокористувацьких системахтака таблиця не одна, а декілька: одна загальна і по одній — на кожного користувача, що дозволяєбудувати необхідні зв'язки між логічними (символьними) іменами пристроїв і реальних фізичнихпристроїв, що є в системі.

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

У сучасних складних ОС є набагато більше системних таблиць чи списків, використовуваних дляорганізації процесів керування операціями вводу/виводу. Наприклад, однією з можливих і частореалізованих інформаційних структур, що супроводжують практично кожен запит на ввід/вивід, є блоккерування даними (data control block, DCB). Призначення цього DCB — підключення препроцесорів допроцесу підготовки даних на ввід/вивід, тобто облік конкретних технічних характеристик івикористовуваних перетворень. Це необхідно для того, щоб наявний пристрій одержував не якісьнезрозумілі йому коди або формати даних, що не відповідають режиму його роботи, а коди, створеніспеціально під даний пристрій і використовуваний у даний момент формат представлення даних.

Тепер нам залишилося лише ще раз, з урахуванням викладених принципів і таблиць розглянутипроцес керування введенням/виведенням за допомогою рис.9.3.

Рис.9.3 Процес управління вводом/виводом.

Запит на операцію вводу/виводу від програми, що виконується, надходить на супервізор (дія 1 ). Той перевіряє системний виклик на відповідність прийнятим специфікаціям і у випадку помилки повертаєзадачі відповідне повідомлення (дія 1-1). Якщо ж запит коректний, то він перенаправляється всупервізор вводу/виводу (дія 2). Останній по логічному (віртуальному) імені за допомогою таблиці DRTзнаходить відповідний елемент UCB у таблиці устаткування. Якщо пристрій уже зайнятий, то описувачзадачі, запит якої зараз обробляється супервізором вводу/виводу, поміщаєте в список задач, що очікуютьдійсний пристрій. Якщо ж пристрій вільний, то супервізор вводу/виводу визначає з UCB тип пристрою іпри необхідності запускає препроцесор, що дозволяє одержати послідовність керуючих кодів і даних, щозможе правильно зрозуміти і відробити пристрій (дія 3). Коли «програма» керування операцією вводу/виводу,буде готова, супервізор вводу/виводу передасть керування відповідному драйверу на секцію запуску (дія 4).

Драйвер ініціалізує операцію керування, обнуляє лічильник тайм-ауту і повертає керування супервізору ( диспетчеру задач) для того, щоб він поставив на процесор готову до виконання задачу (дія 5). Системапрацює своєю чергою, але коли пристрій вводу/виводу відробить послану йому команду, він виставляєсигнал запиту на переривання, по якому через таблицю переривань керування передається на секціюпродовження (дія 6). Одержавши нову команду, пристрій знову починає її обробляти, а керуванняпроцесором знову передається диспетчеру задач, і процесор продовжує корисну роботу. Таким чином,виходить паралельна обробка задач, на тлі якої процесор здійснює керування операціями вводу/виводу.

Очевидно, якщо є спеціальні апаратні засоби для керування вводом/виводом, що знімають цю роботу з

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

При описі цієї схеми ми не стали торкатись питань розподілу каналів, контролерів і власне самихпристроїв. Також були опущені деталі одержання канальних програм. Будемо вважати, що вони виходять заколо питань, розглянутих у підручнику по дисципліні «Системне програмне забезпечення».

72 Синхронний ввід-вивід даних.

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

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

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

вводу/виводу допускає такі асинхронні операції і це відзначено в UCB.

Можна організувати й асинхронне введення даних. Однак для цього необхідно не тільки виділитиобласть пам'яті для тимчасового збереження даних, які зчитуються з пристрою і зв'язати виділений буфер іззадачею, що замовила операцію, але і сам запит на операцію вводу/виводу розбити на дві частини (на двазапити). У першому запиті вказується операція на зчитування даних, подібно тому як це робиться присинхронному введенні/виведенні. Однак тип (код) запиту використовується інший, і в запиті вказується щепринаймні один додатковий параметр — ім'я (код) того системного об'єкта, що одержує задача у відповідь назапит і яке ідентифікує виділений буфер. Одержавши ім'я буфера (будемо цей системний об'єкт умовно називатив такий спосіб, хоча в різних ОС для його позначення використовуються й інші терміни, наприклад — клас),задача продовжує свою роботу. Тут дуже важливо підкреслити, що в результаті запиту на асинхронне введенняданих задача не переводиться супервізором вводу/виводу в стан очікування завершення операції вводу/виводу, азалишається в стані виконання чи в стані готовності до виконання. Через якийсь час, виконавши необхідний код,що був визначений програмістом, задача видає другий запит на завершення операції вводу/виводу. У цьомудругому запиті до того ж пристрою, що, природно, має інший код (або ім'я запиту), задача вказує ім'ясистемного об'єкта (буфера для асинхронного введення даних) і у випадку успішного завершення операціїзчитування даних відразу одержує їх із системного буфера. Якщо ж дані ще не встигли до кінця переписатися ззовнішнього пристрою в системний буфер, супервізор вводу/виводу переводить задачу в стан чеканнязавершення операції вводу/виводу, і далі все нагадує звичайний синхронний ввід даних. Звичайно асинхронний ввід/вивід надається в більшості мультипрограмних ОС, особливо якщо ОСпідтримує мультизадачність з допомогою механізму тредів. Однак, якщо асинхронний ввід/вивід у явному видівідсутній, його ідеї можна реалізувати самому, організувавши для виведення даних самостійний потік.

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

73Кешування операцій вводу-виводу даних.

Як відомо, накопичувачі на магнітних дисках мають вкрай низьку швидкість в порівнянні зшвидкодією центральної частини комп'ютера. Різниця у швидкодії відрізняється на кілька порядків.Наприклад, сучасні процесори за один такт роботи, а вони працюють уже з частотами і 1 ГГц і більше, можутьвиконувати по дві операції. Таким чином, час виконання операції (з позиції зовнішнього спостерігача, що небачить конвеєризації при виконанні машинних команд, завдяки якій продуктивність зростає в кілька разів)може складати 0,5 нс (!). У той же час перехід магнітної голівки з доріжки на доріжку складає декількамілісекунд. Такі ж тимчасові інтервали мають місце і при чеканні, поки під голівкою читання/запису невиявиться потрібний сектор даних. Як відомо, у сучасних приводах середня тривалість на читаннявипадковим чином обраного сектора даних складає близько 20 мс, що істотно повільніше, ніж вибіркакоманди чи операнда з оперативної пам'яті і тим більше з кешу. Правда, після цього дані читаютьсявеликим пакетом (сектор, як ми вже говорили, має розмір у 512 байтів, а при операціях з диском часточитається чи записується відразу кілька секторів). Таким чином, середня швидкість роботи процесора зоперативною пам'яттю на 2-3 порядки вище, ніж середня швидкість передачі даних із зовнішньої пам'яті намагнітних дисках в оперативну пам'ять.

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

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

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

Якщо не вдаватися в подробиці, то під кешім можна розуміти деякий пул буферів, якими ми керуємо за

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

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

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

Задача може продовжити своє виконання, а системні зовнішні процеси через якийсь час запишуть дані на диск.

Це називається операцією відкладеного запису (lazy write «ледачий запис»). Якщо відкладений записвідключений, тільки одна задача може записувати на диск свої дані. Інші додатки повинні чекати своєї черги.

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

більш ефективний по швидкості роботи з диском.

Інтервал часу, після якого дані будуть фактично записуватися, з одного боку, бажано вибрати більше,

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

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

Отже, шлях інформації від диска до прикладної програми пролягає як через буфер, так і черезфайловий кеш. Коли додаток запитує з диска дані, програма кешування перехоплює цей запит і читаєразом з необхідними секторами і ще декілька додаткових. Потім вона поміщає в буфер інформацію,яка потрібна задачі, і повідомляє про це операційну систему. Операційна система повідомляє задачі,що її запит виконаний і дані з диска знаходяться в буфері. При наступному звертанні додатка до дискапрограма кешування насамперед перевіряє, чи не знаходяться вже в пам'яті викликані дані. Якщо це так,то вона копіює їх у буфер; якщо ж їх у кеші немає, то запит на читання диска передається операційнійсистемі. Коли задача змінює дані в буфері, вони копіюються в кеш. У ряді ОС є можливість вказати вявному виді параметри кешування, у той час як в інших за ці параметри відповідає сама ОС. Так,наприклад, у системі Windows NT немає можливості в явному виді керувати ні обсягом файловогокешу, ні параметрами кешування. У системах Windows 95/98 така можливість вже є, але вонапредставляє не дуже великий вибір. Фактично ми можемо вказати тільки обсяг пам'яті, що відводитьсядля кешування, і обсяг порції даних (чи буфер chunk - шматочок), з яких набирається кеш. У файлі

System.ini є можливість у секції [VCACHE] прописати, наприклад, наступні значення:

[vcache]

MinFileCache = 4096

MaxFileCache = 32768

ChunkSize = 512

Тут зазначено, що мінімально під кешування даних зарезервовано 4 Мбайт оперативної пам'яті,максимальний обсяг кешу може досягати 32 Мбайт, а розмір даних, якими маніпулює менеджер кешу,рівний одному сектору.

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

Крім описаних дій ОС може виконувати і роботу з оптимізації переміщення голівок читання/записуданих, зв'язаного з виконанням запитів від паралельно виконуємих задач. Час, необхідний на одержанняданих з магнітного диска, складається з часу переміщення магнітної голівки на необхідний циліндр і часучекання заданого сектора; часом зчитування знайденого сектора і витратами на передачу цих даних воперативну пам'ять ми можемо зневажити. Таким чином, основні витрати часу ідуть на пошук даних. Умультипрограмних ОС при виконанні багатьох задач запити на читання і запис даних можуть йти такимпотоком, що при їхньому обслуговуванні утвориться черга. Якщо виконувати ці запити у порядкунадходження їх у чергу, то внаслідок випадкового характеру звертань до того чи іншого сектора магнітногодиска ми можемо мати значні втрати часу на пошук даних. Напрошується очевидне рішення: оскількивиконані перевпорядкування запитів з метою мінімізації витрат часу на пошук даних можна виконатидуже швидко (практично цим часом можна зневажити, з огляду на різницю у швидкодії центральноїчастини і пристроїв вводу/виводу), то необхідно знайти метод, що дозволяє перебудовувати чергу запитівоптимальним чином. Вивчення цієї проблеми дозволило знайти найбільш ефективні дисциплінипланування. Перелічимо відомі дисципліни, відповідно до яких можна перебудовувати чергу запитів наоперації читання/запису даних:

SSTF (shortest seek time — first) — з найменшим часом пошуку — першим. Відповідно до цієїдисципліни при позиціюванні магнітних голівок наступним вибирається запит, для якогонеобхідно мінімальне переміщення з циліндра на циліндр, навіть якщо цей запит не бувпершим у черзі на ввід/вивід. Однак для цієї дисципліни характерна різка дискримінаціявизначених запитів, але ж вони можуть йти від високопріоритетних задач. Звертання додиска виявляють тенденцію концентруватися, у результаті чого запити на звертання досамих зовнішніх і самих внутрішніх доріжок можуть обслуговуватися істотно довше і немаєніякої гарантії обслуговування. Достоїнством такої дисципліни є максимально можливапропускна здатність дискової підсистеми.

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

Next-Step Scan — відрізняється від попередньої дисципліни тим, що на кожнім проходіобслуговуються тільки запити, що вже існували на момент початку проходу. Нові запити,що з'являються в процесі переміщення голівок читання/запису, формують нову чергузапитів, причому таким чином, щоб їх можна було оптимально обслужити на зворотномуходу.

C-Scan (циклічне сканування). По цій дисципліні голівки переміщаються циклічно ізсамої зовнішньої доріжки до внутрішніх, але по шляху обслуговуючи наявні запити, післячого знову переносяться до зовнішніх циліндрів. Цю дисципліну іноді реалізують такимчином, щоб запити, що надходять під час поточного прямого ходу голівок, обслуговувалисяне попутно, а при наступному ході, що дозволяє виключити дискримінацію запитів досамих крайніх циліндрів; вона характеризується дуже малою дисперсією часу чеканняобслуговування. Цю дисципліну обслуговування часто називають «елеваторною».

Розділ 2. Файлові системи та транслятори.

74 Основні функції файлових систем.

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

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

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

даються наступні можливості:

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

 робота з не дисковими периферійними пристроями як з файлами;

 обмін даними між файлами, між пристроями, між файлом і пристроєм(і навпаки);

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

 захист файлів від несанкціонованого доступу.

У деяких ОС може бути кілька систем керування файлами, що забезпечує їмможливість працювати з декількома файловими системами. Очевидно, що системикерування файлами, будучи компонентом ОС, не є незалежними від цієї ОС,оскільки вони активно використовують відповідні виклики API (applicationprogram interface, прикладний програмний інтерфейс). З іншого боку, системикерування файлами самі доповнюють API новими викликами. Можна сказати, щоосновне призначення файлової системи і відповідної їй системи керуванняфайлами — організація зручного доступу до даних, організованих як файли, тобтозамість низькорівневого доступу до даних із вказівкою конкретних фізичних адреспотрібного нам запису використовується логічний доступ із вказівкою імені файлуі запису в ньому.

Іншими словами, термін «файлова система» визначає, насамперед, принципидоступу до даних, організованих у файли. Цей же термін часто використовують істосовно конкретних файлів, розташованих на тім чи іншім носії даних. А термін«система керування файлами» варто вживати стосовно конкретної реалізації

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

Потрібно ще раз відмітити, що будь-яка система керування файлами не існуєсама по собі — вона розроблена для роботи в конкретній ОС. Як приклад можнасказати, що усім відома файлова система FAT (file allocation table) має безлічреалізацій як система керування файлами. Так, система, що одержала цю назву і

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

FAT-16. Цю назву файлової системи ми використовуємо і стосовно системикерування файлами самої MS-DOS. Реалізацію же системи керування файлами дляOS/2, що використовує основні принципи системи FAT, називають super-FAT;основна відмінність — можливістъ підтримувати для кожного файлу розширеніатрибути. Є версія системи керування файлами з принципами FAT і для Windows9.1/98, для Windows NT і т.д. Іншими словами, для роботи з файлами,організованими відповідно до деякої файлової системи, для кожної ОС повиннабути розроблена відповідна система керування файлами. Ця система керуванняфайлами буде працювати тільки в тієї ОС, для якої вона і створена; але при цьомувона дозволить працювати з файлами, створеними за допомогою системи керуванняфайлами інший ОС, що працює по тим же основним принципам файлової системи.





Дата публикования: 2015-09-18; Прочитано: 2784 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.017 с)...