Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
А4_Методичка.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
4 Мб
Скачать
☆

Загальна характеристика

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

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

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

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

Незалежно від версії, загальними для UNIX рисами є: багатокористувацький режим із засобами захисту даних від несанкціонованого доступу, реалізація мультипрограмної обробки в режимі поділу часу, заснований на використанні алгоритмів витісняючої багатозадачності (preemptive multitasking), використання механізмів ВП і свопінгу для підвищення рівня мультипрограмування, уніфікація операцій вводу/виводу на основі розширеного використання поняття "файл", ієрархічна ФС, що утворить єдине дерево каталогів незалежно від кількості фізичних пристроїв, використовуваних для розміщення файлів, перенесення на інші типи комп’ютерів системи за рахунок написання її основної частини мовою C, різноманітні засоби взаємодії процесів, у тому числі і через КМ, кешування НЖД для зменшення середнього часу доступу до файлів.

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

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

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

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

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