Головна

ПРИМІТКА

  1.  Примітка
  2.  ПРИМІТКА
  3.  ПРИМІТКА
  4.  ПРИМІТКА
  5.  Примітка
  6.  Примітка
  7.  Примітка

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

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

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

Розглянемо, наприклад, деякий ресурс, який поділяється між процесами будь-яким планувальником. Кожен раз, коли процес бажає отримати в своє розпорядження якісь ресурси, він повинен звернутися до програми-планувальником. Цей планувальник повинен мати змінні, за допомогою яких він відстежує, зайнятий ресурс або вільний. Процедуру планувальника поділяють всі процеси, і кожен процес може в будь-який момент захотіти звернутися до запланованих завдань. Але планувальник не в змозі обслуговувати більше одного процесу одночасно. Така процедура-планувальник і являє собою приклад монітора.

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

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

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

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

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

У лістингу 6.16 як приклад наведено найпростіший монітор для виділення одного ресурсу.

Лістинг 6.16. Приклад монітора Хоара

monitor Resourse;

condition free; {Умова - вільний}

var busy: Boolean; {Busy - зайнятий}

procedure REQUEST; {Запит}

begin

if busy then WAIT (free);

busy: = true;

TakeOff; {ВИДАТИ РЕСУРС}

end;

procedure RELEASE;

begin

TakeOn; {ВЗЯТИ РЕСУРС}

busy: = false;

SIGNAL (free)

end;

begin

busy: = false;

end

Єдиний ресурс динамічно запитується і звільняється процесами, які звертаються до процедур REQUEST (запит) і RELEASE (звільнити). Якщо процес звертається до процедури REQUEST в той момент, коли ресурс використовується, значення змінної busy (зайнято) дорівнюватиме true, і процедура REQUEST виконає операцію монітора WAIT (free). Ця операція блокує не процедуру REQUEST, а звернувся до неї процес. Процес поміщається в кінець черги процесів, які очікують, поки не буде виконана умова free (вільний).

Коли процес, який використовує ресурс, звертається до процедури RELEASE, операція монітора SIGNAL деблокує процес, що знаходиться на початку черги, не дозволяючи виконуватися ніякої іншою процедурою всередині того ж монітора. Цей деблокувати процес готовий відновити виконання процедури REQUEST відразу ж після операції WAIT (free), яка його і блокувала. Якщо операція SIGNAL (free) виконується в той час, коли немає процесу, який чекає умови free, то ніякі дії не виконуються.

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

Монітор є пасивним об'єктом в тому сенсі, що це не процес; його процедури виконуються тільки на вимогу процесу.

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

ПРИМІТКА

У багатьох сучасних ОС для позначення мінімальної одиниці роботи ОС використовують термін «нитку», або «потік», при цьому змінюється суть терміна «процес». Детальніше про це розповідається в розділі 4 «Процеси і потоки». В інших розділах ми будемо дотримуватися спрощеного тлумачення, відповідно до якого для позначення виконуваної програми буде використовуватися тільки термін «процес».

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

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

§ планування ресурсу - тобто визначення, якому процесу, коли і в якій кількості (якщо ресурс може виділятися частинами) слід виділити даний ресурс;

§ задоволення запитів на ресурси;

§ відстеження стану і облік використання ресурсу - тобто підтримка оперативної інформації про те, зайнятий або вільний ресурс і яка частка ресурсу вже розподілена;

§ вирішення конфліктів між процесами.

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

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

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

Функціональні компоненти операційної системи автономного комп'ютера

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

управління процесами

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

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

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

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

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

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

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

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

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

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

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

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

управління пам'яттю

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

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

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

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

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

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

Управління файлами і зовнішніми пристроями

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

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

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

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

Програма, що управляє конкретною моделлю зовнішнього пристрою і враховує всі його особливості, зазвичай називається драйвером цього пристрою (від англійського drive - управляти, вести). Драйвер може керувати єдиною моделлю пристрою, наприклад модемом U-1496E компанії ZyXEL, або ж групою пристроїв певного типу, наприклад будь-якими Hayes-сумісними модемами. Для користувача дуже важливо, щоб операційна система включала як можна більше різноманітних драйверів, так як це гарантує можливість підключення до комп'ютера великого числа зовнішніх пристроїв різних виробників. Від наявності відповідних драйверів багато в чому залежить успіх операційної системи на ринку (наприклад, відсутність багатьох необхідних драйверів зовнішніх пристроїв було однією з причин низької популярності OS / 2).

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

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

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

Захист даних і адміністрування

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

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

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

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

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

Інтерфейс прикладного програмування

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

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

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

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

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

Користувальницький інтерфейс

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

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

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

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

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

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

Мережеві операційні системи

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

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

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

Мережеві та розподілені ОС

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

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

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

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

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

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

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

Два значення терміна «мережева ОС»

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

В результаті мережева ОС може розглядатися як набір операційних систем окремих комп'ютерів, що складають мережу. На різних комп'ютерах мережі можуть виконуватися однакові або різні ОС. Наприклад, на всіх комп'ютерах мережі може працювати одна і та ж ОС UNIX. Більш реалістичним варіантом є мережа, в якій працюють різні ОС, наприклад частина комп'ютерів працює під управлінням UNIX, частина - під управлінням NetWare, а решта - під управлінням Windows NT і Windows 98. Всі ці операційні системи функціонують незалежно один від одного в тому сенсі, що кожна з них приймає незалежні рішення про створення і завершення своїх власних процесів і управлінні локальними ресурсами. Але в будь-якому випадку операційні системи комп'ютерів, що працюють в мережі, повинні включати взаємно узгоджений набір комунікаційних протоколів для організації взаємодії процесів, що виконуються на різних комп'ютерах мережі, і поділу ресурсів цих комп'ютерів між користувачами мережі.

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

Таким чином, термін «мережева операційна система» використовується в двох значеннях: по-перше, як сукупність ОС всіх комп'ютерів мережі і, по-друге, як операційна система окремого комп'ютера, здатного працювати в мережі. Виходячи з цього визначення випливає, що такі операційні системи, як, наприклад, Windows NT, NetWare, Solaris, HP-UX, є мережевими, оскільки всі вони мають засоби, які дозволяють їх користувачам працювати в мережі.

Функціональні компоненти мережевої ОС

На рис. 2.1 показані основні функціональні компоненти мережевої ОС:

§ засоби управління локальними ресурсами комп'ютера реалізують всі функції ОС автономного комп'ютера (розподіл оперативної пам'яті між процесами, планування і диспетчеризацію процесів, управління процесорами в мультипроцесорних машинах, управління зовнішньою пам'яттю, інтерфейс з користувачем і т. Д.);

§ мережеві засоби, в свою чергу, можна розділити на три компоненти:

§ кошти надання локальних ресурсів і послуг в загальне користування - серверна частина ОС;

§ кошти запиту доступу до віддалених ресурсів і послуг - клієнтська частина ОС;

§ транспортні засоби ОС, які спільно з комунікаційною системою забезпечують передачу повідомлень між комп'ютерами мережі.

Мал. 2.1. Функціональні компоненти мережевої ОС

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

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

Управляють передачею повідомлень між клієнтської і серверними частинами по комунікаційній системі мережі транспортні засоби ОС. Ці кошти виконують такі функції, як формування повідомлень, розбиття повідомлення на частини (пакети, кадри), перетворення імен комп'ютерів в числові адреси, організацію надійної доставки повідомлень, визначення маршруту в складній мережі і т. Д. І т. П. Правила взаємодії комп'ютерів при передачі повідомлень по мережі фіксуються в комунікаційних протоколах, таких як Ethernet, Token Ring, IP, IPX і ін. Щоб два комп'ютери змогли обмінюватися повідомленнями по мережі, транспортні засоби їх ОС повинні підтримувати певний загальний набір комунікаційних протоколів. Комунікаційні протоколи переносять повідомлення клієнтських і серверних частин ОС по мережі, не вникаючи в їх зміст.

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

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

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

Мережеві служби і мережеві сервіси

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

Кажуть, що мережева служба надає користувачам мережі деякий набір послуг. Ці послуги іноді називають також мережевим сервісом (від англомовного терміна «service»). Необхідно відзначити, що цей термін в технічній літературі перекладається і як «сервіс», і як «послуга», і як «служба». Хоча зазначені терміни іноді використовуються як синоніми, слід мати на увазі, що в деяких випадках відмінність в значеннях цих термінів носить принциповий характер. Далі в тексті під «службою» ми будемо розуміти мережевий компонент, який реалізує деякий набір послуг, а під «сервісом» - опис того набору послуг, який надається цією службою. Таким чином, сервіс - це інтерфейс між споживачем послуг і постачальником послуг (службою).

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

Серед мережевих служб можна виділити такі, які орієнтовані не на простого користувача, а на адміністратора. Такі служби використовуються для організації роботи мережі. Наприклад, служба Bindery операційної системи Novell NetWare 3.x дозволяє адміністратору вести базу даних про мережеві користувачів комп'ютера, на якому працює ця ОС. Більш прогресивним є підхід зі створенням централізованої довідкової служби, або, по-іншому, служби каталогів, яка призначена для ведення бази даних не тільки про всіх користувачів мережі, а й про всі її програмних і апаратних компонентах. Як приклади служби каталогів часто наводяться NDS компанії Novell і StreetTalk компанії Banyan. Іншими прикладами мережевих служб, що надають сервіс адміністратору, є служба моніторингу мережі, що дозволяє захоплювати і аналізувати мережевий трафік, служба безпеки, до функцій якої може входити, зокрема, виконання процедури логічного входу з перевіркою пароля, служба резервного копіювання та архівування.

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

Мережеві служби за своєю природою є клієнт серверними системами. Оскільки при реалізації будь-якого мережевого сервісу природно виникає джерело запитів (клієнт) і виконавець запитів (сервер), то і будь-яка мережева служба містить в своєму складі дві несиметричні частини - клієнтську та серверну (рис. 2.2). Мережева служба може бути представлена ??в операційній системі або обома (клієнтської і серверної) частинами, або тільки однієї з них.

Мал. 2.2. Клієнт-серверна природа мережевих служб

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

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

Вбудовані мережеві служби і мережеві оболонки

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

§ мережеві служби глибоко вбудовані в ОС;

§ мережеві служби об'єднані в вигляді деякого набору - оболонки;

§ мережеві служби виробляються і поставляються у вигляді окремого продукту.

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

Однак надалі розробники мережевих ОС порахували більш ефективним підхід, при якому мережева ОС з самого початку роботи над нею замислюється і проектується спеціально для роботи в мережі. Мережеві функції у цих ОС глибоко вбудовуються в основні модулі системи, що забезпечує її логічну стрункість, простоту експлуатації і модифікації, а також високу продуктивність. Важливо, що при такому підході відсутня надмірність. Якщо всі мережеві служби добре інтегровані, тобто розглядаються як невід'ємні частини ОС, то всі внутрішні механізми такої операційної системи можуть бути оптимізовані для виконання мережевих функцій. Наприклад, ОС Windows NT компанії Microsoft за рахунок встроенности мережевих засобів забезпечує більш високі показники продуктивності і захищеності інформації в порівнянні з мережевою ОС LAN Manager тієї ж компанії, яка є надбудовою над локальною операційною системою OS / 2. Іншими прикладами мережевих ОС із вбудованими мережевими службами є всі сучасні версії UNIX, NetWare, OS / 2 Warp. ,

Мал. 2.3. Варіанти побудови мережевих ОС

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

Одна і та ж оболонка може призначатися для роботи над абсолютно різними операційними системами. У таких випадках оболонка повинна будуватися з урахуванням специфіки тієї операційної системи, над якою вона буде працювати. Так, LAN Server, наприклад, існує в різних варіантах: для роботи над операційними системами VAX VMS, VM, OS / 400, AIX, OS / 2.

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

Серверна мережева оболонка, прикладами якої можуть служити ті ж LAN Server і LAN Manager, а також NetWare for UNIX, File and Print Services for NetWare, орієнтована на виконання серверних функцій. Серверна оболонка як мінімум містить серверні компоненти двох основних мережевих служб - файлової служби та служби друку. Саме такий набір серверних компонентів реалізований в згаданих вище продуктах NetWare for UNIX і File and Print Services for NetWare. Деякі ж оболонки містять настільки широкий набір мережевих служб, що їх називають мережевими операційними системами. Так, жоден огляд мережевих операційних систем не буде достатньо повним, якщо в ньому відсутня інформація про LAN Server, LAN Manager, ENS, є мережевими оболонками. Таким чином, термін «мережева операційна система» набуває ще одне значення - набір мережевих служб, здатних узгоджено працювати в загальній операційному середовищі.

З одним типом ресурсів можуть бути пов'язані різні служби, що відрізняються протоколом взаємодії клієнтських і серверних частин. Так, наприклад, вбудована файлова служба Windows NT реалізує протокол SMB, що використовується у всіх ОС компанії Microsoft, а додаткова файлова служба, що входить до складу оболонки File and Print Services for NetWare для тієї ж Windows NT, працює по протоколу NCP, «рідного» для мереж NetWare. Крім того, в стандартну поставку Windows NT входить сервер FTP, що надає послуги файлового сервера для UNIX-систем. Ніщо не заважає придбати і встановити для роботи в середовищі Windows NT і інші файлові служби, такі, наприклад, як NFS, до речі має кілька реалізацій, виконаних різними фірмами. Наявність декількох видів файлових послуг дозволяє працювати в мережі додатків, розроблених для різних операційних систем.

Мережеві оболонки створюються як для локальних, так і для мережевих операційних систем. Дійсно, чому б не доповнити набір мережевих служб, вбудованих в мережеву ОС, іншими службами, складовими деяку мережеву оболонку. Наприклад, мережева оболонка ENS (Enterprise Network Services), що містить базовий набір мережевих служб операційної системи Banyan VINES, може працювати над мережевими ОС UNIX і NetWare (звичайно, для кожної з цих операційних систем повинні мати власний варіант ENS).

Існує і третій спосіб реалізації мережевої служби - у вигляді окремого продукту. Наприклад, сервер віддаленого управління WinFrame - продукт компанії Citrix - призначений для роботи в середовищі Windows NT. Він доповнює можливості вбудованого в Windows NT сервера віддаленого доступу Remote Access Server. Аналогічну службу віддаленого доступу для NetWare також можна придбати окремо, купивши програмний продукт NetWare Connect.

З плином часу мережева служба може отримати різні форми реалізації. . Так, наприклад, компанія Novell планує поставляти довідкову службу NDS, спочатку вбудовану в мережеву ОС NetWare, для інших ОС. Для цього служба NDS буде переписана у вигляді окремих продуктів, кожен з яких буде враховувати специфіку відповідної ОС. Вже є версії NDS для роботи в середовищах SCO UNIX і HP-UX, Solaris 2.5 і Windows NT. А довідкова служба StreetTalk вже давно існує і у вигляді вбудованого модуля мережевий ОС Bayan Vines, і в складі оболонки ENS, і у вигляді окремого продукту для різних операційних систем.

Однорангові і серверні мережеві операційні системи

Залежно від того, як розподілені функції між комп'ютерами мережі, вони можуть виступати в трьох різних ролях:

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

§ комп'ютер, який звертається із запитами до ресурсів іншої машини, виконує роль клієнтського вузла;

§ комп'ютер, який поєднує функції клієнта і сервера, є однорангові вузлом.

Очевидно, що мережа не може складатися тільки з клієнтських або тільки з серверних вузлів. Мережа, що виправдує своє призначення і забезпечує взаємодію комп'ютерів, може бути побудована за однією з трьох наступних схем:

§ мережу на основі тимчасових вузлів - однорангова мережа;

§ мережу на основі клієнтів і серверів - мережа з виділеними серверами;

§ мережу, що включає вузли всіх типів, - гібридна мережа.

Кожна з цих схем має свої достоїнства і недоліками, що визначають їх області застосування.

ОС в тимчасових мережах

У тимчасових мережах (рис. 2.4) всі комп'ютери рівні в можливостях доступу до ресурсів один одного. Кожен користувач може за своїм бажанням оголосити будь-якої ресурс свого комп'ютера розділяються, після чого інші користувачі можуть його використовувати. У тимчасових мережах на всіх комп'ютерах встановлюється така операційна система, яка надає всім комп'ютерам в мережі потенційно рівні можливості. Мережеві операційні системи такого типу називаються одноранговими ОС. Очевидно, що однорангові ОС повинні включати як серверні, так і клієнтські компоненти мережевих служб (на малюнку вони позначені буквами відповідно С і К). Прикладами тимчасових ОС можуть служити LANtastic, Personal Ware, Windows for Workgroups, Windows NT Workstation, Windows 95/98.

Мал. 2.4. тимчасова мережа

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

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

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

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

ОС в мережах з виділеними серверами

У мережах з виділеними серверами (рис. 2.5) використовуються спеціальні варіанти мережевих ОС, які оптимізовані для роботи в ролі серверів і називаються серверними ОС. Комп'ютери користувачів в цих мережах працюють під управлінням клієнтських ОС.

Мал. 2.5. Мережа з виділеними серверами

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

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

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

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

§ підтримка потужних апаратних платформ, в тому числі мультипроцесорних;

§ підтримка великого числа одночасно виконуваних процесів і мережевих з'єднань;

§ включення до складу ОС компонентів централізованого адміністрування мережі (наприклад, довідкової служби або служби аутентифікації і авторизації користувачів мережі);

§ більш широкий набір мережевих служб.

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

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

 Системне програмне забезпечення |  Історія еволюції обчислювальних і операційних систем, основні функції, класичних операційних систем в процесі еволюції

© 2016-2022  um.co.ua - учбові матеріали та реферати