Сучасні Операційні системи (реферат)

РЕФЕРАТ

На тему:

Сучасні Операційні системи

1.ОС Unix

1.1. Історія і загальна характеристика

UNIX зародився в лабораторії Bell Labs фірми AT&T більш 20 років тому. У
той час Bell Labs займалася розробкою багатокористувальницької системи
поділу часу MULTICS (Multiplexed Information and Computing Service)
разом з MIT і General Electric. Денис Рітчі і деякі інші розробляли
нову ФС, багато рис якої вели своє походження від MULTICS. Для перевірки
нової ФС Томпсон написав ядро ОС і деякі програми для комп’ютера GE-645,
що працював під керуванням мультипрограмної системи поділу часу GECOS.
Виникла перша версія UNIX, хоча вона і не мала в той час ніякого назви.
Але вона уже включала характерну для UNIX ФС, засновану на індексних
дескрипторах inode, мала підсистему керування процесами і пам’яттю, а
також дозволяла двом користувачам працювати в режимі поділу часу.
Система була написана на ассемблері. Ім’я UNIX (Uniplex Information and
Computing Services) було дано їй ще одним співробітником Bell Labs,
Брайаном Керніганом, що спочатку назвав її UNICS, підкреслюючи її
відмінність від багатокористувальницької MULTICS. Незабаром UNICS почали
називати UNIX.

Першими користувачами UNIX’а стали співробітники відділу патентів Bell
Labs, що знайшли її зручним середовищем для створення текстів.

Великий вплив на долю UNIX зробив перепис її мовою високого рівня З,
розробленого Денисом Рітчі спеціально для цих цілей. Це відбулося в 1973
році, UNIX нараховував до цього часу вже 25 інсталяцій, і в Bell Labs
була створена спеціальна група підтримки UNIX.

Широке поширення UNIX одержав з 1974 року, після опису цієї системи
Томпсоном і Рітчі в комп’ютерному журналі CACM. UNIX одержав широке
поширення в університетах, тому що для них він поставлявся безкоштовно
разом з вихідними кодами на С. Широке поширення ефективних
C-компіляторів зробило UNIX унікальної для того часу ОС через можливість
переносу на різні комп’ютери. Університети внесли значний вклад у
поліпшення UNIX і подальшу його популяризацію. Ще одним кроком на шляху
одержання визнання UNIX як стандартизованого середовища стала розробка
Денисом Рітчі бібліотеки в/в stdio. Завдяки використанню цієї бібліотеки
для компілятора З, програми для UNIX стали легко стерпними.

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

Незалежно від версії, загальними для UNIX рисами є:

багатокористувацький режим із засобами захисту даних від
несанкціонованого доступу,

реалізація мультипрограмної обробки в режимі поділу часу, заснований на
використанні алгоритмів витісняючої багатозадачності (preemptive
multitasking),

використання механізмів ВП і свопінгу для підвищення рівня
мультипрограмування,

уніфікація операцій в/в на основі розширеного використання поняття
«файл»,

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

перенесення на інші типи комп’ютерів системи за рахунок написання її
основної частини мовою C,

різноманітні засоби взаємодії процесів, у тому числі і через мережу,

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

1.2. Управління процесами. Образ, дескриптор, контекст процесу.

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

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

При керуванні процесами ОС використовує два основних типи інформаційних
структур: дескриптор процесу (структура proc) і контекст процесу
(структура user).

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

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

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

1.3. Зародження процесів

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

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

if( fork() ) { дії батька }

else { дії сина }

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

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

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

1.4. Керування пам’яттю. Свопінг.

У UNIX System V Release 4 реалізована сегментно-сторінкова модель
пам’яті в її традиційному виді. Поряд з механізмом керування сторінками
використовується і механізм свопінгу, коли на диск виштовхуються всі
сторінки якого-небудь процесу. Свопінг застосовується в «передаварійних»
ситуаціях, коли розмір вільної ОП зменшується до деякого заданого
порога, так що робота всієї системи дуже ускладнюється.

Маються наступні типи віртуальних сегментів:

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

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

Стік (stack) — містить стек процесу. Він позначається доступним для
читання і запису і, подібно сегменту даних, не може розділятися іншими
процесами.

Є ще два типи сегментів:

Поділювана пам’ять (shared memory) — область пам’яті, доступна для
читання і запису декільком процесам.

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

Поле s_data дескриптора сегмента вказує на структуру даних segvn_dat, у
якій міститься специфічна для сегмента інформація:

type: ознака, чи є сегмент поділюваним чи особистим;

vp і offset: покажчик на vnode файлу і зсув у цьому файлі, що задають
адреса, починаючи з якої розташовані на диску дані цього сегмента;

amp: покажчик на карту анонімних сторінок сегмента.

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

Відображення віртуальних сторінок сегмента на фізичні задається за
допомогою таблиці HAT (Hardware Address Translation), покажчик на який
мається в структурі адресного простору процесу as. Структура таблиці HAT
залежить від апаратної платформи, але в будь-якому випадку з її
допомогою можна знайти таблицю чи таблиці сторінок, що містять
дескриптори сторінок (структури типу pte). Дескриптор сторінки містить
ознака наявності даної віртуальної сторінки у фізичній пам’яті, номер
відповідної фізичної сторінки, а також ряд ознак типу «модифікація»,
«було посилання», що допомагають ОС планувати процес витиснення
віртуальних сторінок на диск.

У UNIX System V Release 4 використовується алгоритм переміщення
віртуальних сторінок процесу у фізичну пам’ять по запиті. Звичайно при
запуску процесу у фізичну пам’ять міститься тільки невелика частина
сторінок, необхідна для старту процесу, а інші сторінки завантажуються
при сторінкових збоях. Очевидно, що початковий період роботи будь-якого
процесу породжує підвищене навантаження на систему. Якщо при пошуку ВА у
відповідному дескрипторі виявляється ознака відсутності цієї сторінки у
фізичній пам’яті, то відбувається сторінкове переривання, і ядро
переміщає цю сторінку з диска у фізичну пам’ять. Для пошуку сторінки на
диску використовується інформація зі структури s_data сегмента — або
vnode і offset, якщо сторінка типу vnode, або інформація про
розташування анонімної сторінки в області свопінгу за допомогою
інформації про її розташування там по карті amp.

Якщо у фізичній пам’яті недостатньо місця для розміщення викликаної
процесом сторінки, то ОС вивантажує деякі сторінки на диск. Цей процес
здійснюється спеціальним процесом ядра, «виштовхувачем сторінок», що має
в UNIX System V Release 4 ім’я pageout. Для ухвалення рішення про те,
яку віртуальну сторінку потрібно перемістити на диск, процесу pageout
потрібно мати інформацію про поточнИЙ стан.

2. Мікроядро Mach

2.1. Історія Mach

Система Mach мала як попередницю систему RІ — Rochester Іntellіgent
Gateway, початок розробки якої припав на 1975 рік. RІ була написана для
16-бітового міні-комп’ютера компанії DataGeneral за назвою Elіpce. Метою
цієї розробки була демонстрація можливостей структурування ОС і
представлення її у виді набору процесів, що можуть взаємодіяти між собою
шляхом передачі повідомлень, у тому числі і по мережі. Потім ця ОС була
поліпшена шляхом додавання засобів захисту і засобів прозорої роботи в
мережі й одержала назву Accent (у 1981 році, в університеті
Карнегі-Меллона). У 1984 році вона уже використовувалася на 150
комп’ютерах PERQ — ранніх графічних станціях, але програла змагання з
UNіX’ом. Ця обставина спонукала створити третє покоління ОС, що
використовує механізм обміну повідомленнями. Цей проект і був названий
Mach. Крім сумісності з UNІХ, у Mach були введені й інші удосконалення,
включаючи нитки, поліпшені механізми міжпроцесної взаємодії, підтримка
багатопроцесорних систем, поліпшена ВП і ін. У цей час агентство DARPA
шукало ОС для підтримки мультипроцесорів. Вибір був зроблений на користь
університету Карнегі-Меллона, і роботи над ОС Mach були продовжені.
Перша версія Mach була реалізована в 1986 році для VAX11/784, 4-х
процесорної машини. Незабаром ця ОС була перенесена на ІBM PC RT і Sun
3. ДО 1987 року Mach виконувалася також на мультипроцесорах Encore і
Sequent. Хоча Mach і мала мережеві засоби, її скоріше можна було
віднести до ОС окремої машини чи мультипроцесора, а не до мережевої
розподіленої прозорої системи. Незабаром була створена організація
виробників комп’ютерів OSF (ІBM, DEC, Hewlett Packard) для того, щоб
відібрати контроль над ОС UNІХ у її власника AT&T. Вони вибрали Mach 2.5
як основу для їхньої першої ОС OSF/1. У 1988 році ядро Mach 2.5 було
великим і монолітним через те, що містило велику кількість коду Berkeley
UNІ. А в 1989 році університет Карнегі-Меллона видалив весь код BSD UNІ
з ядра і помістив його в користувацький простір. Те, що залишилося, було
мікроядром, що складається з чистого коду Mach. Ця версія 3.0 і
використовується як основа наступних версій OSF.

2.2. Мета Mach.

ОС Mach значно змінилася з часу її першої реалізації у виді RІ. Мета
проекту також змінилися згодом . На сучасний момент основні цілі
виглядають так:

1. Забезпечення базових функцій для створення інших ОС (наприклад,
UNІХ).

2. Підтримка великих розріджених адресних просторів.

3. Забезпечення прозорого доступу до мережевих ресурсів.

4. Підтримка паралелізму як у системі, так і в додатках.

5. Забезпечення переносності Mach на різні типи комп’ютерів.

2.3. Основні концепції Mach

Мікроядро Mach було розроблено як основу, на базі якої можна емулювати
UNІХ і інші ОС. Ця емуляція здійснюється програмним рівнем, що працює
поза ядром, у користувацькому просторі.

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

Ядро керує п’ятьма головними абстракціями:

1. Процеси.

2. Нитки .

3. Об’єкти пам’яті.

4. Порти.

5. Повідомлення.

Користувацький процес

користувацький

простір

Рівень

програмних

емуляторів

простір ядра

Рис. 46. Абстрактна модель емуляції UNІХ на основі Mach

2.4. Керування процесами в Mach

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

Інші параметри процесу

Рис. 46. Процес Mach

Малюнок 46 ілюструє процес у Mach. Крім адресного простору і ниток,
процес характеризується використовуваними ними портами і деякими
параметрами. Усі порти, показані на малюнку, мають спеціальне
призначення. Порт процесу використовується для взаємодії з ядром. Багато
функцій ядра процес може викликати шляхом відправлення повідомлення на
порт процесу, а не за допомогою системного виклику. Цей механізм
використовується в Mach усюди для зменшення кількості системних викликів
до можливого мінімуму. Взагалі говорячи, програміст може навіть не
знати, чи виконується сервіс за допомогою системного виклику чи ні.
Усім сервісам, які викликаються як за допомогою системних викликів, так
і за допомогою передачі повідомлень, відповідають ерзац-процедури
(заглушки) у бібліотеці. Це саме ті процедури, що описані в посібниках і
які викликаються ПП. Ці процедури генеруються на підставі опису сервісу
за допомогою компілятора MІG (Mach Іnterface Generator).

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

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

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

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

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

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

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

Примітиви керування процесами

Mach передбачає невелику кількість примітивів керування процесами.
Більшість з них виконується шляхом посилки повідомлення ядру через порт
процесу. Найбільш важливі з цих викликів приведені в таблиці 3.

Таблия 3.

Виклик Опис

Create Створює новий процес, що успадковує деякої властивості

Termіnate Завершує визначений процес

Suspend Нарощує лічильник припинень

Resume Зменшує лічильник припинень; якщо він дорівнює 0, то

розблокує процес

Prіorіty Встановлює пріоритет для існуючих чи майбутніх ниток

Assіgn Говорить, на якому процесорі повинні виконуватися нові
нитки

Іnfo Повертає інформацію про час виконання,
використовуваної

пам’яті і т.д.

Threads Повертає список ниток процесу

Процеси можуть бути припинені і відновлені за допомогою програмного
керування. Кожен процес має лічильник, нарощуваний викликом Suspend і
зменшуваний викликом Resume, що можуть блокувати і розблокувати його.
Коли лічильник дорівнює 0, то процес може виконуватися. Наявність
лічильника дозволяє уникнути проблем.

Виклики Prіorіty і Assіgn дозволяють програмісту керувати тим, як і де
нитки виконуються в багатопроцесорній системі. Планування CPU
виконується на основі пріоритетів, так що програміст може визначати, які
нитки більш важливі, а які — менш важливі.

Нитки

Активними об’єктами в Mach є нитки. Усі нитки процесу розділяють один
адресний простір і мають загальні в межах процесу ресурси (рис. 46).
Крім того, кожна нитка має і свої особливі ресурси. Одним з таких
ресурсів є порт нитки, що є аналогом порту процесу і який
використовується ниткою для того, щоб викликати спеціальні, орієнтовані
на нитці, сервіси ядра, наприклад, функцію завершення нитки. Тому що
порти є загальними ресурсами для всіх ниток одного процесу, кожна нитка
має доступ до портів своїх ниток-братів, у такий спосіб кожна нитка може
керувати іншою ниткою, якщо це необхідно. Нитки Mach керуються ядром,
тобто вони є тим, що іноді називають «великоваговими» нитками, на
відміну від «легковагих» ниток (ниток, що цілком виконуються в
користувацькому просторі). Створення і знищення ниток здійснюється ядром
і включає відновлення структур дані ядра. Нитки ядра надають базові
механізми для керування безліччю «активностей» у загальному адресному
просторі. Що робити з цими механізмами — це справа користувача.

Рис. 47. Варіанти реалізацій З-ниток

(а) — Усі C-нитки використовують одну нитку ядра;

(б) — Кожна C-нитка має свою власну нитку ядра;

(в) — Кожна C-нитка має свій власний однонитковий процес

2.4.1. Реалізація З-ниток у Mach

У Mach існує кілька реалізацій 3-ниток. Оригінальна реалізація виконує
всі нитки в користувацькому просторі усередині одного процесу. Цей
підхід заснований на поділі в часі всіма 3-нитками однієї нитки ядра, як
це показано на малюнку 47,а. Цей підхід може також використовуватися в
UNіX’і чи будь-якій іншій системі, у якій немає підтримки ниток ядром.
Такі нитки працюють як різні підпрограми однієї програми, що означає, що
вони плануються образом, що невитісняє. Наприклад, у випадку типової
задачі «виробник-покупець» виробник повинний заповнити буфер, а потім
заблокуватися, щоб дати шанс покупцю на виконання.

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

Друга реалізація використовує одну Mach-нитку для однієї 3-нитки,
як показано на малюнку 47, б. Ці нитки плануються з витісненням. У
багатопроцесорних системах нитки можуть дійсно працювати паралельно на
різних процесорах. Фактично можливо мультиплексуваня m користувацьких
ниток з n нитками ядра, хоча найбільш загальним випадкам є n=m.

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

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

2.5. Керування пам’яттю в Mach

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

Однієї з основних особливостей системи керування пам’яттю Mach є те, що
її код розбитий на три частини. Перша частина називається pmap, що
працює в ядрі і займається роботою з пристроєм відображення ВА у фізичні
(Memory Management Unіt, MMU). Ця частина встановлює значення регістрів
MMU і апаратних сторінкових таблиць, а також перехоплює всі сторінкові
переривання. Ця частина коду залежить від архітектури MMU і повинна бути
переписана для кожної нової машини кожний раз, коли Mach на неї
переноситься. Друга частина — це машинно-незалежний код ядра, і він
зв’язаний з обробкою сторінкових збоїв, керує відображенням областей
пам’яті і заміною сторінок.

Третя частина коду працює в користувацькому просторі як процес,
називаного «менеджер пам’яті» (memory manager) чи іноді «зовнішній
менеджер сторінок» (external pager). Ця частина має справу з логічними
аспектами (на відміну від фізичних) системи керування пам’яттю, в
основному, з керуванням збереження образів пам’яті на диску. Наприклад,
менеджер пам’яті відслідковує інформацію про те, які віртуальні сторінки
використовуються, які знаходяться в ОП і де вони зберігаються на диску,
коли не знаходяться в ОП. Ядро і менеджер пам’яті взаємодіють за
допомогою добре визначеного протоколу, що дає можливість для
користувачів ядра Mach писати свої власні менеджери пам’яті. Такий поділ
обов’язків дозволяє реалізовувати сторінкові системи спеціального
призначення. При цьому ядро стає потенційно менше і простіше, тому що
значна частина коду працює в користувацькому просторі. З іншого боку, це
і джерело ускладнення ядра, тому що при цьому воно повинно захищати себе
від помилок некоректної роботи менеджера пам’яті. Крім того, при
наявності двох активних частин системи керування пам’яттю можливе
виникнення конфліктів між ними.

2.5.1. Віртуальна пам’ять

Концептуально модель пам’яті в Mach виглядає для користувацьких процесів
у виді великого лінійного ВАП. Для більшості 32-х розрядних процесорів
адресний простір займає діапазон від 0 до 232 — 1 (4 Гбайта). Адресний
простір підтримується сторінковим механізмом.

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

Теоретично будь-який ВАП може бути розрідженим, так що здатність
використовувати велику кількість розкиданих секцій не є в дійсності
властивістю архітектури ВП. Іншими словами, будь-яка 32-х бітна машина
повинна дозволяти процесу мати 50 000 секцій даних, розділених
проміжками по 100 Мбайт, у межах від 0 до 4 Гбайт. Однак, у багатьох
реалізаціях лінійна сторінкова таблиця від 0 до самої старшої
використовуваної сторінки зберігається в пам’яті ядра. На машині з
розміром сторінки в 1 Kб ця конфігурація вимагає 4 мільйони елементів
таблиці сторінок, роблячи таку схему дуже дорогою, якщо не неможливою.
Навіть при багаторівневій організації сторінкової таблиці така
розрідженість у кращому випадку неприйнятна. У ядрі Mach при його
розробці споконвічно ставилася задача повної підтримки розріджених
адресних просторів.

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

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

Звичайно, відображення файлів у пам’ять не єдиний спосіб доступу до них.
Їхній уміст можна читати і звичайним способом. Однак і в цьому випадку
бібліотечні функції можуть відображати файли в пам’ять крім бажання
користувача, а не використовувати систему в/в. Такий спосіб дозволяє
сторінкам файлів використовувати систему ВП, а не спеціально виділені
буфери де-небудь у системі.

2.6. Комунікації в ядрі Mach

Основною метою, що ставили перед собою розроблювачі засобів комунікації
ядра Mach, була підтримка різних стилів комунікацій у сполученні з
надійністю і гнучкістю. Комунікаційні засоби ядра Mach можуть
підтримувати асинхронну передачу повідомлень, RPC, потоки байт
(streams), а також інші способи. Механізм взаємодії процесів Mach
базується на відповідних механізмах своїх попередників — RІ і Accent.
Через свій еволюційний розвиток цей механізм пристосований більше для
локального використання, а не для розподілених систем.

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

2.6.1. Порти

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

Порт підтримує взаємодію подібно конвеєрам (pіpes) у UNІХ. Порт, що може
бути використаний для відправлення запиту від клієнта серверу, не може
використовуватися для відправлення відповіді від сервера клієнту. Для
цього потрібний другий порт. У кожного порту може бути тільки один
процес, що читає з нього повідомлення, і кілька процесів, що пишуть у
порт.

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

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

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

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

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

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

Деякі порти використовуються особливим чином. Кожен процес має
спеціальний порт — порт процесу, що потрібний для зв’язку процесу з
ядром. Велика частина «системних викликів», зв’язаних із процесами,
робиться шляхом посилки повідомлення в цей порт. Аналогічно, кожна нитка
має свій власний порт для виконання «системних викликів», зв’язаних з
нитками. Взаємодія з драйверами в/в також реалізується з використанням
механізму портів.

3. Мережеві продукти фірми Novell.

Novell — це найбільша фірма, якій належить, відповідно до різних джерел,
від 65% до 75% ринку мережевих ОС для локальних обчислювальних мереж.
Найбільшу популярність фірма Novell придбала завдяки своїм мережевим ОС
сімейства NetWare. Ці системи реалізовані як системи з виділеними
серверами. Основні зусилля Novell були витрачені на створення
високоефективної серверної частини мережевої ОС, що за рахунок
спеціалізації на виконанні функцій файлу-сервера забезпечувала б
максимально можливу для даного класу комп’ютерів швидкість вилученого
доступу до файлів і підвищену безпеку даних. Для серверної частини своїх
ОС Novell розробила спеціалізовану ОС, оптимізовану на файлових
операціях і яка використовує всі можливості, надані процесорами Intel
x386 і вище.

Для робочих станцій Novell випускає дві власні ОС із вбудованими
мережевими функціями: Novell DOS 7 із вхідної в неї мережевим
одноранговим компонентом Personal Ware, а також ОС UnixWare, що є
реалізацією UNIX System V Release 4.2 з вбудованими можливостями роботи
в мережах NetWare. Для популярних ОС ПК інших виробників Novell випускає
мережеві оболонки з клієнтськими функціями стосовно сервера NetWare.

Спочатку ОС NetWare була розроблена фірмою Novell для мережі Novell
S-Net, що має зіркоподібну топологію і патентований сервер з
мікропроцесором Motorola MC68000. Коли фірма IBM випустила ПК типу PC
XT, Novell вирішила, що NetWare може бути легко перенесена в архітектуру
мікропроцесорів сімейства Intel 8088, і тоді вона зможе підтримувати
практично всі наявні на ринку мережі ПК.

3.1. Версії ОС NetWare.

Перша версія NetWare була випущена фірмою Novell на початку 1983 року.

У 1985 році з’явилася система Advanced NetWare v1.0, що розширювала
функціональні можливості ОС сервера.

Версія 1.2 системи Advanced NetWare, випущена також у 1985 році, стала
першою ОС для процесора Intel 80286, що працює в захищеному режимі.

Версія 2.0 системи Advanced NetWare, випущена в 1986 році, відрізнялася
від попередніх версій більш високою продуктивністю і можливістю
об’єднання різнорідних на канальному рівні мереж. Цілком використовуючи
можливості захищеного режиму процесора 80286, Advanced NetWare
забезпечила таку продуктивність мережі, що була недоступна ОС, що
працюють у реальному режимі й обмеженим 640 Кбайтами пам’яті. Версія 2.0
уперше забезпечила можливість підключення до одного сервера до чотирьох
мереж з різною топологією, таких як Ethernet, ArcNet і Token Ring.

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

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

У вересні 1989 року Novell випустила свою першу версію 32-розрядної ОС
для серверів з мікропроцесором 80386, що одержала назву NetWare 386
v3.0. Вона володіла значно більш високою продуктивністю в порівнянні з
попередніми версіями, удосконаленою системою захисту від
несанкціонованого доступу, гнучкістю в застосуванні, а також підтримкою
різних мережевих протоколів. Вона відповідала найбільш передовим вимогам
до середовища функціонування розподілених прикладних програм.

У червні 1990 року з’явилася версія NetWare 386 v.3.1, у якій були
удосконалені засоби забезпечення надійності і керування мережею,
підвищена продуктивність, поліпшені інструментальні засоби для
незалежних розроблювачів.

У 1991 році фірмою Novell ОС для процесорів 80286 (SFT, Advanced і ELS
NetWare) були замінені на більш могутню і зручну систему NetWare v2.2,
функціонально переважаючу попередні версії 2.1x.

Одночасно була випущена система NetWare v3.11, що істотно розширила
можливості NetWare 386. NetWare v3.11 стала першою мереженою ОС, що
забезпечує доступ до мережевих ресурсів з робочих станцій DOS, Windows,
OS/2, UNIX і Macintosh.

NetWare System Fault Tolerance Level III (SFT III) v3.11 — мережева ОС,
розроблена спеціально для використання в системах, що вимагають
найвищого рівня надійності. На додаток до засобів підвищення надійності,
що мається в складі NetWare v3.11, SFT III забезпечує роботу двох
серверів у «дзеркальному» режимі. При цьому один із серверів завжди є
активним, а другий знаходиться в гарячому резерві, забезпечуючи в себе
такий же стан пам’яті і дисків, як і в основного сервера.

У 1993 році фірма Novell випустила ОС NetWare v4.0, що з’явилася в
багатьох відносинах революційно новим продуктом. Ця система була
розроблена спеціально для побудови обчислювальних мереж «масштабу
підприємства» з декількома файлами-серверами, великою кількістю
мережевих ресурсів і користувачів. Одним з основних нововведень
з’явилася служба каталогів NetWare Directory Services (NDS), що зберігає
в розподіленій по декількох серверах базі даних інформацію про всі
поділювані мережеві ресурси і користувачів, що забезпечило можливість
при одному логічному вході в систему одержувати прозорий доступ до всіх
ресурсів багатосерверної мережі.

У вересні 1993 року Novell випустила систему NetWare v3.12, що
представляє собою удосконалений варіант самої популярної мережевої ОС
фірми Novell — NetWare v3.11. У версії NetWare 3.12 минулого усунуті
замічені за час експлуатації версії NetWare 3.11 помилки і додані нові
засоби: усічена версія електронної пошти Global MHS, засоби підтримки
клієнтів Macintosh і клієнтська оболонка для DOS і Windows за
технологією VLM, що дозволяє динамічно завантажувати і вивантажувати
необхідні для робочої станції мережеві компоненти.

Останньої на сьогодні версією NetWare є орієнтована на корпоративне
використання мережева ОС NetWare v4.1.

Версії 4.0, 4.01 і 4.02

Версії ОС NetWare 4.х істотно відрізняються від версій сімейства 3.х їх
очевидною корпоративною спрямованістю. Якщо версії 3.х були розраховані
на мережі невеликих і середніх підприємств, то вже перша ОС з нового
сімейства — NetWare 4.0 — має багато нових властивостей, спрямованих на
забезпечення успішної роботи у великих гетерогенних мережах. Версії 4.01
і 4.02 лише незначно відрізняються від версії 4.0 за рахунок невеликих
поліпшень у глобальній службі каталогів, що виявилася у версії 4.0 не
занадто зручної для використання, що і привело до дуже повільного старту
ОС нового покоління. Крім уже відзначеної глобальної служби каталогів, у
цих версіях поліпшені:

система керування ОП — зменшилася фрагментація в процесі динамічного
вивантаження і завантаження модулів NLM;

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

система керування мережею;

система безпеки;

транспортна система.

Версія NetWare 4.1

Можливості версії 4.1 істотно розширені. Як і в NetWare 4.0х, тут
підтримується поліпшена ФС і засоби керування пам’яттю, збільшене
максимальне число користувачів, що обслуговуються, (понад 250),
реалізовані служби стиску і переміщення рідко використовуваних файлів, а
також більш зроблені засоби захисту інформації і керування правами
користувачів.

Новими елементами NetWare 4.1 є засоби IPX Mac і NetWare IP, інтегрована
з NDS служба обробки повідомлень MHS і дуже корисна програма DS-Standard
фірми Preffered Systems, що полегшує конфігуацію NetWare і перехід від
однієї версії до іншої.

3.2. Структура NetWare і огляд її особливостей

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

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

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

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

3.2.1. Способи забезпечення відкритості і розширюваності

Усі мережеві сервіси, утиліти чи сервери працюючі на сервері додатку
виконані в NetWare у виді модулів, що завантажуються — NetWare Loadable
Modules, NLMs, що можуть динамічно завантажуватися і вивантажуватися в
будь-який час без зупинки сервера.

Ядро системи, назване System Executive, виконує базові задачі ОС по
керуванні пам’яттю, плануванню і диспетчируванні ниток, керуванні ФС,
також підтримує програмну шину для інтерфейсу NLм’ів. Кожен NLM виконує
або функції ОС (драйвер чи диска мережевого адаптера, утиліта простору
імен, файловий чи серверний модуль поштового сервісу), або є
користувацьким модулем, що реалізує додатковий мережевий сервіс. Для
ядра системи всі модулі NLM рівноправні, тому розширення чи звуження
функцій системи здійснюється шляхом додавання чи вивантаження
відповідного NL’а.

Novell забезпечує розширюваність системи NetWare за рахунок надання
програмістам набору інструментальних засобів і строго описаних
інтерфейсів API для розробки власних NLM-додатків, що використовують усі
можливості 32-розрядного оточення.

Відкритість ОС NetWare забезпечується підтримкою нею найбільш
популярних стеків протоколів у строгій відповідності з існуючими
стандартами. NetWare підтримує такі популярні мережеві протоколи, як
IPX/SPX, TCP/IP, Apple Talk, і засобу їх мультиплексування, такі як
STREAMS і TLI. Стандарт ODI дозволяє незалежним розроблювачам мережевих
адаптерів легко включати свої NLM-драйвери до складу серверної ОС
NetWare. Крім того, фірма Novell розробила для NetWare велику кількість
програмних засобів – шлюзів до інших широко розповсюджених мереж, таких,
як мережі Internet і SNA.

3.2.2. Способи забезпечення надійності

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

Засоби забезпечення надійності SFT I:

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

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

Дублювання таблиці розміщення файлів FAT. NetWare зберігає копію FAT і
використовує її при псуванні основної таблиці FAT.

Оперативне виправлення 1 (Hot Fix 1). Запис чи перезапис даних з
дефектних блоків у спеціальну резервну область диска.

Контроль UPS.

Засоби забезпечення надійності SFT II:

Дзеркальне відображення дисків, підключених до одного дискового
контролера (Disk Mirroring).

Диплексування дисків, підключених до різних дискових контролерів (Disk
Duplexing).

Оперативне виправлення 2 (Hot Fix 2). Повторне виконання операції
читання на відбитому диску і запис даних у резервну область.

Система відстеження транзакций (TTS).

Засоби забезпечення надійності SFT III полягають у повному динамічному
дзеркальному відображенні двох серверів, що можуть знаходиться на
значному видаленні один від одного (при використанні оптоволоконного
кабелю для міжсерверного зв’язку — до 4 км).

Засоби забезпечення надійності рівнів SFT I і SFT II реалізовані в
NetWare v3.11, NetWare v3.12 і NetWare v4.x. Рівень надійності SFT III
реалізований поки тільки в NetWare SFT III v3.11.

3.2.3. Засоби захисту інформації

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

ОС NetWare містять механізми захисту наступних рівнів:

— захист інформації про користувача;

— захист паролем;

— захист каталогів;

— захист файлів;

— міжмережевий захист.

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

У версії NetWare 3.12 паролі зберігаються на сервері в зашифрованому
виді. Пароль, що задається користувачем, передається по кабелі також у
зашифрованому виді, що забезпечує захист від спроб довідатися пароль
шляхом «прослуховування» мережі.

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

4. ОС OS/2

4.1. Історія розвитку OS/2 і її місце на ринку

ОC OS/2 починалася як спільна розробка IBM і Microsoft. Споконвічно вона
була задумана як заміна DOS. Уже тоді було ясно, що DOS з її обмеженнями
по пам’яті і по можливостях ФС не може скористатися обчислювальною
потужністю комп’ютерів, що з’являються. OS/2 була добре продуманою
системою. Вона повинна була підтримувати режим витісняючої
багатозадачность, ВП, графічний користувацький інтерфейс, ВМ для
виконання DOS-додатків. Фактично вона виходила за межі простої
багатозадачності з її концепцією, названої багатонитковістю.

Перші версії OS/2 не зробили значного впливу на ринок. Версія OS/2 1.0,
випущена в 1987 році, містила більшість технічних властивостей,
необхідних для багатозадачності ОС. Однак у неї не було менеджера
графічного представлення (presentation manager, PM), а також були
відсутні драйвери для багатьох популярних принтерів і інших пристроїв.
Версія OS/2 1.1, що з’явилася в 1989 році, уключала рудиментарну версію
PM, що, нарешті, уможливлювала використання графічних додатків у
декількох вікнах. Однак у цій версії PM не вистачало багатьох
властивостей, що присутні в розвитому графічному інтерфейсі, крім того,
по колишньому були відсутні багато драйверів принтерів. Випущена в 1990
році версія 1.2 мала поліпшений PM, хоча він і не випливав на
загальноприйняті концепції графічного інтерфейсу. З’явилися драйвери для
більшості принтерів і інших периферійних пристроїв.

Однак дискредитація OS/2 уже відбулася. Версія 1.2 не була істотно
кращою попередніх версій і усе ще висувала значні вимоги до апаратури.
До цього часу багато користувачів вирішили перейти на нову платформу
Windows 3.0 чи почекати, поки не з’явиться що-небудь принципово краще.
Продаж OS/2 як і раніше був млявим і ринок не цікавився нею. Це
підрозумівалося наявністю в OS/2 ряди істотних недоліків: ВМ DOS, що
повинна була б мати здатність виконувати немодифіковані додатки DOS, із
самого початку мала технічні вади. Ця ВМ була розроблена на базі
віртуальних можливостей процесора і286, що дозволяв виділяти сегмент
пам’яті в 640 Кб для окремого DOS-додатка. Однак процесор і286 у цьому
віртуальному режимі працювала занадто повільно, тому віртуальна
DOS-машина була реалізована на основі реального режиму процесора. При
цьому був потрібний перезапуск процесора для переключення між реальним і
захищеним режимами. Хоча ця операція і виконувалася дуже швидко і
непомітно для користувача, вона була складною і вносила плутанину.

Microsoft і IBM не змогли повною мірою реалізувати концепцію віртуальної
обробки в режимі I8086: у цьому режимі DOS-додатка, що безпосередньо
читала чи писала в апаратні порти, переставали працювати. У зв’язку з
цим не могли використовуватися і популярні мережні ОС на базі DOS.

Пам’ять у цьому режимі використовувалася нераціонально — якщо користувач
конфігурував OS/2 з можливістю DOS-сумісності, те 640 КБ пам’яті завжди
виділялися для цих цілей і не могли використовуватися для задач OS/2.

Ще одним недоліком була відсутність можливості обміну даними між DOS- і
OS/2-додатками.

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

У результаті для користувачів OS/2 багато популярних DOS-додатків
виявилися недоступними, а ті, що були доступні, не могли взагалі
взаємодіяти із середовищем OS/2. Час показав, що для користувачів ця
обставина виявилася дуже важливою, тому що багато хто відмовивися від
покупки OS/2, залишаючись з перевіреної, хоча і не дуже зробленою DOS.

Аналітики, що займаються 32-х бітними ОС для ПК, завжди концентрують
свою увагу на битві між Microsoft Windows і IBM OS/2, припускаючи, що
Microsoft має перевагу. Але не всі згодні з такою точкою зору. OS/2
v.2.0 була першою доступною і працюючою 32-х бітною ОС для ПК. І вона
першою почала чергове коло змагань — версія OS/2 Warp, призначена для
клієнтських машин мереж клієнт-сервер і однорангових мереж, з’явилася на
ринку раніш Windows 95, позиціонована аналогічним образом. OS/2 Warp
була також першою системою, що включила набір засобів підтримки
Internet, а також засобів об’єктної орієнтації.

4.2. OS/2 Warp. Загальна характеристика

Наприкінці 1994 року IBM випустила третю головну версію OS/2, що
називалася OS/2 Warp 3 (warp — основа). Її демонстрація і розгорнута
рекламна компанія нагадувала рекламну компанію 1992 року, коли була
випущена OS/2 2.0. У всякому разі одне гасло було точним повторенням: у
цій системі є багато переваг, що користувачі і корпорації можуть
використати негайно з 32-х розрядного операційного середовища.

OS/2 Warp має добре продуманий обєктно-орієнтований інтерфейс із
застосуванням техніки drug-and-drop при виконанні операцій копіювання,
видалення, печаті, а також деяких інших. Переліки властивостей об’єктів
легко доступні в меню, викликуваних щигликом правої клавіші миші.
Мається спеціальна панель для розміщення часто використовуваних
документів чи ПП.

До складу OS/2 Warp входить набір утиліт BonusPack, що містить IBM Works
— інтегрований програмний пакет початкового рівня, і Internet Access Kit
— самий повний набір засобів для мережі Internet із усіх засобів, що
поставляються в складі ОС, Web Browser і пошта Internet Mail. У
публікаціях зустрічаються твердження, що він більш досконалий, чим набір
для доступу до Internet, реалізований у Windows 95. У лютому 1995 року
IBM почала продавати пакет OS/2 Warp 3 Full Pack, що містить бібліотеки
Win-OS/2. Ці бібліотеки дають можливість виконувати Windows-програми, не
здобуваючи ліцензійних копій Microsoft Windows.

Одним з часто критикуючих недоліків OS/2 Warp є те, що вона не підтримує
32-х бітні додатки Windows (точніше, він підтримує API Win32s, але не
підтримує повний API Windows NT, що називається Win32 і який майже
цілком підтримує Windows 95). Однак найближчим часом цей недолік не буде
критичним, тому що додатків Win32 поки небагато, зате з додатками Win16
у OS/2 Warp проблем немає. IBM говорить, що вона може забезпечити
підтримку додатків Win32, якщо цього побажають користувачі.

У той же час у OS/2 Warp відчувається недолік мережних функціональних
можливостей. Положення повинне змінитися, тому що влітку 1995 року IBM
початку продавати наступну версію OS/2 — Warp Connect, що містить
найважливіші драйвери й утиліти. У число нових засобів входять
редиректори для ОС NetWare 3.х і 4.1 і OS/2 LAN Server. Версія OS/2 Warp
Connect працює з протоколами IPX і NetBIOS, а також з новою реалізацією
протоколів TCP/IP. Цей новий комплект встановлює двокрапкове з’єднання
по протоколі PPP замість з’єднань SLIP, передбачених у базовому пакеті
OS/2 Warp. Цей комплект понизив навантаження на ЦП і забезпечив
одночасний доступ до локальної мережі і мережі Internet.

Крім того, Warp Connect надає давно очікувані в OS/2 засоби
однорангового мережевого зв’язку. Відповідно до повідомлення фірми IBM,
у цю версію входить велике число власних драйверів, що зможуть працювати
більш ніж з 70% існуючих адаптерів Ethernet і більш ніж з 90% адаптерів
Token Ring. Те ж саме ПЗ дає можливість клієнту Warp Connect
підключатися до серверу LAN Server 4.0.

Warp Connect містить також програму Lan Distance фірми IBM, що дозволить
з’єднуватися через зв’язувальний сервер з будь-яким підключеним до
мережі пристроєм. На відміну від Windows 95 ОС Warp Connect не містить
засобів, що підтримують вилучений доступ через телефонні мережі, що
комутуються. Ще одним нововведенням є довідкова база даних ASK PSP на
компакт-диску з інтерфейсом запитів мовою, близької до природньої
англійського.

Що стосується поштових послуг, то IBM вибрала для Warp Connect пакет
Lotus Notes Express, а не свій власний Ultimedia Mail/2. Notes Express
дозволяє з’єднатися з будь-яким сервером Notes.

Як і інші версії Warp, Warp Connect теж поставлялася в двох версіях:
одна без Windows-бібліотек, інша, подібно Full Pack, з бібліотеками
Win-OS/2.

4.2.1. Внутрішня організація OS/2 Warp

На малюнку 48 показана структура ОС OS/2 Warp 3.0. У OS/2 мається кілька
видів ВМ для ПП. Власні 32- і 16-розрядні програми OS/2 виконуються на
окремих ВМ у режимі що витісняє багатозадачності і можуть спілкуватися
між собою за допомогою засобів DDE OS/2. ПП DOS і Win16 можуть
запускатися на окремих ВМ у багатозадачному режимі. При цьому вони
підтримують повноцінні зв’язки DDE і OLE 2.0 один з одним і зв’язку DDE
з 32-х розрядними програмами OS/2. Крім того, можна запустити кілька
програм Win16 на загальній ВМ Win16, де вони працюють у режимі що
невитісняє багатозадачності. Різноманітні сервісні функції API OS/2, у
тому числі SOM (модель системних об’єктів), забезпечуються за допомогою
системних динамічних бібліотек DLL, до яких можна звертатися без
потребуючих витрат часу переходів між кільцями захисту. Ядро OS/2 надає
багато базових сервісних функцій API, забезпечує підтримку ФС, керування
пам’яттю, і має диспетчер апаратних переривань. У ядрі віртуальних
DOS-машин (VDM-ядрі) здійснюється емуляція DOS і процесора 8086, а також
керування VDM. Драйвери віртуальних пристроїв забезпечують рівень
апаратної абстракції. Драйвери фізичних пристроїв прямо взаємодіють з
апаратурою.

Рис. 48 Структура OS/2

На малюнку 49 зображені мережні засоби OS/2 Warp Connect. Вони
поділяються на чотири рівні. Прикладний рівень включає програмні
інтерфейси додатків операційної системи. Компоненти на рівні ФС
відповідають за виконання файлових операцій. Транспортний рівень
реалізує комунікаційні протоколи. Мається компонент Загальна транспортна
семантика (Common Transport Semantic), що дозволяє використовувати
будь-яку ФС (а точніше її редиректор) у сполученні з будь-яким
протоколом транспортного рівня.

Рис. 49. Структура мережних засобів OS/2 Warp Connect

ПЗ MAC-рівня включає драйвери мережних адаптерів і диспетчерський шар у
стандарті NDIS 2.01, що дозволяє різним мережним протоколам працювати
через один адаптерам, і різним адаптерам зв’язуватися через загальний
протокол. Існує модуль перетворення ODI-NDIS, що дозволяє
використовувати модулі транспортних протоколів, реалізовані в розрахунку
на роботу з диспетчерським шаром ODI компанії Novell.

5.Операційні системи Windows 95/98

Перші версії Windows 3.х не можна назвати повноцінними ОС, так як для їх
роботи обов’язково була наявність активної копії MS-DOS. Таким чином,
Windows є якби посередником користувача і ОС, полегшуючи процес
взаємодії між ними.

В якості розвитку серії Windows були випущені дві паралельні ОС з
графічною оболонкою:

Windows 95/98/Ме ;

Windows NT/2000.

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

Windows 95 основні особливості. З точки зору базової архітектури
Windows95 – 32-розрядна, багатопотокова ОС з витісняючою
багатозадачністю, що ставить її в один ряд з такими суперниками, як
OS/2, Unix, WindowsNT. В її середовищі можуть виконуватися особисті
32-розрядні ПП, написані у відповідності з специфікацією Win32 API.
Особисті ПП Windows 95 використовують неструктурований 32-розрядний
адресний простір, що робить їх потенційно більш швидшими при обробці
великих масивів даних.

Компоненти ядра Windows 95:

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

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

GDI – графічна система, яка керує всім, що появляється на екрані
дисплея, і яка підтримує графічний вивід на принтер і інші пристрої.

Основні переваги Windows 95:

практично повна 32-бітна ОС, що прискорює роботу багатьох програм
порівняно з 16-бітною ОС MS-DOS 6.22 і операційної оболонки Windows 3.1;

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

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

запуск ПП і можливість створення Меню при натискуванні кнопки Пуск в
Панелі задач;

cамонастроююча система драйверів підтримки апаратної частини комп’ютера;

cправжня багатозадачність;

розвинені мережеві функції, включаючи Internet$

великий вибір ППЗ і підтримка більшості 16-бітних додатків;

хороша підтримка Multimedia;

орієнтація більшості сучасних виробників комп’ютерної техніки і ПЗ на
Windows 95;

Недоліки Windows 95:

високі вимоги до апаратної частини комп’ютера (процесору, жорсткому
диску);

недостатня стійкість в роботі, особливо у російських версіях;

при виключенні чи перезагрузці комп’ютера з ОС Windows 95 потрібно
обов’язково використати кнопку Пуск, Завершення роботи, Виключити
комп’ютер чи клавіші;

для обслуговування диску на комп’ютері з ОС Windows 95 треба
використовувати тільки особисті засоби Windows 95 або спеціальні утиліти
SpeeDisk, Norton Disk Doctor, особливо для російськомовної версії
Windows 95. Інакше можна пошкодити файл ФС Windows 95.

Основні відмінності Windows 98

Нові засоби Windows 98 полегшують роботу з комп’ютером і розширюють
можливості його використання

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

Збільшення надійності. У Windows 98 надійність комп’ютера збільшується
за рахунок використання нових майстрів, службових програм і ресурсів,
які забезпечують безперебійну роботу системи.

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

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

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

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

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

Електронна пошта. Панель управління Windows 98 включає програму Outlook
Express, яка представляє захищені засоби для особистої електронної пошти
і підключення до групи новин. Для запуску Outlook Express натиснути
кнопку Пуск і вибрати команди Програми і Outlook Express.

6.Операційні системи Windows NT

ОС Windows NT або New Technology була створена групою розробників під
керівництвом Дейва Катлера. Він прийшов в Microsoft в 1988 році
спеціально для роботи над проектом NT. NT, на відміну від інших ОС
Microsoft, в деякій мірі проект однієї людини, вона найбільш закінчена
ОС із всього того, що вони випустили.

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

Знайомим в Windows NT є тільки зовнішній вигляд. За графічним
користувацьким інтерфейсом ховаються нові можливості.

Задачі, поставлені при створені Windows NT: сумісність, переносимість,
маштабування, розподілена обробка, надійність і розширюваність.

Архітектурні модулі Windows NT: рівень апаратних абстракцій, ядро,
виконуюча система, підсистеми середовищ.

Управління пам’яттю. Windows NT представляє собою ОС сервера, яка
пристосована для використання на робочій станції. Цим обумовлена
архітектура, в якій абсолютний захист ПП і даних бере верх над
усвідомленням швидкості і сумісності. Велика надійність Windows NT
забезпечується ціною високих системних затрат, тому для отримання
виробництва необхідні швидкодіючий ЦП і по меншій мірі 16 Мбайт ОЗП. В
системі Windows NT працюють особисті 32-розрядні NT-ПП, а також
більшість ПП Windows 95.

Схема розподілення пам’яті Windows NT відрізняється від розподілення
пам’яті системи Windows 95. Особистим ПП виділяється 2 Гбайти
особистого простору, від границі 64 Кбайти до 2 Гбайт. ПП ізольовані
один від одного, але можуть обмінюватися через буфер обміну Clipboard,
механізми DDE і OLE.

Файлові системи NTFS 4 (Windows NT) і NTFS 5(Windows 2000). NTFS виросла
із ФС HPFS, розроблена сумісно IBM і Microsoft для проекта OS/2. вона
почала використовуватися разом з Windows NT 3.1 в 1993 році. Windows NT
3.1 мала складати конкуренцію серверам на базі NetWare і Unix, тому NTFS
увібрала в себе всі технологічні досягнення того час. Ось основні з них:
робота з великими дисками, стійкість, захищеність, компресія даних,
підтримка формату ISO Unicode.

Емулятор System V

Емулятор HP/4X

Емулятор 4,3 BSD

Інший емулятор

Мікроядро

Порт

процесора

Порт

загрузки

Зареєстро-

вані

порти

Ядро

Порт

виняткових ситуацій

Процес

Адресний

простір

Нитка

Лічильник блокіровок

Параметри планіровки

Адрес емуляції

Статистика

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *